MacPorts: Guia del comando port
El comando port es la principal herramienta de que disponemos para interactuar con MacPorts. Con el podremos realizar las siguientes tareas:
Actualizar los achivos port y la infraestructura de MacPorts
Instalar/Desinstalar ports
Gestionar ports
La sintaxis básica del comando port es ( como root o utilizado el comando sudo) :
port [opcion] [acción] [opciones de la acción] [nombre del port]
Será mediante las acciones como definiremos aquello que queramos que ejecute port. Mediante las diversas opciones del comando especificaremos de forma mas precisa el comportamiento de la acción.
Si no se especfica una acción, el comando port activa el modo interativo, en el que los comandos deben ser instalados via stdin.
El [nombre del port ] ,( nombre_port a partir de ahora), puede ser sustituido por los denominados pseudo-nombres:
all ………………La acción se ejecuta en cada port listado en el archivo sources.conf
current ……….La acción se ejecta sobre el port del directorio de trabajo.
activate ………La acción se ejecuta sobre el conjunto de ports instalados y activos.
inactivate ……La acción se ejecuta sobre el conjunto de ports instalados inactivos.
unistalled ……La acción se ejecuta en el conjunto de ports que no están instalados.
outdated ……..La acción se ejecuta sobre el conjunto de ports instalados pero no actualizados.
Existen también los denominados “selectores de peudo-nombres” que nos servirán para “afinar” la acción.
Dichos selectores, utilizados tanto en singular como en plural, suelen coincidir con los nombres-clave utilizados en los archivos port, tales como “name” para el nombre del port, “variant” para la variante, “maintainer” para el mantenedor del port, etc….
| name | version | revision | epoch | variant | variants | category | categories | maintainer | maintainers | platform | platforms | description | |long_description | homepage | portdir |
La sintaxis seria:
port [accion] –selector
Por ejemplo: port info –category –maintainer gimp2 vim nos mostraria información sobre la categoria a que pertenecen y los nomres de los mantenedres de los ports gimp2 y vim
Los selectores de pseudo-nombres pueden utiliarse en combinación con expresiones regulares (regex) para fijar el alcance de la acción deseada. En este caso la sintaxis seria:
port accion selector:regex
Por ejemplo: port install name:sql* instalaria todos los ports cuyo nombre comenzara por sql
En la formación de las expresiones regulares puede utilizarse los comodines “expansores de cadena” aceptados en UNIX, tales como * , ? etc asi como los operadores lógicos and , or, not, ! , ( , ),
port list variant:nombre_variante , listaria los ports con el nombre de variante espcificado
port unistall name:sql , desinstalaria el port sql
port unistall name:sql* , nos desinstalaria los ports cuyo nombre comenzara por sql
port upgrade installed and apache* , actualizaria los ports instalados cuyo nombre comenzara con la cadena apache
port echo maintainer:jberry and unistalled and \(category:java and not commons*\)
Opciones del comando port
El comado port reconoce también varias opciones:
-v : (”verbose”). Nos muestra mensajes durante la ejecución de la acción.
-d : ( “debug”). Genera mensajes de depuración durante la ejecución de la acción. Supone el modo -v
-q : (”quiet”) . Suprime los mensajes durante la ejecución de la acción.
-n : No seguir las dependencias durante el proceso de actualización .Sólo para port upgrade
-R: Actualiza también las dependencias ( Sólo para port upgrade).
-u : Desinstala ports inactivos cuando se actualiza o desinstala.
-f : Modo “forzado”. Ejecuta la acción ignorando el estado del archivo.
-s : (”solo fuente”). Instala solo desde fuentes, ignorando cualquier archivo binario. Solo se aplica cuado esta activado el “modo archivo”.
-b : (”solo binario”) . Instala solo desde archivos binarios, ignorando cuanquier archivo fuente. Se inactiva si no hay archivos binarios. Solo se aplica cuando está activo el “modo archivo”.
-c : (”autolimpieza”) . Ejecuta la acción clean después de install. Se utiliza con la acción install.
-k : ( “no-autolimpieza”). No se ejecuta clean después de install. Se utiliza con install.
-D: Para especificar portdir.
-F : Lee y procesa el archivo de comandos esecificado por el argumento. Si el argumento es - ,lee los comandos introducidos desde stdin.
Si la opción se implements varias veces pueden leerse varios archivos de comandos.
-i : Permite leer los comandos desde stdn. Viene a ser un -F limitado.
-x : En un modo interactivo y de proceso por lotes (batch), hace que finalice el proceso al primer error encontrado. En otro modo, se limita a reportar los errores ocurridos durante el proceso.
-p : Procesa los ports y comandos sin tener en cuenta los errores encontrados en el proceso.
-t : Activa “trace mode debug ” en plataformas que lo soportan ( Mac OS X).
Acciones del comando port
Las acciones que vamos a considerar en esta guia son:
| help | selfupdate | list | search | info | deps | variants | install | clean |
| unistall | activate | desactivate | contents | installed | location | outdated |
| upgrade | dependents | echo |
help
port help
Nos muestra un resumen de todas las acciones y comandos.
selfupdate
port -d selfupdate
La acción selfupdate se utilizará principalmente para bajar nuevos ports asi como para actualizar las versiones de los ports instalados.
Otra importante función de sefupdate es la de mantener actualizada la aplicación MacPorts.
list
port list
Sin argumentos, nos dará una lista de las ultimas versiones de los ports disponibles
Si como argumento lleva uno o varios nombres de ports nos mostrará una lista con la útima versión de cada uno de los puertos especificados.
port list gimp2 vim ufraw nos mostrará una lista con las últimas versiones de gimp2, vim y ufraw
search
port search [ cadena]
Utilizaremos esta acción para localizar ports mediante su nombre o parte de el. Pueden utilizarse comodines.
port search vim
port search sq*
info
port info — opción nombre_port
Mediante esta acción obtendremos toda la meta-información del port especificado en nombre_port .
Mediante opciones como –maintainer , –category , etc puede solicitarse meta-información mas específica.
Si se utiliza la opción –line la información se organizará en una linea por port.
Con la opción –index la información se obtendrá desde PortIndex en lugar de desde PortFile
port info gimp2 obtendremos meta-información de gimp2
port info –category –name gimp* obtendremos información específica de la categoria y nombre de todos los ports cuyo nombre comience por gimp
port info –line –category –name gimp* obtendremos la misma información que en el caso anterior, pero organizada en una linea por cada port
deps
port deps nombre_port
Obtendreos una lista de las dependencias del port especificado.
variants
port variants nombre_port
Con variants podemos ver las distintas variantes(*) disponibles de un determinado port, antes de instalarlo.
(*) Las variantes son un medio de que disponen los creadores de ports para proporcionar opciones que pueden ser escogidas en el momento de la instalación del port.
Solo puede optarse por na variante concreta en el momento de la instalación de un port.
Existen las llamadas variantes por defecto. Dichas variantes son opcionales y no todos los ports que utilizan variantes las poseen.
Los ports que tengan variantes pordefecto pueden instalarse sin ellas “negandolas” mediante la opción -
install
port install nombre_port
Es la acción que se utiliza para instalar un port.
Cuando se desea instalar una determinada variante del port, la sintaxis seria:
port install nombre_port + nombre_variante
Cuando lo que se quiera en no instalar una determinada variante:
port install nombre_port - nombre_variante
clean
port clean –opcion nombre_port
Mediante clean eliminamos los arhivos intermedios creados por MacPorts durante el proceso de instalación de un port.
Podemos utilizar clean con varias opciones:
port clean –all nombre_port : Elimina todos los archivos intermedios.
port clean –work nombre_port : Elimina solo los archivos de trabajo.
port clean –dist nombre_port : Elimina solo los archivos de distribucion ( tarballs, zips….)
port clean –archive nombre_port : Elimina solo los archivos de la actual versión del port.
Para eliminar los archivos de una determinada versión del port, por ejemplo, la xx.y ,podemos hacerlo de varias maneras:
port clean –archive nombre_port version:xx.y
port clean –archive nombre_port xx.y
port clean –archive nombre_port xx.*
unistall
port unistall nombre_port
Es la acción que utilizaremos para desinstalar ports.
Debe tenerse en cuenta que si un port ha sido instalado como dependencia de otro, unistall no lo desinstalará hasta que se haya procedido a la desinstalación del port dependiente.
Usando la opción -f
port -f unistall nombre_port
se obvia este paso, aunque debemos tener presente que algunos ports necesitarán reinstalarse si cambiamos sus dependencias.
Para desinstalar todos los ports instalados pero inactivos, utilizar la opción -u
port -u uninstall
activate
port activate nombre_port
Activa el port instalado, pero inactivado, especificado en nombre_port
desactivate
port desactivate nombre_port
desactiva el port instalado y activo especificado en nombre_port
contents
port contents nombre_port
Nos muestra los archivos que han sido instalados para un determinado port.
installed
port installed nombre_port
Lista los ports instalados.
location
port location nombre_port
Nos muestra el lugar en que se encuentra installado el por especificado.
outdated
port outdated
Esta acción compara las versiones de los ports instalados con las de los repositorios de MacPorts, informándonos de si existe alguna versión mas reciente.
Con la acción upgrade ( ver mas adelante) podremos actualizar los ports.
upgrade
port upgrade nombre_port
Se actualiza a la versión mas reciente el port instalado indicado en nombre_port.
Cuando se deseen actualizar todos los ports instalados utilizaremos :
port upgrade installed
port upgrade outdated
upgrade actua sobre el port y sus dependencias. Cuando se desee cambiar este comportamiento utilzaremos las opciones -n y -R
Cuando no se quieran actualizar las dependencias de un determnado port:
port -n upgrade nombre_port
Cuando se quiera actualizar el port especificado y todos los ports que dependen de el se utilizara -R
port -R upgrade nombre_port
Utilizando la opción -f “forzamos” la actualización
port -f upgrade nombre_port
Debemos tener en cuenta que la opción upgrade no desinstala la antigua versión del port actualizado. Se limita a desactivarla.
Si se quiere que, ademá de actualizar, se elimine la versión antigua deberemos utilizar la opción -u :
port -u upgrade
dependents
port dependents nombre_port
Nos muestra los ports instalados que dependen de port indicado en nombre_port
echo
Esta acción hace que aparezcan en stdout los resultados de los argumentos pasados a port
port echo category:net Nos mostrara en stdout los ports clasificados en la categoria net
port echo maintainer:jmpp and name:net* Nos mostrará en stdout los ports cuyo mantenedor es jmpp y cuyo nombre empiece por net
Archivos de Configuración
/opt/local/etc/macports/sources.conf
Es en este archivo en el que se configuran los lugares en donde obtener los ports.
/opt/local/etc/macports/macports.conf
Contiene opciones avanzadas de configuración. Suele estar extensamente comentado.
/opt/local/etc/macports/variants.conf
Se utiliza para especificar las variantes a ser usadas por todos los ports, cuando existan.
~ .macports/macports.conf
Archivo de configuración del usuario para Macports. Prevalece sobre el archivo de cnfiguración global /opt/local/etc/macports/macports.conf
Acceso a las “manpages” de port
Con la orden:
man port
podemos acceder a las páginas del manual del comando port.
Es posible que al ejecutar la citada orden, nos aparezca un mensaje del tipo: ” No manual entry for port“.
Ello puede ser debido a que no se ha añadido /opt/local/man al manpath. Para solucionarlo operaremos de la siguiente manera:
Editamos /usr/share/misc/man.conf
Localizamos la linea MANPATH_MAP path_element manpath_element
La cambiamos por MANPATH_MAP /opt/local/bin /opt/local/share/man
[ Es posible que en man.conf no se encuentre una linea como la citada mas arriba. En este caso, localizamos una linea o grupo de lineas descomentadas que comiencen por MANPATH_MAP y tengan la estructura citada y añadimos la linea :
MANPATH_MAP /opt/local/bin /opt/local/share/man
Para terminar, guardamos el cambio.