J'ai désinstallé et installé 3 fois Homebrew car il semble ne jamais me permettre d'installer quoi que ce soit, car il me refuse les autorisations à la fin de la plupart des installations.
Par exemple, je vais publier ce scénario de téléchargement libjpeg auquel je suis actuellement confronté.
J'essaie d'installer libjpeg et reçois:
$ brew install libjpeg
==> Downloading https://downloads.sf.net/project/machomebrew/Bottles/jpeg-8d.mountain_lion.bottle.1.tar.gz
Already downloaded: /Library/Caches/Homebrew/jpeg-8d.mountain_lion.bottle.1.tar.gz
==> Pouring jpeg-8d.mountain_lion.bottle.1.tar.gz
Warning: Could not link jpeg. Unlinking...
Error: The brew link step did not complete successfully
The formula built, but is not symlinked into /usr/local
You can try again using `brew link jpeg'
Error: Permission denied - /usr/local/opt/jpeg
'brassage lien jpeg' a pour résultat
Error: Permission denied - /usr/local/opt/jpeg
Voici ce que lit mon médecin brasseur
$ brew doctor
Warning: "config" scripts exist outside your system or Homebrew directories.
./configure scripts often look for *-config scripts to determine if
software packages are installed, and what additional flags to use when
compiling and linking.
Having additional scripts in your path can confuse software installed via
Homebrew if the config script overrides a system or Homebrew provided
script of the same name. We found the following "config" scripts:
/Library/Frameworks/Python.framework/Versions/2.7/bin/python-config
/Library/Frameworks/Python.framework/Versions/2.7/bin/python2-config
/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7-config
Warning: You have unlinked kegs in your Cellar
Leaving kegs unlinked can lead to build-trouble and cause brews that depend on
those kegs to fail to run properly once built. Run brew link on these:
jpeg
Ce problème de permission a rendu impossible l'utilisation de la bière et j'apprécierais vraiment toutes les suggestions.
J'ai pu résoudre le problème en utilisant chown
dans le dossier:
Sudo chown -R "$USER":admin /usr/local
De plus, vous devrez (probablement) faire de même sur /Library/Caches/Homebrew
:
Sudo chown -R "$USER":admin /Library/Caches/Homebrew
Apparemment, j'avais déjà utilisé Sudo
d'une manière qui modifiait l'autorisation de mon dossier sur /usr/local
,
Cette réponse est une gracieuseté de du traqueur de problèmes homebrew de gitHub
En tant que première option pour ceux qui atterrissent ici comme moi, suivez ce que cela vous suggère:
brew doctor
C'est le chemin le plus sûr et, entre autres choses, il m'a suggéré de:
Sudo chown -R $(whoami) /usr/local
qui a résolu ce problème d'autorisations.
C'est ce que le PO a fait, mais apparemment, il n'a pas eu la suggestion ci-dessus. vous pouvez, et il est toujours préférable de commencer par là, et ne cherchez ensuite que des solutions non triviales si cela ne vous aide pas.
J'ai eu ce problème ... Une solution de travail consiste à changer la propriété de /usr/local
en utilisateur actuel au lieu de root
par:
Sudo chown -R $(whoami):admin /usr/local
Mais vraiment ce n'est pas une bonne façon. Principalement si votre machine est un serveur ou plusieurs utilisateurs.
Ma suggestion est de changer la propriété comme ci-dessus et de faire ce que vous voulez implémenter avec Brew .. (mettre à jour, installer ... etc) puis réinitialiser la propriété à la racine en tant que:
Sudo chown -R root:admin /usr/local
Cela résoudrait le problème tout en maintenant la propriété bien définie.
La commande de réponse ne votera pas pour moi.
Il a eu la sortie:
chown:/usr/{mon_nom_utilisateur} dmin: nom d'utilisateur illégal
Cette commande fonctionne bien (le groupe pour/usr/local était déjà admin
):
Sudo chown -R $USER /usr/local
Si vous souhaitez une approche légèrement plus ciblée que la couche chown -R
, vous pouvez trouver this fix-homebrew
script utile:
#!/bin/sh
[ -e `which brew` ] || {
echo Homebrew doesn\'t appear to be installed.
exit -1
}
BREW_ROOT="`dirname $(dirname $(which brew))`"
BREW_GROUP=admin
BREW_DIRS=".git bin sbin Library Cellar share etc lib opt CONTRIBUTING.md README.md SUPPORTERS.md"
echo "This script will recursively update the group on the following paths"
echo "to the '${BREW_GROUP}' group and make them group writable:"
echo ""
for dir in $BREW_DIRS ; do {
[ -e "$BREW_ROOT/$dir" ] && echo " $BREW_ROOT/$dir "
} ; done
echo ""
echo "It will also stash (and clean) any changes that are currently in the homebrew repo, so that you have a fresh blank-slate."
echo ""
read -p 'Press any key to continue or CTRL-C to abort.'
echo "You may be asked below for your login password."
echo ""
# Non-recursively update the root brew path.
echo Updating "$BREW_ROOT" . . .
Sudo chgrp "$BREW_GROUP" "$BREW_ROOT"
Sudo chmod g+w "$BREW_ROOT"
# Recursively update the other paths.
for dir in $BREW_DIRS ; do {
[ -e "$BREW_ROOT/$dir" ] && (
echo Recursively updating "$BREW_ROOT/$dir" . . .
Sudo chmod -R g+w "$BREW_ROOT/$dir"
Sudo chgrp -R "$BREW_GROUP" "$BREW_ROOT/$dir"
)
} ; done
# Non-distructively move any git crud out of the way
echo Stashing changes in "$BREW_ROOT" . . .
cd $BREW_ROOT
git add .
git stash
git clean -d -f Library
echo Finished.
Au lieu de faire un chmod
à votre utilisateur, il donne au groupe admin
(auquel vous appartenez probablement) l'accès en écriture aux répertoires spécifiques dans /usr/local
utilisés par homebrew. Il vous indique également exactement ce qu'il compte faire avant de le faire.
Je ne voulais pas encore me fâcher avec les permissions de dossier, alors j'ai fait ce qui suit:
brew doctor
brew upgrade
brew cleanup
J'ai ensuite pu continuer à installer mon autre formule de brassage avec succès.
Dans mon cas, le répertoire/usr/local/Frameworks n'existait même pas.
Sudo mkdir /usr/local/Frameworks
Sudo chown -R $(whoami) /usr/local/Frameworks
Et puis tout a fonctionné comme prévu.
Cela a résolu le problème avant moi.
Sudo chown -R "$USER":admin /Users/$USER/Library/Caches/Homebrew
Sudo chown -R "$USER":admin /usr/local
J'ai résolu mon problème avec ces commandes:
Sudo mkdir /usr/local/Cellar
Sudo mkdir /usr/local/opt
Sudo chown -R $(whoami) /usr/local/Cellar
Sudo chown -R $(whoami) /usr/local/opt
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
Toutes ces suggestions peuvent fonctionner. Dans la dernière version de brasser docteur, de meilleures suggestions ont été faites cependant.
Tout d'abord, corrigez le désordre que vous avez probablement déjà fait avec /usr/local
en l'exécutant dans la ligne de commande:
Sudo chown -R root:wheel /usr/local
Puis prenez possession des chemins qui devraient être spécifiquement pour cet utilisateur:
Sudo chown -R $(whoami) /usr/local/lib /usr/local/sbin /usr/local/var /usr/local/Frameworks /usr/local/lib/pkgconfig /usr/local/share/locale
Toutes ces informations sont disponibles si vous exécutez Sudo brew update
, puis lisez tous les avertissements et erreurs que vous rencontrerez ...
Il y a un script tueur sur github qui corrige les permanentes sur les répertoires/usr/local et brasser pour qu'elles soient accessibles à tous les membres du groupe 'admin'.
https://Gist.github.com/jaibeee/9a4ea6aa9d428bc77925
C'est une meilleure solution que la réponse choisie, car si vous chown les répertoires/usr/local/___ à $ USER, vous cassez tout autre utilisateur administrateur de homebrew sur cette machine.
Voici le courage du script au moment où j'ai posté ceci:
chgrp -R admin /usr/local
chmod -R g+w /usr/local
chgrp -R admin /Library/Caches/Homebrew
chmod -R g+w /Library/Caches/Homebrew
chgrp -R admin /opt/homebrew-cask
chmod -R g+w /opt/homebrew-cask
Pour moi, cela a fonctionné après
brew doctor
Les commandes de changement de permission ont généré une autre erreur
chown: /usr/local: Operation not permitted
Dans mon cas, j'ai eu des problèmes pour supprimer et réinstaller SaltStack.
Après avoir couru:
ls -lah /usr/local/Cellar/salt/
J'ai remarqué que le propriétaire du groupe était "personnel". (En passant, j'utilise macOS Mojave version 10.14.3.) Le groupe d'employés pourrait être lié à la configuration de mon lieu de travail, mais je ne le sais pas vraiment. Quoi qu'il en soit, j'ai préservé le groupe pour m'empêcher de tout casser davantage.
J'ai ensuite couru:
Sudo chown -R "$USER":staff /usr/local/Cellar/salt/
Après cela, j'ai réussi à l'enlever avec cette commande (pas en tant que root):
brew uninstall --force salt
cd /usr/local && Sudo chown -R $(whoami) bin etc include lib sbin share var opt Cellar Frameworks
En fait c'est très simple, exécutez cette commande: brew doctor
Et cela vous indiquera quoi faire pour résoudre les problèmes d'autorisation, par exemple dans mon cas:
C'était le problème:
Warning: The following directories are not writable by your user:
/usr/local/share/man/man5
/usr/local/share/man/man7
Et c'était la solution:
You should change the ownership of these directories to your user.
Sudo chown -R $(whoami) /usr/local/share/man/man5 /usr/local/share/man/man7
Si vous ne possédez pas la dernière version de Homebrew: J'ai "corrigé" cela par le passé en forçant Homebrew à s'exécuter en tant que root, ce qui ne pouvait être fait qu'en modifiant le propriétaire des exécutables Homebrew en root. À un moment donné, ils ont supprimé cette fonctionnalité.
Et je sais qu'ils vont donner beaucoup d'avertissements disant que cela ne devrait pas fonctionner en tant que root, mais allez, ça ne fonctionne pas correctement autrement.
Pour un Mac multi-utilisateur, cela a fonctionné pour moi:
Sudo chown -R $(whoami):admin $(brew --prefix)/*
Sous MacOS Mojave, je n'avais pas l'autorisation de chown
le dossier/usr/local non plus (Sudo chown -R "$USER":admin /usr/local
).
Sudo chown -R "$USER":admin /usr/local/*
a cependant fonctionné pour moi, modifiant les autorisations de tout au sein de le dossier local.
Espérons que cela aidera les autres avec le même problème.
J'ai tout essayé sur cette page, j'ai fini par utiliser cette solution:
brew uninstall --force brew-cask; brew untap $tap_name; brew update; brew cleanup; brew cask cleanup;
Ma situation était similaire à celle de l'OP, mais mon problème était spécifiquement causé par l'utilisation de Sudo avec du breuvage, puis par l'obtention d'un mot de passe incorrect. Après cela, j'ai été bloqué avec des autorisations empêchant l'installation.
Pour résoudre les erreurs pour les autorisations Brew lors de l’exécution du dossier
brew Prune
Cela résoudra les problèmes et nous n’aurons pas à renverser de répertoires.