Homebrew a besoin d'autorisations dans/usr/local et, comme personne d'autre n'utilise mon ordinateur portable, je l'ai toujours fait
Sudo chown -R $(whoami) $(brew --prefix)
mais dans High Sierra, cela donne
chown: /usr/local: Operation not permitted
Quelle est la solution?
Le problème continuait à se produire ... après avoir approfondi, j'ai constaté que la désinstallation puis la réinstallation de Homebrew permettaient de résoudre ce problème.
Désinstallez Homebrew:
/usr/bin/Ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"
Puis réinstallez-le:
/usr/bin/Ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
J'ai suivi ceci mais le problème persiste.
Donc, j'ai réinstallé homebrew sans désinstaller le précédent. Ça marche maintenant!
(Je ne sais pas comment)
Je viens d'exécuter ceci et tout est pris en charge sur High Sierra:
/ usr/bin/Ruby -e "$ (curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install )"
Le problème persiste toujours dans la dernière version de MacOS, c'est-à-dire Mojave
. La désinstallation et la réinstallation de Homebrew ne résolvent pas le problème d’autorisation de répertoire. En fait, cela n’a aucun rapport avec l’installation de Homebrew!
Lorsque nous faisons brew install python
, il verse simplement brasser python puis essaie de créer un lien symbolique sous/usr/local dir pour lequel brew n’a pas l’autorisation. Et lorsque nous essayons d’exécuter Sudo chown -R $(whoami) /usr/local
, cela ne fonctionne pas car il nécessite des privilèges supplémentaires que les utilisateurs Mac ordinaires (c’est-à-dire votre nom d’utilisateur) n’ont pas. Mais comme @Reza l'a mentionné dans sa réponse answer , tout répertoire situé en dessous peut être modifié. émettez simplement la commande suivante:
Sudo chown -R $(whoami) /usr/local/*
Essayez de désactiver Protection de l'intégrité du système . De la documentation:
La protection de l'intégrité du système peut être configurée à l'aide de la commande csrutil (1).
Vous pouvez vérifier si la protection de l'intégrité du système est actuellement activée sur votre système en exécutant la commande suivante dans le terminal:
$ csrutil status
System Integrity Protection status: enabled.
Pour activer ou désactiver la protection de l'intégrité du système, vous devez démarrer sous le système de récupération et exécuter la commande csrutil (1) à partir du terminal.
Démarrez sur le système de récupération en redémarrant votre ordinateur et en maintenant les touches Commande et R enfoncées au démarrage . Lancez Terminal depuis le menu Utilitaires . Entrez la commande suivante:
$ csrutil enable
Après l'activation ou la désactivation de la protection de l'intégrité du système sur une machine, un redémarrage est requis.
si vous utilisez zsh parce que vous venez de bash, vous devrez peut-être changer votre $ PATH . vous devriez ajouter export PATH=$HOME/bin:/usr/local/bin:$PATH
dans .zshrc
alors cela devrait fonctionner, ce problème résolu dans mon mac par cette voie.
Celui-ci a fonctionné de Apple stackexchange
$ cd /usr/local
$ Sudo chown -R <your-username>:<your-group-name> *
nom du groupe généralement staff
et n'oubliez pas le *
Je n'avais pas le dossier/user/local/Frameworks, donc cela a été corrigé pour moi
Sudo mkdir -p /usr/local/Frameworks
Sudo chown -R $(whoami) /usr/local/Frameworks
J'ai OSX High Sierra
Assurez-vous de ne pas définir de verrou sur le dossier de départ ou sur un dossier auquel une installation a besoin d'accéder.
Même si les autorisations et la propriété sont définies correctement et que vous êtes actuellement connecté avec un utilisateur/utilisateur racine correct, cela ne vous permettra pas de créer de nouveaux dossiers ou répertoires.