Introduction
Level gère Homebrew sur macOS via un homebrew utilisateur système plutôt que de l'exécuter en tant que root ou l'utilisateur actuellement connecté. Cela suit la recommandation officielle de Homebrew et évite les problèmes de permissions qui surviennent lors de l'exécution de brew en tant que root.
Si vous exécutez des actions d'automatisation Homebrew via Level et constatez un comportement inattendu, ou si vous gérez un appareil macOS sur lequel Homebrew était déjà installé, cet article explique ce que fait Level et comment travailler avec.
L'utilisateur homebrew
Level crée un compte utilisateur homebrew automatiquement lors de la première exécution de l'une ou l'autre de ces actions sur un appareil :
Installer Homebrew
Installer un paquet Homebrew (qui installe d'abord Homebrew s'il n'est pas déjà présent)
L'utilisateur homebrew est un compte système (pas d'interpréteur de connexion, pas de répertoire personnel dans /Users). Il est configuré pour sudo 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 conservés.
Exécuter des commandes Homebrew
Puisque Homebrew appartient à l'utilisateur homebrew les commandes brew doivent être exécutées 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
Utiliser le script enveloppeur de Level
Level installe un script enveloppeur à /usr/local/bin/brew qui exécute les commandes brew en tant qu'utilisateur homebrew automatiquement.
Avec le script enveloppeur en place, vous pouvez utiliser la syntaxe brew standard :
brew --version brew list brew upgrade
Le script enveloppeur gère le préfixe sudo -E -H -u homebrew à votre place. Utilisez cette forme lors de l'exécution de commandes brew dans le terminal de Level ou dans des scripts.
💡 CONSEIL : Utilisez toujours la forme avec le script enveloppeur dans les scripts et automatisations Level. Utiliser brew directement (via le script enveloppeur) maintient une syntaxe propre et garantit que vous opérez dans le bon contexte utilisateur.
Bannière de notification
Lors de l'exécution de brew via le script enveloppeur de Level, vous verrez une note similaire à celle-ci :
NOTE: Homebrew is managed by Level on this device: https://docs.level.io/...
Il s'agit d'une information uniquement. Cela confirme que le script enveloppeur de Level est actif et que l'utilisateur homebrew gère l'installation.
FAQ
Pourquoi Level utilise-t-il un utilisateur
homebrewplutôt que d'exécuter en tant que root ? Homebrew déconseille explicitement l'exécution en tant querootcar il installe des logiciels dans des chemins partagés et le contexte root provoque des problèmes de permissions dans tout le système. Un utilisateur dédié avec des droitssudoest le modèle recommandé selon la documentation officielle 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
homebrewLes paquets que vous avez installés sont toujours présents. Les futures installations et mises à niveau passent par l'utilisateurhomebrewSi vous exécutiez desbrewdes commandes en tant que vous-même ou en tant querootauparavant, utilisez le script enveloppeur ou la formesudo -E -H -u homebrew brewà l'avenir.Puis-je encore installer des paquets manuellement avec
brew install? Oui, utiliser le script enveloppeur à/usr/local/bin/brewou la forme complètesudo -E -H -u homebrew brew installdirecte debrew 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éeront l'utilisateur et reconfigureront la propriété lors de leur prochaine exécution. Ne le supprimez pas si vous utilisez Level pour gérer Homebrew.Puis-je utiliser Homebrew avec Level sur des Mac Apple Silicon (M1/M2/M3) ? Oui. L'
homebrewL'approche basée sur l'utilisateur et le script enveloppeur fonctionne aussi bien sur Intel que sur Apple Silicon. Notez que Homebrew s'installe dans des chemins différents selon l'architecture (/usr/localet/opt/homebrew), mais Level gère cela de manière transparente.
