Introduction
Level gère Homebrew sur macOS via un utilisateur système dédié homebrew plutôt que de l'exécuter en tant que root ou l'utilisateur actuellement connecté. Cela suit la propre recommandation de Homebrew et évite les problèmes de permission qui surviennent en exécutant brew en tant que root.
Si vous exécutez des actions d'automation Homebrew via Level et constatez un comportement inattendu, ou si vous gérez un appareil macOS qui avait déjà Homebrew installé, cet article explique ce que Level fait et comment travailler avec.
L'utilisateur homebrew .
Level crée un compte utilisateur homebrew automatiquement quand l'une de ces actions s'exécute pour la première fois sur un appareil :
Installer Homebrew
Installer un paquet Homebrew (qui installe Homebrew d'abord s'il n'est pas déjà présent)
L'utilisateur homebrew est un compte système (pas de shell de connexion, pas de répertoire d'accueil dans /Users). Il est configuré pour sudo sans mot de passe via un fichier de configuration à /etc/sudoers.d/homebrew.
ℹ️ REMARQUE : Si Homebrew était déjà installé sur l'appareil avant qu'une action Level ne s'exécute, Level reconfigure l'installation existante pour transférer la propriété à l'utilisateur homebrew. Les paquets installés sont préservés.
Exécution des commandes Homebrew
Puisque Homebrew est la propriété de l'utilisateur homebrew, les commandes brew doivent s'exécuter en tant que cet utilisateur pour fonctionner correctement.
La forme complète de la commande est :
sudo -E -H -u homebrew brew [COMMAND]
Exemple :
sudo -E -H -u homebrew brew --version
Utilisation du wrapper Level
Level installe un script wrapper à /usr/local/bin/brew qui exécute les commandes brew en tant que l'utilisateur homebrew automatiquement.
Avec le wrapper en place, vous pouvez utiliser la syntaxe brew standard :
brew --version brew list brew upgrade
Le wrapper gère le préfixe sudo -E -H -u homebrew pour vous. Utilisez cette forme lors de l'exécution de commandes brew dans le terminal de Level ou dans les scripts.
💡 CONSEIL : Utilisez toujours la forme du wrapper dans les scripts et les automations de Level. Utiliser brew directement (via le wrapper) maintient la syntaxe propre et garantit que vous exécutez dans le contexte utilisateur correct.
Banneau de notification
Lors de l'exécution de brew via le wrapper de Level, vous verrez une note similaire à ceci :
NOTE: Homebrew is managed by Level on this device: https://docs.level.io/...
C'est informatif seulement. Cela confirme que le wrapper de Level est actif et que l'utilisateur homebrew gère l'installation.
FAQ
Pourquoi Level utilise un utilisateur dédié
homebrewau lieu d'exécuter en tant que root ? Homebrew décourage explicitement d'exécuter en tant querootcar il installe des logiciels dans des chemins partagés et le contexte racine cause des problèmes de permission dans tout le système. Un utilisateur dédié avecsudosans mot de passe ciblé est le modèle recommandé selon la propre documentation de Homebrew.J'avais Homebrew installé avant Level. Qu'est-ce qui a changé ? Level a transféré la propriété de l'installation Homebrew à l'utilisateur
homebrew. Vos paquets installés sont toujours là. Les installations et mises à niveau futures passent par l'utilisateurhomebrew. Si vous exécutiezbrewcommandes en tant que vous-même ou en tant querootavant, utilisez le wrapper ou la formesudo -E -H -u homebrew brewà partir de maintenant.Puis-je toujours installer des paquets manuellement avec
brew install? Oui, en utilisant le wrapper à/usr/local/bin/brewou la forme complètesudo -E -H -u homebrew brew install. Directbrew installen tant querootou un autre utilisateur échouera ou créera des conflits de propriété.Que se passe-t-il si je supprime l'utilisateur
homebrew? Les actions Homebrew de Level recréent l'utilisateur et reconfigurent la propriété la prochaine fois qu'elles s'exécutent. Ne le supprimez pas si vous utilisez Level pour gérer Homebrew.Puis-je utiliser Homebrew avec Level sur Apple Silicon (M1/M2/M3) Macs ? Oui. L'utilisateur
homebrewet l'approche du wrapper fonctionnent sur Intel et Apple Silicon. Notez que Homebrew installe vers des chemins différents sur chaque architecture (/usr/localvs/opt/homebrew), mais Level gère cela de manière transparente.
