nibbles: Usando MacPorts sobre OS X, breve guia !

"MacPorts, formerly called DarwinPorts is a package management system that simplifies the installation of software on the Mac OS X and Darwin operating systems. It is a free/open source software project to simplify installation of other free/open source software. Similar in aim and function to Fink and the BSDs' ports collections, DarwinPorts was started in 2002 as part of the OpenDarwin project, with the involvement of a number of Apple Inc. employees including Landon Fuller, Kevin Van Vechten, and Jordan Hubbard."
-- from wikipedia [search: macports]

Ports o no Ports...

MacPorts desde un punto de vista pragmatico, es un administrador de aplicaciones para el sistema operativo OS X, de la misma manera como lo es RPM para sistemas basados en RedHat o el APT-GET para sistemas basados en Debian; su funcionamiento va más en el estilo de Gentoo, ya que será necesario compilar tus aplicaciones pero te permite generar nuevos paquetes para poderlos instalar en otros servidores basados en OS X.

Existen otras alternativas como homebrew, pero sin duda MacPorts es lo suficientemente madura y estable como para usarla en el día a día.

Conceptualmente MacPorts se compone de dos partes:
- infraestructura (que son el conjunto de aplicaciones que definen el comportamiento de MacPorts)
- definiciones de aplicación o _ports_ (que es el conjunto de instrucciones contenidas en un archivo relacionadas a una aplicación y que definen como construirla e instalarla dentro de un sistema OS X bajo MacPorts).

Al igual que Portage de Gentoo, es necesario sincronizar nuestro árbol de definiciones y hacer las actualizaciones correspondientes.

No te preocupes por las aplicaciones que vienen por defecto en tu sistema operativo ya que MacPorts instala todas las aplicaciones en un segmento independiente o "SandBox" lo cual te permite mantener tus aplicaciones de manera independiente.

Para poder hacer uso de MacPorts es necesario que instales el binario de MacPorts (el cual puedes obtener del mismo sitio) así como el SDK de OS X (las XCode Tools) que encontraras en los DVD's de instalación:
  • Xcode 3.2
    • UNIX Development
    • System Tools
    • X11 SDK
    • Command Line Support
  • iOS SDK 4.3
  • X11 Window System 
El procedimiento de instalación es muy sencillo, así que iremos a la lista de comandos más usados los cuales serán de mucha utilidad en tu día a día.

sudo port [commands]

MacPorts se reduce a usar el comando ports, el cual nos permite mantener actualizada la infraestructura así como las definiciones de aplicación en el sistema operativo.

[0001] Sincronizar árbol de definiciones

Así es, si requieres las versiones más recientes será necesario actualizar el árbol de definiciones de macports, toma en cuenta que solo se va a actualizar el árbol; si quieres actualizar las aplicaciones será necesario realizar un upgrade.
[ 192.168.1.108 | macuarrita ] ~                   
andresaquino $ sudo port help selfupdate
Usage: selfupdate --nosync

Upgrade MacPorts itself and run the sync target


[0010] Listar aplicaciones desactualizadas

Para conocer que aplicaciones puedes actualizar puedes usar la opción outdated o también list que es mucho más completa, como puedes observar en el screenshot tengo cuatro aplicaciones por actualizar pero de estas solo me interesa git-core.
Es posible conocer más acerca de la aplicación a actualizar con la opción info, incluso podrás observar que tiene opciones para "crecer" la aplicación, los cuales se conocen como variants, en este caso si quieres que se incluya la documentación o los bindings con python.
[ 192.168.1.108 | macuarrita ] ~                   
andresaquino $ sudo port help outdated
Password:
Usage: outdated

Returns a list of outdated ports


[0011] Verificar dependencias

Es posible que bajo ciertas condiciones de actualización te preguntes si la aplicación que estás instalando tiene dependencias de otros paquetes o si hay otras aplicaciones que dependan de esta, es en estos casos que puedes usar la opción de dependents y obtener más información al respecto.
[ 192.168.1.108 | macuarrita ] ~                   
andresaquino $ sudo port help dependents
Password:
Usage: dependents

Returns a list of installed dependents for each of the given ports

Note: Don't get fooled by the language!
Dependents are those ports which depend on the given port, not vice-versa!


