Erreurs d'installation dans Homebrew

112

Tentative d'installation de RVM et Ruby 1.9.2

J'ai déjà installé homebrew et git, mais je n'ai pas pu obtenir de mises à jour complètes car je continuais à recevoir des erreurs d'autorisation. Snow Leopard réinstallé et autorisations réparées.

Maintenant cela arrive ...

$ brew installer wget

Erreur: impossible d'écrire dans / usr / local / Cellar

Ibrahim
la source
stackoverflow.com/questions/4804169/… devrait être marqué comme réponse acceptée - je crains que les visiteurs qui ne voient pas que cette question n'a pas été répondue passent à autre
chose

Réponses:

274

sudo chown -R $USER /usr/local

Vous devrez vous donner la propriété d' /usr/local/utiliser cette ligne ici même. J'ai dû le faire moi-même après avoir utilisé le ruby ​​one-liner en haut de la documentation officielle pour installer Homebrew. A fonctionné à merveille pour moi. Ce devrait être le seul moment dont vous aurez besoin sudoavec Homebrew.

Je ne sais pas si le rubis one-liner fait cela. Si c'est le cas, alors quelque chose d'autre sur mon système a pris le contrôle /usr/localdepuis.

Edit : J'ai complètement manqué cela, mais @samvermette ne l'a pas fait (voir les réponses à ma réponse): si vous exécutez cette commande ci-dessus et avez quelque chose installé via homebrew qui nécessite des autorisations utilisateur spéciales, comme mysql, assurez-vous de rendre ces autorisations (comme la commande ci-dessus donne la propriété récursive de tout ce qui se trouve /usr/localà l' intérieur de vous ( $USER). Dans le cas de mysql, c'est…

sudo chown -RL mysql:mysql /usr/local/mysql/data

Ben Kreeger
la source
16
Remarque : cette commande va supprimer la propriété de / usr / local / mysql / data à l' mysqlutilisateur. Dans mon cas, cela a empêché mysql de démarrer. sudo chown -RL mysql:mysql /usr/local/mysql/data
Corrige
24
J'ai évité le problème de mysql en utilisant sudo chown -R $USER /usr/local/Cellarcomme /usr/local/j'avais déjà les autorisations correctes pour moi
Parker
1
Hélas, les utilisateurs viennent et les utilisateurs partent… peut-être qu'un jour Ibrahim reviendra et le marquera. Peut être. (Probablement pas.)
Ben Kreeger
4
Je n'aime pas cette réponse. Cela suppose qu'un seul utilisateur utilise le système et que l'utilisateur doit posséder tout / usr / local, bien que la question ne concerne que l'homebrew. L'infusion ne fonctionne-t-elle pas avec les systèmes multi-utilisateurs? C'est une réponse bâclée, même si cela fonctionne. De plus, cela n'explique pas comment un utilisateur a pu rencontrer cette situation. Astuce - J'ai installé HomeBrew en utilisant les instructions canoniques, puis restauré à partir d'une sauvegarde TimeMachine (sur une autre machine). Je soupçonne que c'est cette restauration qui a modifié la propriété du fichier.
Jason R. Coombs
1
Je suis d'accord avec @ JasonR.Coombs; les gens ne devraient pas utiliser cette solution bâclée sans en comprendre les ramifications pratiques et sécuritaires. Tout logiciel dans / usr / local peut maintenant être écrasé par tout ce qui tourne sous votre utilisateur, ouvrant une faille de sécurité. Il est tout à fait possible que vous fassiez autre chose (en plus de MySQL) en exécutant aveuglément la première commande chown, après quoi il sera trop tard pour identifier et réparer tout ce que vous venez de foutre.
rob
41

J'ai eu ce problème après la mise à niveau vers Mavericks, et cette page était le principal résultat de la recherche lors de la recherche sur Google du message d'erreur. J'ai continué à chercher et j'ai trouvé cette réponse sur stack overflow.com . En bref, c'est:

sudo chmod a+w /usr/local/Cellar

Cela a résolu le problème pour moi, et comme cela ne modifie que les autorisations pour le chemin spécifique référencé dans le message d'erreur, il semblait peu probable qu'il ait des effets secondaires négatifs avec d'autres installations.

Je mets cette réponse ici pour toute autre personne qui pourrait trouver cette page en premier comme moi. Cependant, le crédit devrait aller à jdi .

Nathan
la source
2
Est-ce considéré comme peu sûr, car tout le monde peut désormais écrire dans / usr / local / Cellar?
David Welch le
Cette réponse échoue pour les packages qui nécessitent l'accès à d'autres dossiers (tels que /usr/local/bin).
Jason R. Coombs
11

Vous ne pouvez autoriser que les utilisateurs administrateurs à écrire dans /usr/local/?

chgrp -R admin /usr/local
chmod -R g+w /usr/local
chgrp -R admin /Library/Caches/Homebrew
chmod -R g+w /Library/Caches/Homebrew

Depuis que chaque utilisateur qui appartient au groupe Admin, sera en mesure d'installer de nouvelles dépendances.

swilgosz
la source
Cela semble être une meilleure solution pour les machines multi-administrateurs (bien que mon répertoire / usr / local / lib ait également besoin de g + x pour que aspell fonctionne).
James Snook
1
Pour éviter d'obtenir l'erreur "L'étape" Le lien de brassage "ne s'est pas terminée correctement", vous pouvez également appliquer le contenu de ce fil , à savoir sudo chgrp -R admin /usr/local/DDDD+ sudo chmod -R g+w /usr/local/DDDDoù DDDD est bin , share , Library / LinkedKegs , opt
superk
1
Thnx pour la réponse, j'ai dû utiliser "sudo", donc si ces commandes ne fonctionnent pas, essayez de la préfixer avec sudo
MQoder
5

Sur High Sierra, vous avez besoin de la commande suivante car chown ne fonctionnera pas:

sudo chown -R $ (whoami) $ (brassage - préfixe) / *

Lien:

https://github.com/Homebrew/brew/issues/3228

Metodij Zdravkin
la source
2

désinstaller et réinstaller HomeBrew qui fera l'affaire

Ricardo Marin
la source
1

Je suggère de s'assurer que l'utilisateur actuel est membre du groupe qui possède / usr / local. Je crois que par défaut, ce groupe l'est wheel. Pour devenir membre de ce groupe:

$ sudo dscl . append /Groups/wheel GroupMembership $USER

Bien que quelque chose d'un marteau inélégant, il a l'effet escompté - permettant l'accès à des éléments /usr/localqui ne sont destinés qu'à être utilisés (lecture / écriture) par des membres surélevés. Cette approche présente les avantages de l'autre ci-dessus car elle tire parti des appartenances aux groupes, permettant à plusieurs utilisateurs (autorisés) sur le système d'utiliser l'homebrew.

Jason R. Coombs
la source
0

Comment avez-vous installé Homebrew? Leurs instructions d'installation officielles incluent l'exécution d'un script ruby. Cela devrait régler les problèmes d'autorisation pour vous.

Si vous ne souhaitez pas exécuter de script, il existe une section de cette page intitulée «Installation sur / usr / local pour les développeurs» qui explique la modification des autorisations nécessaires pour le répertoire / usr / local.

jhuebsch
la source
J'ai utilisé un script et il s'est installé mais il a encore eu des problèmes de mise à jour. J'ai migré les données utilisateur sur un nouvel ordinateur portable. J'ai dû faire quelques solutions de contournement à partir de github b / c, le script n'a pas fonctionné au début.
Ibrahim le
-3

EDIT : Comme mentionné dans les commentaires, c'est une mauvaise idée d'utiliser sudo avec homebrew, alors n'utilisez pas la réponse suivante!


Vous pouvez également éviter cette erreur si vous exécutez la commande avec sudo:

$ sudo brew install wget

Mais attention à l'utiliser sudocar vous pouvez faire beaucoup d'erreurs.

Pascal
la source
Cette approche échoue avec les dernières versions de homebrew qui interdisent l'invocation en tant que root (via sudo).
Jason R. Coombs