Brew docteur dit:
Attention:/usr/local/include n'est pas accessible en écriture. Cela peut arriver si vous utilisez un logiciel "Sudo make install" qui n'est pas géré par Homebrew.
Si une bière essaie d'écrire un fichier d'en-tête dans ce répertoire, installez échouera pendant l'étape de lien.
Vous devriez probablement
chown
/usr/local/include
J'ai essayé différentes commandes pour résoudre ce problème, mais je suis toujours coincé ici.
Je lance homebrew le 10.8.2
En prendre possession et tout ce qu’il contient.
Mac OS High Sierra ou plus récent: (merci à Kirk dans les commentaires ci-dessous)
$ Sudo chown -R $(whoami) $(brew --prefix)/*
Versions précédentes de macos:
$ Sudo chown -R $USER:admin /usr/local/include
Alors fais un autre
$ brew doctor
Ce qui a fonctionné pour moi aussi
Sudo chmod g+w /usr/local
Sudo chgrp staff /usr/local
Ce qui a fonctionné pour moi était
$ Sudo chown -R yourname:admin /usr/local/bin
Le seul qui a fonctionné pour moi sur El Capitan était:
Sudo chown -R $(whoami) /usr/local
Pour High Sierra:
/usr/bin/Ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Ensuite, essayez vos commandes d'infusion.
Si vous vous trouvez sur High Sierra et que vous rencontrez ce problème, suivez les étapes ci-dessous ( Remarque: vous ne pouvez pas afficher/usr/local dans High Sierra ):
Sudo mkdir /usr/local/include
Sudo chown -R $(whoami) $(brew --prefix)/*
Ensuite, essayez de lier avec lien de brassage. Je rencontrais un problème similaire et aucune des solutions ci-dessus ne fonctionnait pour High Sierra. J'espère que ça aide quelqu'un.
Vous pouvez aliaser la commande pour résoudre ce problème dans votre .bash_profile
et l'exécuter à chaque fois que vous le rencontrez:
À la fin du fichier ~/.bash_profile
, ajoutez:
alias fix_brew='Sudo chown -R $USER /usr/local/'
Et maintenant, dans votre terminal, vous pouvez exécuter:
$ fix_brew
Pour certains, ça va être:
Sudo chown -R JonJames:admin /usr/local/lib
où "lib" est utilisé par opposition à "bin" ou "include" ou "autre chose"
Le Homebrew Warning "devrait" expliquer ce qui n’est pas en écriture, puis vous donner une syntaxe de commande à suivre. Toutefois, vous devrez utiliser le ":" par opposition à ce que Warning mentionne, ce qui n’est pas la syntaxe correcte ?
Travaille pour moi
$ Sudo chown -R $(whoami):admin /usr/local
$ cd /usr/local/Library && git stash && git clean -d -f
Même erreur sur MacOS 10.13
/usr/local/include
et /usr/local/
/usr/lib
n'ont pas été créés. J'ai créé manuellement et brew link
a finalement fonctionné.
Vous devez créer/usr/local/include et/usr/local/lib s'ils n'existent pas:
$ Sudo mkdir -p /usr/local/include
$ Sudo chown -R $USER:admin /usr/local/include
Vous devez maîtriser l'intégralité de /usr/local
pour pouvoir effectuer une chown
récursive sous /usr/local
Sudo chown -R YOUR_USERNAME:admin /usr/local/
Vous devez d’abord créer le répertoire:
Sudo mkdir /usr/local/include
Seconde:
Sudo chown -R $(whoami) $(brew --prefix)/*
Allez dans le répertoire/bin et tapez:
chown -R $ (whoami): admin/usr/local/bin
Je veux simplement faire écho au commentaire modeste de sam9046 comme solution alternative et potentiellement beaucoup plus simple qui a fonctionné dans mon cas: uninstall et install homebrew à nouveau. Aucune commande Sudo requise.
Vous pouvez également parcourir/modifier le script de désinstallation à partir du lien ci-dessus si vous devez vous assurer qu'il n'affectera pas vos packages précédemment installés. Dans mon cas, c'était juste ma machine à la maison, alors je viens de recommencer.
Sudo mkdir -p /usr/local/include /usr/local/lib /usr/local/sbin
Sudo chown -R $(whoami) /usr/local/include /usr/local/lib /usr/local/sbin
Cela créera tous les répertoires requis et lui donnera la propriété correcte.
Après avoir exécuté ces commandes, vérifiez avec: brew doctor
Cela fonctionne pour Mojave.
C'est ce qui s'est produit dans mon organisation après que tous nos utilisateurs aient été liés à Active Directory (modification effective de l'UID de 50x à ######).
Il s’agit maintenant simplement de changer la propriété de tous les fichiers appartenant à x en y.
Où 501 est mon ancien identifiant d'utilisateur numérique qui est toujours associé à tous les fichiers homebrew.
L'ancien ID utilisateur peut être trouvé en utilisant ll /usr/local/Cellar
Maintenant, mettez à jour la propriété Sudo find /usr/local -user 501 -exec chown -h $USER {} \;
De cette manière, nous évitons de modifier la propriété des fichiers non contrôlés par homebrew ou appartenant à un autre utilisateur du système.