Homebrew

1
9556

Homebrew es un gestor de paquetes para OSX que simplifica enormemente la descarga, instalación y mantenimiento
de aplicaciones y herramientas en nuestro equipo. Este tutorial explica cómo sacarle el máximo partido.

Índice de contenidos

1. Introducción

Hace ya bastantes años que los sistemas basados en Linux incorporaron el concepto de
"gestor de paquetes" como un sistema centralizado para descargar, instalar y mantener
los componentes software del equipo así como sus dependencias.

Los más conocidos son:

  • Yum en Red Hat y derivados (paquetes .rpm).
  • Apt en Debian y derivados (paquetes .deb).
  • Pacman en Arch (paquetes .pkg.tar.gz).

Las ventajas de un gestor de paquetes son principalmente:

  • Seguridad e integridad: los paquetes se descargan de fuentes fiables
    y verificadas con checksums (sumas hash).
  • Control: los gestores de paquetes se encargan de mantener las aplicaciones actualizadas
    a la última versión, así como de instalar y actualizar las dependencias que puedan tener.

    A la hora de eliminar un paquete, el gestor sabe exactamente qué ficheros debe borrar.
  • Facilidad y velocidad: el gestor descarga e instala el paquete automáticamente y en un solo paso.
  • Apertura y neutralidad: se utilizan formatos y protocolos abiertos
    que permiten a terceros publicar repositorios de paquetes extraoficiales.

    Por otro lado, los repositorios oficiales suelen contener una gran cantidad de software,
    principalmente libre, que se trata de manera neutral.
  • Consistencia y estabilidad: los responsables del repositorio de paquetes mantienen la homogeneidad,
    coherencia y compatibilidad de los paquetes, mejorando la estabilidad del sistema en general.

Homebrew trae algunas de estas ventajas al entorno OSX, donde las alternativas oficiales son la descarga manual
de instaladores desde los proveedores software o la tienda App Store.

2. Entorno

El tutorial está escrito usando el siguiente entorno:

  • Hardware: Portátil MacBook Pro Retina 15′ (2.5 Ghz Intel Core i7, 16GB DDR3).
  • Sistema Operativo: Mac OS Yosemite 10.10

3. Instalar Homebrew

Para poder utilizar Homebrew se requiere un sistema operativo OSX 10.9 o superior y
un shell compatible con Bash, puesto que todas las operaciones se realizan desde la terminal.

La instalación en nuestro equipo se realiza también desde la línea de comando de la terminal
escribiendo lo siguiente (copiar y pegar para más comodidad):

Durante la instalación de Homebrew o de otros paquetes puede ser necesario aceptar la descarga de otros
componentes o dependencias externas.

Los casos más típicos son:

  • Herramientas de línea de comando de XCode, para construir los binarios de los paquetes
    que contienen códigos fuente.
  • Cask, una extensión de Homebrew que añade un repositorio con un enorme catálogo de aplicaciones de OSX.

    De hecho, Cask controla la instalación de estas aplicaciones de manera separada a los paquetes Homebrew normales.

Además, aunque es raro, algún instalador puede solicitar permisos de "root" a través del comando
sudo. En estos casos, asegurarse de que se confía en la aplicación que se está instalando
y que los permisos se solicitan por una razón lógica (por ejemplo porque se debe instalar algún software de sistema).

Si por algún extraño casual decides que Homebrew no es para ti y deseas desinstalarlo, se puede hacer con
esta línea de comando desde la terminal:

4. Buscar paquetes

La manera más rápida de buscar paquetes en Homebrew y Cask es, lógicamente, desde la línea de comandos:

donde subcadena es todo o parte del nombre de la aplicación que se está buscando, por ejemplo:

Los paquetes con el prefijo Caskroom/cask/ provienen del repositorio de Cask.

Si solamente se tiene interés en buscar en aplicaciones OSX (que están en Cask), se puede
simplificar la lista de resultados buscando con Cask:

Por ejemplo:

Los resultados del repositorio Cask son los mismos, simplemente desaparecen los resultados del Homebrew
general y los prefijos Caskroom/cask/.

También existen dos webs que facilitan la búsqueda de paquetes en Homebrew y Cask.

Sus direcciones son respectivamente:

5. Instalar y actualizar paquetes

5.1. Instalación

La instalación de un paquete se realiza con la acción install, de la cual existen dos variantes
según deseemos utilizar el repositorio de Homebrew o el de Cask:

El nombre del paquete proporcionado debe ser el nombre completo devuelto al realizar una búsqueda con
brew search o brew cask search respectivamente.

Tener en cuenta que no hay ningún problema en instalar paquetes de Cask con brew install a secas
siempre y cuando el nombre del paquete tenga el prefijo Caskroom/cask/.

Las aplicaciones y herramientas de línea de comando del repositorio Homebrew se instalan en
/usr/local/Cellar/paquete/versión/libexec.

Para que estén accesibles desde el PATH, Homebrew hace dos cosas:

  1. Define uno o varios scripts de lanzamiento (wrappers) en el directorio
    /usr/local/Cellar/paquete/versión/bin.
  2. Crea un enlace simbólico al script de lanzamiento en /usr/local/bin.

También se crea un enlace simbólico a la última versión de cada paquete en el directorio
/usr/local/opt/paquete.

Las aplicaciones de Cask se manejan de un modo distinto porque deben estar visibles como "Aplicaciones" de OSX.

En primer lugar, la aplicación queda instalada en el directorio
/opt/homebrew-cask/Caskroom/paquete/versión.

Además, Cask crea un enlace simbólico desde el directorio Applications del usuario al directorio
de instalación de la aplicación concreta en /opt/homebrew-cask/....

5.2. Actualización

Al igual que ocurre con otros sistemas de paquetes, Homebrew actualiza casi todos los días
su catálogo, tanto a nivel de metadatos como a nivel de contenidos.

Para actualizar los metadatos (la lista de paquetes) se ejecutará el comando:

Y para actualizar las versiones de las aplicaciones instaladas, se introducirá el siguiente comando:

Este último acepta como parámetro opcional el nombre del paquete que se desea actualizar,
aunque esto no debería ser necesario hacerlo.

Lo correcto es actualizar todos los paquetes y, como caso excepcional por motivos de estabilidad o compatibilidad,
evitar la actualización de algún paquete.

Esto último se consigue fijando el estado de un paquete con la acción pin:

Para "soltar" un paquete previamente fijado se utilizará la acción opuesta, unpin:

6. Eliminar paquetes

Homebrew distingue dos situaciones de eliminación de paquetes, por un lado, librarse de versiones obsoletas de un paquete
y, por otro, eliminar un paquete por completo.

Homebrew nunca va a eliminar ningún software de manera automática; siempre se le debe ordenar hacerlo.

La eliminación de versiones antiguas de un paquete se debe realizar con la acción cleanup:

Opcionalmente, se puede indicar el nombre del paquete a limpiar, aunque esto es poco frecuente.

Si Homebrew no encuentra y elimina la versión antigua de la aplicación, siempre queda la opción de borrar a mano
el directorio correspondiente (ver dónde se instalan los paquetes en el apartado 5.1.).

Por otro lado, para desinstalar completamente un paquete, se utilizará la acción uninstall
con el nombre del paquete que se quiere eliminar:

Se puede incluir la opción --force para eliminar todas las versiones de la aplicación
que se encuentren instaladas, que es lo más recomendable.

7. Caso práctico

A continuación se muestra la secuencia de comandos que se siguió para instalar todo el software
de una estación de desarrollo de aplicaciones Java en un proyecto real:

En el equipo ya se había instalado manualmente una versión de ansible,
lo que provocó un error al crear los enlaces simbólicos en /usr/local/bin.

Este problema se corrigió con una acción de Homebrew para forzar la creación de dichos enlaces, en concreto:

Esta misma acción se puede llevar a cabo si se producen otros conflictos similares.

Para otras tareas avanzadas se recomienda leer los manuales de Homebrew y de Cask:

8. Conclusiones

Homebrew y Cask no sólo traen a OSX un mecanismo unificado para el control de las aplicaciones instaladas
en el sistema, sino que también aportan un canal muy importante para la difusión de software que de otro modo
sería complicado obtener, instalar y mantener en nuestro equipo.

Esto es especialmente cierto en el caso de las herramientas de software libre, que en muchos casos
sólo están disponibles en forma de códigos fuente que no siempre son fáciles de obtener
(incluso saber cuál es la versión más adecuada), compilar e instalar.

Mención aparte merece el tema de la seguridad.

Mientras escribía este tutorial, openssl y varias herramientas que lo enlazan de manera estática se han
actualizado como respuesta a la última alerta de seguridad.

Esto proporciona una garantía y tranquilidad al nivel de los sistemas Linux.

En resumen, antes de ir a Internet a buscar cualquier herramienta o aplicación, vale la pena hacer una búsqueda
en Homebrew o Cask. Entre sus más de 6.000 paquetes hay todo tipo de joyas.

9. Referencias

1 Comentario

Dejar respuesta

Please enter your comment!
Please enter your name here