web-dev-qa-db-fra.com

Comment réparer les autorisations sur Home-brew sur MacOS High Sierra

Lorsque j'ai essayé d'installer python sur home-brew, il l'a téléchargé, puis un message d'erreur est apparu à la fin, l'empêchant de terminer. Quand j'essaie de le refaire, il me demande de faire:

$ brew link python

Après avoir entré que le même message d'erreur apparaît:

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

Et je reçois un message d'erreur qui se lit comme suit: "Chown:/usr/local: opération non autorisée"

27
Jonathan
Sudo mkdir /usr/local/Frameworks
Sudo chown $(whoami):admin /usr/local/Frameworks    
brew link python3
54
gfly

J'ai essayé et eu cette même sortie (je pense):

Error: An unexpected error occurred during the `brew link` step
The formula built, but is not symlinked into /usr/local
Permission denied @ dir_s_mkdir - /usr/local/Frameworks
Error: Permission denied @ dir_s_mkdir - /usr/local/Frameworks

J'ai donc créé un répertoire/usr/local/Frameworks en tant que root, puis j'ai changé le propriétaire:

Sudo mkdir /usr/local/Frameworks && chown $USER:admin /usr/local/Frameworks

J'ai réessayé brew install python:

Warning: python 2.7.14 is already installed, it's just not linked.
You can use `brew link python` to link this version.

Et puis brew link python:

Linking /usr/local/Cellar/python/2.7.14... 26 symlinks created

Maintenant, dans le répertoire /usr/local/Frameworks/Python.framework/, je peux voir des liens, par exemple:

lrwxr-xr-x 1 niquit admin  62 Dec  8 21:41 /usr/local/Frameworks/Python.framework/Headers -> ../../Cellar/python/2.7.14/Frameworks/Python.framework/Headers/
lrwxr-xr-x 1 niquit admin  61 Dec  8 21:41 /usr/local/Frameworks/Python.framework/Python -> ../../Cellar/python/2.7.14/Frameworks/Python.framework/Python*
lrwxr-xr-x 1 niquit admin  64 Dec  8 21:41 /usr/local/Frameworks/Python.framework/Resources -> ../../Cellar/python/2.7.14/Frameworks/Python.framework/Resources/

Dans votre cas, je suggère de créer manuellement/usr/local/lib:

Sudo mkdir /usr/local/lib && chown $USER:admin /usr/local/lib

A fait un test par mv /usr/local/lib{,.orig}, et j'ai eu:

Error: An unexpected error occurred during the `brew link` step
The formula built, but is not symlinked into /usr/local
Permission denied @ dir_s_mkdir - /usr/local/lib
Error: Permission denied @ dir_s_mkdir - /usr/local/lib

Comme auparavant, j'ai créé manuellement le répertoire Sudo mkdir /usr/local/lib && chown $USER:admin /usr/local/lib, et j'ai réussi à brew link python:

Linking /usr/local/Cellar/python/2.7.14... 324 symlinks created

Maintenant je peux trouver des liens:

lrwxr-xr-x 1 niquit admin  54 Dec  8 22:01 python-2.7.pc -> ../../Cellar/python/2.7.14/lib/pkgconfig/python-2.7.pc
lrwxr-xr-x 1 niquit admin  50 Dec  8 22:01 python.pc -> ../../Cellar/python/2.7.14/lib/pkgconfig/python.pc
lrwxr-xr-x 1 niquit admin  51 Dec  8 22:01 python2.pc -> ../../Cellar/python/2.7.14/lib/pkgconfig/python2.pc

Je pense que, après la dernière mise à jour, Apple a renforcé la sécurité. Il est donc impossible de créer le répertoire maintenant dans/usr/sans autorisation root.

8
Niquit

/usr/local ne peut plus être chown dans High Sierra. Utilisez plutôt

Sudo chown -R $(whoami) $(brew --prefix)/*
6
H. Gourlé

Désinstaller et effectuer une nouvelle installation de homebrew résoudra le problème.

4
Walrus the Cat

Exécutez ceci et suivez ses suggestions:

brew doctor

Dans mon cas, il voulait que je me lance:

Sudo mkdir -p /usr/local/sbin /usr/local/Frameworks
Sudo chown -R $(whoami) /usr/local/sbin /usr/local/Frameworks
2
Chris

J'ai réinstallé le breuvage et résolu le problème. 

pour désinstaller, utilisez la commande suivante. 

Ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"

et installer à nouveau la bière. 

/usr/bin/Ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
1
Johnny Chia

Dans mon cas avec MacOS 10.14, nouvelle installation sur une nouvelle machine:

brew doctor

Et cela suggère:

Sudo mkdir -p /usr/local/lib /usr/local/sbin
Sudo chown -R $(whoami) /usr/local/lib /usr/local/sbin
1
Bill Chan
brew doctor

Cette commande, comme suggéré par Chris ci-dessus dans les commentaires, a résolu presque TOUS mes problèmes de brassage à la maison sur un Mac Mini 2011 5.1 exécutant officieusement MacOS Mojave. Entrez simplement cela et suivez toutes les instructions imprimées par le terminal

1
Tyler Kehrein

macOS fournit un certain nombre de moyens pour contrôler l'accès aux fichiers, au-delà des autorisations traditionnelles accordées aux utilisateurs, aux groupes et autres. Cela inclut les listes de contrôle d'accès (ACL), les indicateurs de fichier, les attributs étendus (xattrs) et, plus récemment, la protection de l'intégrité du système d'Apple.

Je parie que si vous exécutez ls -lO /usr/, pour répertorier les drapeaux, vous verrez uchg devant /usr/local, qui indique au système de rendre le fichier immuable pour tout utilisateur. (u dans uchg signifie que le propriétaire du fichier peut modifier cet indicateur . Ni le propriétaire ni aucun autre utilisateur ne peut modifier le fichier lui-même.)

Pour résoudre le problème, vous devez d'abord supprimer l'indicateur en exécutant: chflags nouchg /usr/local. Cela devrait supprimer l'indicateur uchg, que vous devrez vérifier à nouveau avec ls -lO. Si un autre indicateur, tel que schg, est défini, utilisez noschg ou no<flag> en général, mais vous aurez besoin de Sudo les commandes lorsque l'indicateur commence par s.

À ce stade, vous aurez peut-être encore besoin de chown le répertoire, avec Sudo chown -R $(whoami) /usr/local. Vous devriez maintenant posséder le répertoire et les outils Homebrew devraient fonctionner correctement.

0
bnaecker

Je viens de faire ça et ça a fonctionné

Sudo touch /usr/local/Frameworks
brew link python
0
charles ross
Sudo mkdir /usr/local/Frameworks

Sudo chown $USER /usr/local/Frameworks

Et essayez ensuite de réinstaller python. Cela a fonctionné parfaitement pour moi.

0
Shaul Hameed

Comme mentionné par henrikstroem, les backticks peuvent être utiles et, comme mentionné par bnaecker, des attributs spéciaux peuvent également entraver le processus.

Vous pouvez également essayer d'exécuter la commande directement en tant que root pour voir si de meilleurs résultats sont obtenus, en effectuant Sudo su -, puis chown -R username /usr/local.

Mais êtes-vous sûr que c'est vraiment ce que vous voulez? Il peut être plus intéressant de créer un groupe disposant d'un accès (comme chown -R originaluser:group /usr/local, de définir les droits souhaités et/ou de faire de l'utilisateur un membre de ce groupe .

0
user1747036