Homebrew
- EN
- ES
Table of Contents
¿Qué hacer después de instalar paquetes homebrew? Tu macOS no avisa de las actualizaciones homebrew, así que debes hacerlo tú mismo. Este pequeño script te puede ayudar.
Todos sabemos que debemos mantener nuestro software al día; no sólo porque los proveedores lanzan continuamente nuevas y novedosas funciones sino, lo que es más importante, porque proporcionan -con suerte- actualizaciones de seguridad.
Si tienes un Mac probablemente estés familiarizado con el proceso de actualización de software:
Si tienes un Mac, lo más probable es que tengas instalado homebrew. Homebrew es una especie de gestor de paquetes que proporciona software que puede faltar en un Mac (y también para Linux, pero ¿a quién le importa?).
Por ejemplo, si quieres una versión de python actualizada, o una versión de GPG de código abierto, lo más probable es que la instales desde homebrew.
Añadir homebrew es muy fácil:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
E instalar el software necesario:
brew install gnupg
Por desgracia, macOS no nos notificará de las actualizaciones de homebrew, así que tendrás que comprobarlo por tus propios medios. La forma más sencilla es usar la línea de comandos:
brew update
brew outdated
update
primero!
Si algo está obsoleto, se puede actualizar todo o una fórmula específica:
brew upgrade
brew upgrade <formula>
#
Formulae vs casks
Antes de continuar, voy a explicar la diferencia básica entre fórmulas y casks:
- Formulas son scripts Ruby que describen cómo descargar, compilar e instalar software. Típicamente software opensource de línea de comandos
- Casks es algún tipo de extensión que permite instalar aplicaciones GUI, software propietario y binarios
##
Otros términos de homebrew
- Tap. Un tap es una fuente de formulas (¿y quizás también casks?). Default tap es
homebrew/core
pero hay taps de terceros. - Cellar. Cellar es el directorio donde homebrew instala cosas. Tras la instalación, homebrew crea un enlace en
/usr/local/bin
.
#
Volviendo a las actualizaciones
Hace algún tiempo me di cuenta de que brew outdated
no informaba de algunos de mis paquetes desactualizados. La razón era que eran casks. Así que si tienes alguno instalado también tienes que ejecutar:
brew outdated --cask
update
primero!
#
Automatizar las notificaciones
Dado que es realmente importante mantener nuestro software actualizado, será útil establecer un recordatorio para actualizar nuestros paquetes homebrew.
Podemos usar este script:
#!/bin/zsh
# Need to add /usr/local/bin to PATH
PATH=/usr/local/bin:$PATH
BREW=brew
if ! command -v $BREW &> /dev/null
then
echo "ERROR: $BREW not found" >&2
exit 1
fi
$BREW update >/dev/null
OUTDATED_F=$($BREW outdated | wc -l)
OUTDATED_C=$($BREW outdated --cask | wc -l)
OUTDATED=$((OUTDATED_F+OUTDATED_C))
if [[ $OUTDATED -gt 0 ]]; then
MSG="You have $OUTDATED outdated packeges\nPlease check your homebrew installation"
osascript -e "display notification \"$MSG\" with title \"Homebrew\""
fi
that will display a standard macOS notifications if there are packages out of date.
To run automatically once a day we can use launchd
. So let’s create a plist file:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>brew.updates.notification</string>
<key>Program</key>
<string>/usr/local/bin/brew-check-update.sh</string>
<key>RunAtLoad</key>
<true/>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>9</integer>
<key>Minute</key>
<integer>0</integer>
</dict>
</dict>
</plist>
Y cargarlo:
launchctl bootstrap gui/501/brew.updates.notification
Con esto el script debería ejecutarse cada 9:00 de la mañana y avisarnos si debemos ejecutar brew upgrade
.