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"
Sudo mkdir /usr/local/Frameworks
Sudo chown $(whoami):admin /usr/local/Frameworks
brew link python3
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.
/usr/local
ne peut plus être chown dans High Sierra. Utilisez plutôt
Sudo chown -R $(whoami) $(brew --prefix)/*
Désinstaller et effectuer une nouvelle installation de homebrew résoudra le problème.
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
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)"
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
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
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.
Je viens de faire ça et ça a fonctionné
Sudo touch /usr/local/Frameworks
brew link python
Sudo mkdir /usr/local/Frameworks
Sudo chown $USER /usr/local/Frameworks
Et essayez ensuite de réinstaller python. Cela a fonctionné parfaitement pour moi.
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 .