Einführung
Level verwaltet Homebrew unter macOS über einen dedizierten homebrew Systembenutzer, anstatt es als root oder den aktuell angemeldeten Benutzer auszuführen. Dies folgt Homebrews eigener Empfehlung und vermeidet Berechtigungsprobleme, die sich aus der Ausführung von brew als root.
Wenn Sie Homebrew-Automationsaktionen über Level ausführen und unerwartet Verhalten feststellen, oder wenn Sie ein macOS-Gerät verwalten, auf dem Homebrew bereits installiert war, erklärt dieser Artikel, was Level tut und wie Sie damit arbeiten.
Der homebrew Benutzer
Level erstellt automatisch ein homebrew Benutzerkonto, wenn einer dieser Aktionen zum ersten Mal auf einem Gerät ausgeführt wird:
Homebrew installieren
Homebrew-Paket installieren (das Homebrew zuerst installiert, falls noch nicht vorhanden)
Der homebrew Benutzer ist ein Systemkonto (keine Anmeldeshell, kein Verzeichnis in /Users). Es ist für passwortlose sudo über eine Konfigurationsdatei unter /etc/sudoers.d/homebrew.
ℹ️ HINWEIS: Wenn Homebrew auf dem Gerät bereits installiert war, bevor eine Level-Aktion ausgeführt wurde, konfiguriert Level die bestehende Installation neu, um das Eigentum auf den homebrew Benutzer zu übertragen. Installierte Pakete bleiben erhalten.
Homebrew-Befehle ausführen
Da Homebrew dem homebrew Benutzer gehört, müssen brew-Befehle als dieser Benutzer ausgeführt werden, um ordnungsgemäß zu funktionieren.
Die vollständige Befehlsform ist:
sudo -E -H -u homebrew brew [COMMAND]
Beispiel:
sudo -E -H -u homebrew brew --version
Verwendung des Level-Wrappers
Level installiert ein Wrapper-Skript unter /usr/local/bin/brew, das brew-Befehle automatisch als homebrew Benutzer ausführt.
Mit dem Wrapper vorhanden, können Sie die Standard-brew-Syntax verwenden:
brew --version brew list brew upgrade
Der Wrapper kümmert sich um das sudo -E -H -u homebrew Präfix für Sie. Verwenden Sie diese Form beim Ausführen von brew-Befehlen in Levels Terminal oder in Skripten.
💡 TIPP: Verwenden Sie immer das Wrapper-Formular in Level-Skripten und Automationen. Verwenden brew direkt (über den Wrapper) hält die Syntax sauber und stellt sicher, dass Sie im richtigen Benutzerkontext ausgeführt werden.
Benachrichtigungsbanner
Beim Ausführen von brew über den Level-Wrapper sehen Sie eine Notiz wie diese:
NOTE: Homebrew is managed by Level on this device: https://docs.level.io/...
Dies ist nur informativ. Es bestätigt, dass Levels Wrapper aktiv ist und dass der homebrew Benutzer die Installation verwaltet.
FAQ
Warum verwendet Level einen dedizierten
homebrewBenutzer statt als root auszuführen? Homebrew rät explizit davon ab, alsrootauszuführen, da es Software in gemeinsam genutzten Pfaden installiert und der Root-Kontext systemweit zu Berechtigungsproblemen führt. Ein dedizierter Benutzer mit gezieltem passwortlosemsudoist das empfohlene Muster gemäß Homebrews eigener Dokumentation.Ich hatte Homebrew vor Level installiert. Was hat sich geändert? Level hat das Eigentum der Homebrew-Installation auf den
homebrewBenutzer übertragen. Ihre installierten Pakete sind noch vorhanden. Zukünftige Installationen und Upgrades erfolgen über denhomebrewBenutzer. Wenn SiebrewBefehle als sich selbst oder alsrootzuvor ausgeführt haben, verwenden Sie den Wrapper oder dassudo -E -H -u homebrew brewFormular ab jetzt.Kann ich immer noch Pakete manuell mit
brew installinstallieren? Ja, unter Verwendung des Wrappers unter/usr/local/bin/brewoder dem vollständigensudo -E -H -u homebrew brew installFormular. Direktbrew installalsrootoder ein anderer Benutzer schlägt fehl oder erstellt Eigentumskonflikte.Was passiert, wenn ich den
homebrewBenutzer entferne? Level Homebrew-Aktionen erstellen den Benutzer neu und konfigurieren das Eigentum beim nächsten Ausführen. Entfernen Sie ihn nicht, wenn Sie Level zur Verwaltung von Homebrew verwenden.Kann ich Homebrew mit Level auf Apple Silicon (M1/M2/M3) Macs verwenden? Ja. Der
homebrewBenutzer und der Wrapper-Ansatz funktionieren auf Intel und Apple Silicon. Beachten Sie, dass Homebrew auf jeder Architektur auf verschiedene Pfade installiert wird (/usr/localvs/opt/homebrew), aber Level kümmert sich transparent darum.