[0100] Actualizar aplicaciones

Listo, ya sabemos que aplicaciones queremos actualizar; ahora usaremos la opción upgrade, la cual se encargará de bajar todos los componentes necesarios así como las dependencias requeridas. Si en alguna ocasión has trabajado con Gentoo este proceso te será muy familiar.
[ 192.168.1.108 | macuarrita ] ~                   
andresaquino $ sudo port help upgrade
Password:
Usage: upgrade --force --enforce-variants --no-replace

Upgrades the given ports to the latest version. Respects global options
-n, -R, and -u (see the port man page).  Note that in selecting variants
to use in the upgraded build of the port, the order of precedence is variants
specified on the command line, then variants active in the latest installed
version of the port, then the variants.conf file.


[0101] Verificar el contenido de una aplicación

Una vez que has realizado la instalación de una aplicación, puedes corroborar donde fueron instalados los componentes de ese paquete. Suele suceder que cuando se instala una aplicación como OpenSSH sera necesario saber donde se dejaron los scripts de inicialización, ya que serán requeridos para incluirlos en el administrador de servicios de OS X: Launchctl.
[ 192.168.1.108 | macuarrita ] ~                   
andresaquino $ sudo port help contents
Password:
Usage: contents --size --units < arg1 >

Returns a list of files installed by given ports


[0110] Listar aplicaciones activas e inactivas

Antes de realizar cualquier actividad de mantenimiento puede ser necesario que quieras verificar que aplicaciones se encuentran inactivas o las versiones del software que tienes instalado, para ello puedes hacer uso de la opción list así como de las definiciones active, inactive, installed, portname.
El ejemplo del screenshot se refiere a que estoy buscando dentro de las aplicaciones que se encuentran en la categoria www, la aplicación pound así como, la versión dentro del repositorio y si tiene alguna variación.
[ 192.168.1.108 | macuarrita ] ~                   
andresaquino $ sudo port help list 
Usage: list

List the available version for each of the given ports


[0111] Instalar aplicaciones

La parte más sencilla, instalar una nueva aplicación, la opción es install; en caso de que sea necesario crecer la aplicación se podrán incluir las correspondientes variaciones, esta información la puedes obtener mediante la opción info.
El ejemplo del screenshot se refiere a que estoy buscando dentro de las aplicaciones que se encuentran en la categoria www, la aplicación pound así como, la versión dentro del repositorio y si tiene alguna variación, hecho esto procedo a instalar.
[ 10.103.88.69 | macuarrita ] ~                   
andresaquino $ sudo port help install
Usage: install

Installs the given ports


[1000] Eliminar aplicaciones

Generalmente después de realizar una actualización o instalación de cualquier aplicación, el componente anterior se quedará en el sistema por si es necesario regresar a la aplicación anterior (rollback); en caso de que todo funcione correctamente será necesario eliminar las aplicaciones que fueron desactivadas del sistema.
[ 192.168.1.108 | macuarrita ] ~                   
andresaquino $ sudo port help uninstall
Usage: uninstall --follow-dependents --follow-dependencies --no-exec

Uninstall the given ports

--no-exec   Do not execute any stored pre- or post-uninstall procedures


[1001] Limpieza de estructuras de construcción

De cuando en cuando, será necesario que elimines los archivos que se generaron cuando se construyeron las aplicaciones, esto incluye binarios intermedios, directorios de construcción (build) y archivos de registro (logs).
[ 10.103.88.69 | macuarrita ] ~                   
andresaquino $ sudo port help clean
Usage: clean --all --dist --work --logs

Removes files associated with the given ports

--dist        Removes downloaded distfiles
--logs        Removes log files
--work        Removes work directory (default)
--all         Removes everything from above


Servicios (daemons/services)

Los servicios se trabajan un diferente en OS X, con servicios nos referimos a aplicaciones como  OpenSSH, ApacheHTTPD o Squid ya que en OS X se administran con Launchctl, el cual es la propuesta de Apple para manejar las aplicaciones que en otros likeUNiX se gestionan mediante Cron, XInetd e Init.

Para esto nos remitiremos a una segunda parte, ¿y ustedes usan MacPorts?

Referencias

buen camino!

Popular Posts