skip to content

Effiziente Verwaltung von Homebrew-Paketen

/

Homebrew auf macOS ist eine der einfachsten Methoden, um Software zu installieren und zu verwalten. Doch mit der Zeit kann das Paketmanagement unübersichtlich werden, besonders wenn Pakete über längere Zeiträume hinweg installiert und teilweise nicht mehr verwendet werden. Häufig vergisst man, welche Pakete man ursprünglich installiert hat und ob sie noch benötigt werden. Der Befehl brew leaves hilft dabei, Pakete zu identifizieren, die nicht als Abhängigkeiten für andere installiert sind. Mit dem zusätzlichen Flag -r (--installed-on-request) können explizit manuell installierte Pakete angezeigt werden. Dennoch liefert Homebrew keine Informationen zur tatsächlichen Nutzungshäufigkeit und verfolgt keine Statistiken über installierte Pakete.

Ein häufiges Problem beim Umziehen auf eine neue Arbeitsumgebung ist die Neuinstallation aller Homebrew-Pakete, was nicht nur mühsam ist, sondern auch eine Gelegenheit zum Ausmisten bietet.

Um diesen Problemen entgegenzuwirken, habe ich eine einfache Methode zur Homebrew Automatisierung entdeckt, bei der eine Datei “Brewfile” und ein kleines Automatisierungsskript helfen, das System aufgeräumt und aktuell zu halten. Durch das Erstellen einer Brewfile-Datei können alle benötigten Homebrew-Formulas und Casks übersichtlich verwaltet und schnell wiederhergestellt werden, ohne dass man manuell jedes Paket erneut installieren muss.

Homebrew bietet auch die Möglichkeit, Schriftarten zu installieren. Diese werden als eigenständiger Typ von Cask betrachtet und können über brew install --cask installiert werden. Beispiel: brew install --cask font-fira-code.

Schritt 1: Textdatei erstellen

Die Brewfile ist eine einfache Textdatei, die eine Liste von Homebrew-Paketen enthält, die auf einem System installiert werden sollen. Dies ermöglicht eine präzise und strukturierte Verwaltung aller Pakete. Hier ein Beispiel für eine solche Brewfile:

Terminal window
# .config/Brewfile
# Grundlegende Pakete
brew "git" # Verteiltes Versionskontrollsystem zur Quellcode-Verwaltung und Zusammenarbeit in Projekten.
brew "gh" # GitHub-Kommandozeilen-Tool für die Verwaltung von Repositories, PRs und Issues.
brew "node" # Laufzeitumgebung für JavaScript, speziell für serverseitige Anwendungen und Webentwicklung.
brew "mysql" # Relationales Datenbankmanagementsystem
# Hilfswerkzeuge
brew "fzf" # Fuzzy-Finder für die Kommandozeile, nützlich zur schnellen Navigation durch Dateien und Verzeichnisse.
brew "bat" # Farbige Alternative zu `cat` mit Syntax-Highlighting und Git-Integration.
brew "eza" # Moderne Alternative zu `ls` mit zusätzlicher Übersichtlichkeit.
...

In dieser Brewfile sind die Pakete in verschiedene Kategorien unterteilt, was eine einfache Organisation ermöglicht. Zusätzlich können mit Kommentaren wichtige Informationen zu den Paketen hinterlegt werden.

Schritt 2: Automatisierung mit einem Alias

Um die Pakete bequem zu verwalten und zu synchronisieren, kann ein Alias in der .zshrc-Datei eingerichtet werden. Dieser Alias führt ein einfaches Skript aus, das Homebrew aktualisiert, die Pakete aus der Brewfile installiert und nicht mehr benötigte Pakete entfernt. Der folgende Alias könnte als Beispiel dienen:

.zshrc
alias brewsync="set -e &&\
brew update &&\
brew bundle install --cleanup --file=~/.config/Brewfile --no-lock &&\
brew upgrade"

Mit dieser Methode wird nicht nur das Installieren und Aktualisieren von Paketen automatisiert, sondern es bleibt auch stets klar, welche Software du tatsächlich benötigst und warum. So sorgt das Skript bei mir für eine saubere und gut organisierte Umgebung.