El proyecto Homebrew comenzó su vida como un administrador de paquetes de estilo Linux no oficial para Mac. Sus usuarios se enamoraron rápidamente de su interfaz amigable y sus indicaciones útiles y, en lo que puede parecer un extraño giro del destino, se trasladó a Linux.
Al principio, había dos proyectos separados para macOS y Linux (Homebrew y Linuxbrew), pero ahora el núcleo de Homebrew administra ambos sistemas operativos. Debido a que he estado en un viaje para migrar de Mac a Linux, he estado observando cómo funcionan mis aplicaciones favoritas de código abierto para macOS en Linux, y me alegró descubrir que el soporte de Homebrew para Linux realmente brilla.
¿Por qué Homebrew en Linux?
Una primera respuesta razonable a Homebrew de los usuarios de Linux desde hace mucho tiempo es: "¿Por qué no simplemente usar...", donde la siguiente palabra es un administrador de paquetes para su versión preferida de Linux? Los sistemas basados en Debian ya tienen apt
, los sistemas Fedora tienen dnf
y yum
, y proyectos como Flatpak y AppImage funcionan para salvar la brecha al ejecutarse sin problemas en ambos. He pasado una buena cantidad de tiempo usando todas estas tecnologías, y debo decir que cada una es poderosa por derecho propio.
Entonces, ¿por qué me quedo con Homebrew? En primer lugar, es increíblemente familiar para mí. Ya estoy aprendiendo mucho a medida que hago la transición a más alternativas de código abierto para mis herramientas propietarias anteriores, y mantener algo familiar, como Homebrew, me ayuda a concentrarme en aprender una cosa a la vez en lugar de sentirme abrumado por todas las diferencias entre los sistemas operativos. .
Además, todavía tengo que ver un administrador de paquetes que sea tan amable con el usuario como Homebrew. Los comandos están bien organizados, como muestra la salida de Ayuda predeterminada:
$ brew -h
Example usage:
brew search [TEXT|/REGEX/]
brew info [FORMULA...]
brew install FORMULA...
brew update
brew upgrade [FORMULA...]
brew uninstall FORMULA...
brew list [FORMULA...]
Troubleshooting:
brew config
brew doctor
brew install --verbose --debug FORMULA
Contributing:
brew create [URL [--no-fetch]]
brew edit [FORMULA...]
Further help:
brew commands
brew help [COMMAND]
man brew
https://docs.brew.sh
Este breve resultado puede confundirse con una limitación, pero una mirada rápida dentro de cualquiera de los subcomandos revela una gran cantidad de funciones. La lista anterior tiene solo 23 líneas, pero el install
El subcomando tiene 79 líneas de información disponibles para el usuario avanzado:
$ brew --help | wc -l
23
$ brew install --help | wc -l
79
Tiene opciones para ignorar o instalar dependencias, elegir compilar desde la fuente y con qué compilador, y usar confirmaciones de Git ascendentes exactas en comparación con la versión oficial "embotellada" de la aplicación. Baste decir que Homebrew es tanto para expertos como para principiantes.
Empezar con Homebrew en Linux
Si quieres probar Homebrew, hay un excelente script de una sola línea para instalarlo en Mac o Linux:
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
Este comando ejecuta el script de instalación de Homebrew inmediatamente. Si eres más cauteloso, puedes curl
el archivo, luego ejecútelo manualmente después de una revisión:
$ curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh --output homebrew_installer.sh
$ more homebrew_installer.sh # review the script until you feel comfortable
$ bash homebrew_installer.sh
Las instrucciones de Linux incluyen configuraciones para dotfiles, particularmente ~/.profile
en sistemas Debian y ~/.bash_profile
en Fedora:
$ test -d /home/linuxbrew/.linuxbrew && eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv)
$ test -r ~/.bash_profile && echo "eval \$($(brew --prefix)/bin/brew shellenv)" >>~/.bash_profile
$ echo "eval \$($(brew --prefix)/bin/brew shellenv)" >>~/.profile
Para confirmar la instalación, el equipo de Homebrew proporciona un hello
vacío fórmula para probar:
$ brew install hello
==> Downloading https://linuxbrew.bintray.com/bottles/hello-2.10.x86_64_linux.bottle.tar.gz
######################################################################## 100.0%
==> Pouring hello-2.10.x86_64_linux.bottle.tar.gz
? /home/linuxbrew/.linuxbrew/Cellar/hello/2.10: 52 files, 595.6KB
Parece que mi instalación funciona sin problemas, así que exploraré un poco más.
Brew para utilidades de línea de comandos
Más recursos de Linux
- Hoja de trucos de los comandos de Linux
- Hoja de trucos de comandos avanzados de Linux
- Curso en línea gratuito:Descripción general técnica de RHEL
- Hoja de trucos de red de Linux
- Hoja de trucos de SELinux
- Hoja de trucos de los comandos comunes de Linux
- ¿Qué son los contenedores de Linux?
- Nuestros últimos artículos sobre Linux
Homebrew se jacta de ser una aplicación que "instala las cosas que necesita que [Linux] no" por defecto.
Usas el brew
comando para instalar cualquiera de las utilidades de línea de comandos empaquetadas en Homebrew. Estas definiciones de paquetes se denominan "fórmulas" y se compilan y comparten a través de "botellas". Hay una gran cantidad de otra terminología orientada a la cerveza en el universo de Homebrew, pero el objetivo principal del administrador de paquetes es hacer que el software sea fácilmente accesible.
¿Qué tipo de software? Piensa en las cosas que son útiles para los nerds como yo (y, ya que estás leyendo esto, probablemente tú también). Por ejemplo, el práctico tree
comando que muestra estructuras de directorios o pyenv
, que uso para administrar varias versiones de Python en una Mac.
Puede ver todas las fórmulas disponibles utilizando la search
y agregando el wc
El comando muestra cuántos están disponibles:
# -l counts the number of lines
$ brew search | wc -l
5087
Hay más de 5000 fórmulas hasta la fecha, lo cual es una cantidad increíble de software. La advertencia es que no todas las fórmulas se ejecutarán en Linux. Hay una sección en la salida de brew search --help
que muestra banderas para filtrar el software por el sistema operativo en el que se ejecuta. Lanza la lista de repositorios de cada sistema operativo a un navegador. Estoy ejecutando Fedora, así que lo probaré con:
$ brew search --fedora tree
El navegador carga https://apps.fedoraproject.org/packages/s/tree
, que muestra las opciones disponibles para Fedora. También hay otras formas de navegar. Las fórmulas se codifican y centralizan en los repositorios centrales que se dividen por sistema operativo (Mac en Homebrew Core y Linux Core para bits de Linux). También están disponibles a través de la API de Homebrew y se enumeran en el sitio web.
Incluso con todas estas opciones, sigo encontrando la mayoría de mis nuevas herramientas a través de recomendaciones de otros usuarios. Estos son algunos de mis favoritos, si buscas inspiración:
pyenv
,rbenv
ynodenv
para administrar las versiones de Python, Ruby y Node.js (respectivamente)imagemagick
para ediciones de imágenes programablespandoc
para conversiones de documentos programables (a menudo cambio de .docx a .md o .html)hub
para una mejor experiencia de Git para los usuarios de GitHubtldr
para ver ejemplos de cómo usar una utilidad de línea de comandos
Para explorar Homebrew, eche un vistazo a las páginas tldr, que es una alternativa fácil de usar para desplazarse por las páginas man de una aplicación. Confirme que está disponible ejecutando search
:
$ brew search tldr
==> Formulae
tldr ✔
¡Éxito! La marca de verificación le permite saber que está disponible. Ahora puedes instalarlo:
$ brew install tldr
==> Downloading https://linuxbrew.bintray.com/bottles/tldr-1.3.0_2.x86_64_linux.bottle.1.tar.gz
######################################################################## 100.0%
==> Pouring tldr-1.3.0_2.x86_64_linux.bottle.1.tar.gz
? /home/linuxbrew/.linuxbrew/Cellar/tldr/1.3.0_2: 6 files, 63.2KB
Homebrew sirve binarios precompilados, por lo que no tiene que compilar a partir del código fuente en su máquina local. Eso ahorra mucho tiempo y ruido del ventilador de la CPU. Otra cosa que aprecio de Homebrew es que puedes apreciar esta característica sin entender exactamente lo que significa. Si prefiere construirlo usted mismo, use -s
o --build-from-source
marcar con brew install
para compilar la fórmula desde la fuente (incluso si existe una botella).
Del mismo modo, la complejidad bajo el capó puede ser interesante. Ejecutando info
en tldr
muestra cómo ocurre la administración de dependencias, dónde se encuentra el código fuente de la fórmula en el disco e incluso los análisis públicos están disponibles:
$ brew info tldr
tldr: stable 1.3.0 (bottled), HEAD
Simplified and community-driven man pages
https://tldr.sh/
Conflicts with:
tealdeer (because both install `tldr` binaries)
/home/linuxbrew/.linuxbrew/Cellar/tldr/1.3.0_2 (6 files, 63.2KB) *
Poured from bottle on 2020-06-08 at 15:56:15
From: https://github.com/Homebrew/linuxbrew-core/blob/master/Formula/tldr.rb
==> Dependencies
Build: pkg-config ✔
Required: libzip ✔, curl ✔
==> Options
--HEAD
Install HEAD version
==> Analytics
install: 197 (30 days), 647 (90 days), 1,546 (365 days)
install-on-request: 197 (30 days), 646 (90 days), 1,546 (365 days)
build-error: 0 (30 days)
Una limitación de Mac a Linux
En macOS, Homebrew cask
El subcomando ofrece a los usuarios una forma de instalar y administrar aplicaciones completas utilizando la misma gran utilidad de línea de comandos. Desafortunadamente, cask
aún no funciona en ninguna distribución de Linux. Descubrí esto al intentar instalar una herramienta de código abierto:
$ brew cask install tusk
Error: Installing casks is supported only on macOS
Pregunté al respecto en el foro y obtuve algunos comentarios rápidos de otros usuarios. En resumen, las opciones son:
- Bifurque el proyecto, cree la función y demuestre a los demás que vale la pena
- Escriba una fórmula para la aplicación y compílela desde la fuente
- Cree un repositorio de terceros para la aplicación
El último es el más interesante para mí. Homebrew administra repositorios de terceros mediante la creación y el mantenimiento de "toques" (otro término influenciado por la cerveza). Vale la pena explorar los toques a medida que te familiarizas con el sistema y deseas agregarlo al ecosistema.
Copia de seguridad de las instalaciones de Homebrew
Una de mis características favoritas de Homebrew es cómo puede hacer una copia de seguridad de su instalación como cualquier otro archivo de puntos en el control de versiones. Para este proceso, Homebrew ofrece un bundle
subcomando que contiene un dump
subcomando que genera un Brewfile. Este archivo es una lista reutilizable de todas las herramientas instaladas actualmente. Para generar un Brewfile desde su instalación, vaya a la carpeta que desee usar y ejecute:
$ cd ~/Development/dotfiles # This is my dotfile folder
$ brew bundle dump
$ ls Brewfile
Brewfile
Cuando cambio de máquina y quiero configurar las mismas aplicaciones en ella, voy a la carpeta con el Brewfile y las reinstalo con:
$ ls Brewfile
Brewfile
$ brew bundle
Instalará todas las fórmulas enumeradas en mi nueva máquina.
Administración de archivos Brew en Mac y Linux
Brewfile es una excelente manera de hacer una copia de seguridad de su instalación existente, pero ¿qué pasa si algo en Mac no se ejecuta en Linux o viceversa? Lo que encontré es que Homebrew ignorará con gracia las líneas que no funcionan en un sistema operativo determinado, ya sea Mac o Linux. Cuando se encuentra con solicitudes incompatibles (como pedirle a brew que instale casks en Linux), las omite y continúa su camino:
$ brew bundle --file=Brewfile.example
Skipping cask licecap (on Linux)
Skipping cask macdown (on Linux)
Installing fish
Homebrew Bundle complete! 1 Brewfile dependency now installed.
Para mantener mi configuración lo más simple posible, uso el mismo Brewfile en ambos sistemas operativos y no he tenido ningún problema ya que instala la versión específica del sistema operativo cada vez que lo ejecuto.
Homebrew para la gestión de paquetes
Homebrew ha sido mi administrador favorito para las utilidades de línea de comandos, y su familiaridad hace que mi experiencia con Linux sea mucho más agradable. Homebrew me mantiene organizado y actualizado, y sigo apreciando su equilibrio entre la facilidad de uso y la profundidad de la funcionalidad. Prefiero mantener los detalles de administración de paquetes en la cantidad mínima de información que un usuario necesita saber, y la mayoría de las personas se beneficiarán de eso. Si ya se siente cómodo con los administradores de paquetes de Linux, Homebrew puede parecer simple, pero mirar un poco más a fondo revela sus opciones avanzadas que van mucho más allá de lo que se encuentra en este artículo.
Hay muchas opciones de administración de paquetes para usuarios de Linux. Si viene del mundo de macOS, Homebrew se sentirá como en casa.