Valorisation de la bière à El Capitan

38

Je viens de passer à El Capitan, et quand j'ai essayé de mettre à jour, brewj'ai eu l'erreur suivante:

$ brew update
Error: The /usr/local directory is not writable.
Even if this directory was writable when you installed Homebrew, other
software may change permissions on this directory. Some versions of the
"InstantOn" component of Airfoil are known to do this.

You should probably change the ownership and permissions of /usr/local
back to your user account.
  sudo chown -R $(whoami):admin /usr/local

Avant de poursuivre avec la chownrecommandation, étant donné qu’El Capitan vient de paraître, est-ce la bonne façon de procéder ici? Pourquoi cette étape est-elle nécessaire et quelles sont les conséquences indésirables potentielles de l'exécution de cette commande?

Au cas où cela aiderait, j'ai trouvé deux problèmes concernant El Capitan dans brew: 40837 et 41665, mais une solution à ce problème n'était pas immédiatement évidente. Que puis-je faire pour continuer à utiliser brewà El Capitan de manière fiable?

Amelio Vazquez-Reina
la source
2
Bien avez-vous fait comme le message suggéré, changer de propriétaire /usr/local?
user3439894
Cela soulève une excellente question pour le cas de plusieurs utilisateurs (ou un utilisateur avec plusieurs comptes ayant des profils différents) sur le même ordinateur.
Walt Stoneburner
4
Taper sudo chown -Rme donne les willies. Peu importe les autres paramètres. J'ai plus que Homebrew dans /usr/local, et ce n'est pas une commande évidemment sûre. J'ai confirmé via Time Machine que l'installation d'El Capitan chowned exclusivement /usr/localet non de sous-répertoires. J'ai donc été capable de faire une réversion non récursive, c'est-à-dire sudo chown $(whoami):admin /usr/local. YMMV.
Duozmo
@duozmo a raison. Le -Rdans sudo chown -Rest vraiment lourd. Cela équivaut à Brew réclamant le domaine sur l'ensemble de/usr/local
HairOfTheDog

Réponses:

31

Je veux dire qu'ils vous donnent la solution là-bas. J'ai eu le même problème et j'ai juste couru:

  sudo chown -R $(whoami):admin /usr/local

et cela a fonctionné.

Afficher un nom
la source
1
+1 J'avais également besoin de réinitialiser les autorisations de mon utilisateur comme décrit. Aucun autre problème après ce petit tweak - homebrew et mes paquets ont été très fiables le 10.11.
bmike
22
Cela ne répond pas vraiment à la question: on pourrait supposer que Apple a verrouillé / usr / local pour une raison et que ce correctif n'est PAS approprié pour El Capitan. Je suis sur Google maintenant pour voir si Apple fournit des indications. La question est "... étant donné qu'El Capitan vient de sortir, est-ce la bonne façon de procéder ici?"
Michael Welch
1
@MichaelWelch La réponse a été postée avant cette édition.
DisplayName
1
Désolé @ NomAffichage J'aurais dû regarder les horodatages.
Michael Welch
2
C'est la bonne réponse. Voir github.com/Homebrew/homebrew/blob/master/share/doc/homebrew/… - J'ai couru $ brew doctoret découvert qu'une flacdépendance était manquante. Après, $ brew install flacj'ai dû courir obstinément $ brew updateplusieurs fois.
Ando
9

Nous n'avons plus besoin de nous casser la tête à ce sujet. J'ai risqué le conseil et fait le changement d'autorisation suggéré. Puis, lors de la mise à jour du dernier homebrew, j'ai reçu ce message rassurant:

Homebrew n’a plus besoin d’être propriétaire de / usr / local. Si vous le souhaitez, vous pouvez rétablir / usr / local sa propriété par défaut avec: sudo chown root: wheel / usr / local

JannieT
la source
Alors, comment résoudre ce problème?
Rajesh Maurya
@RajeshMaurya utilise la solution de Karolus
JannieT
8

Pour certaines des questions de sécurité ci-dessus, la boîte de dialogue donne des instructions pour réinitialiser après une mise à jour réussie. Après avoir couru

sudo chown -R $(whoami) /usr/local

Et alors

brew update

Une fois que la mise à jour a été exécutée avec succès, la boîte de dialogue devrait indiquer ceci:

sudo chown root:wheel /usr/local

Une fois exécuté, cela devrait résoudre tous les problèmes de sécurité avec MacOS 10.12.

Karolus
la source
chown: / usr / local: Opération interdite
Rajesh Maurya
6

La solution proposée n'a pas fonctionné pour moi:

sudo chown -R $(whoami):admin /usr/local

Cette variation a fonctionné pour moi:

sudo chown -R $USER /usr/local/

Brian Spiering
la source
1
sudo chown -R $ UTILISATEUR / usr / local / a travaillé pour moi sur le dernier macOS
Alex Trott
1
chown: / usr / local /: Opération interdite
Rajesh Maurya
ajoutez sudopuis tapez mot de passe de niveau racine
Brian Spiering
1
Toujours chown: / usr / local /: Opération non autorisée même si je tape le mot de passe root.
2myCharlie
0

Je le répare en utilisant cette commande sudo chown -R admin /usr/local.

Lee Li
la source
-1

veuillez regarder le SIP avec:

csrutil status

la protection de l'intégrité du système est fixée sur "enable", avec le dernier attribut Apple "restreint":

csrutil 
bigben
la source
3
Comment cela résout-il le problème énoncé dans la question?
nohillside
-1

Cela a fonctionné pour moi.

sudo chgrp -R admin /usr/local
sudo chmod -R g+w /usr/local
Mahfuz
la source
1
Ces deux solutions ne fonctionnent pas pour moi. Il montre toujours: chown: / usr / local: Opération interdite
2myCharlie
-2

la protection de l'intégrité du système doit être désactivée. Vous pouvez le faire avec ça.

sudo nvram boot-args="rootless=0";osascript -e 'tell app "loginwindow" to «event aevtrrst»’

Cela désactive le système intégralement Protection System. Je crois que vous pouvez également le faire à partir du mode de récupération. Vous devez toujours entrer votre mot de passe root lorsque vous utilisez sudo, mais vous n'êtes pas verrouillé par SIP. Vous n'allez pas non plus ouvrir des répertoires en essayant par inadvertance de définir des autorisations.

Harry McGovern
la source
3
Il n'est pas nécessaire de désactiver SIP pour changer de propriétaire ci-dessous /usr/local.
nohillside