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
- 2. Entorno
- 3. Instalar Homebrew
- 4. Buscar paquetes
- 5. Instalar y actualizar paquetes
- 6. Eliminar paquetes
- 7. Caso práctico
- 8. Conclusiones
- 9. Referencias
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:
- http://braumeister.org/
- https://caskroom.github.io/search
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:
- Define uno o varios scripts de lanzamiento (wrappers) en el directorio
/usr/local/Cellar/paquete/versión/bin
. - 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.
Me sale esto después de instalar homebrew: «-bash: brew: command not found» ¿Qué habrá pasado? ¿Cómo corrijo?