Homebrew

1
10087

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):

    $ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  

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:

    $ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"
  

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:

    $ brew search subcadena
  

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

    $ brew search virtual
    pyenv-virtualenv  pyenv-virtualenvwrapper virtualhost.sh  virtualpg
    Caskroom/cask/parallels-virtualization-sdk Caskroom/cask/virtual-ii  Caskroom/cask/virtualc64
    Caskroom/cask/retro-virtual-machine  Caskroom/cask/virtualbox-extension-pack Caskroom/cask/virtualhostx
    Caskroom/cask/syphon-virtual-screen  Caskroom/cask/virtualbox  Caskroom/versions/virtualbox-beta
  

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:

    $ brew cask search subcadena
  

Por ejemplo:

    $ brew cask search virtual
    ==> Partial matches
    parallels-virtualization-sdk  syphon-virtual-screen  virtualbox  virtualc64
    retro-virtual-machine	 virtual-ii	 virtualbox-extension-pack  virtualhostx
  

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:

    $ brew install nombre-paquete-homebrew
  
    $ brew cask install nombre-paquete-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:

    $ brew update
  

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

    $ brew upgrade
  

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:

    $ brew pin nombre-paquete
  

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

    $ brew unpin nombre-paquete
  

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:

    $ brew 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:

    $ brew uninstall nombre-paquete
  

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:

      brew cask install java
      brew install maven
      brew install ansible
      brew install git
      brew cask install atom
      brew cask install eclipse-jee
      brew cask install sourcetree
      brew cask install virtualbox
      brew cask install vagrant
    

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:

        $ brew link --overwrite ansible
      

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:

            $ man brew
            $ man brew-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

David García Gil
Consultor tecnológico de desarrollo de proyectos informáticos.
Ingeniero en Informática por la Universidad de Murcia especializado en Ingeniería del Software.
Puedes encontrarme en Autentia donde ofrecemos servicios de soporte a desarrollo, factoría y formación.
Somos expertos en Java/Java EE.

1 COMENTARIO

DEJA UNA RESPUESTA

Por favor ingrese su comentario!

He leído y acepto la política de privacidad

Por favor ingrese su nombre aquí

Información básica acerca de la protección de datos

  • Responsable:
  • Finalidad:
  • Legitimación:
  • Destinatarios:
  • Derechos:
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad