wake-up-neo.com

Wie korrigiere ich homebrew-Berechtigungen?

Ich habe Homebrew jetzt 3 Mal deinstalliert und installiert, da es mir anscheinend niemals erlaubt ist, irgendetwas zu installieren, da mir am Ende der meisten Installationen Berechtigungen verweigert werden.

Als Beispiel werde ich dieses Libjpeg-Download-Szenario veröffentlichen, mit dem ich gerade konfrontiert bin.

Ich versuche libjpeg zu installieren und bekomme:

$ 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

'Brew Link JPEG' ergibt 

Error: Permission denied - /usr/local/opt/jpeg

Hier lesen meine Braudoktorinnen

$ 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

Diese Erlaubnisfrage hat es unmöglich gemacht, brew mit irgendetwas zu verwenden, und ich würde mich über Anregungen sehr freuen.

450
Saturnino

Ich konnte das Problem mithilfe von chown für den Ordner lösen: 

Sudo chown -R "$USER":admin /usr/local

Sie müssen (wahrscheinlich) dasselbe auch für /Library/Caches/Homebrew tun:

Sudo chown -R "$USER":admin /Library/Caches/Homebrew

Anscheinend hatte ich Sudo zuvor so verwendet, dass meine Ordnerberechtigung für /usr/local, Geändert wurde. Von nun an haben sich alle Installationen mit brew als erfolgreich erwiesen.

Diese Antwort stammt von gitHub's Homebrew Issue Tracker

869
Saturnino

Neuer Befehl für Benutzer unter macOS High Sierra, da es nicht möglich ist, chown auf /usr/local Zu setzen:

Sudo chown -R $(whoami) $(brew --prefix)/*

hinweis: Kann/usr/local in High Sierra nicht chown

328
andrewwong97

Als erste Option für alle, die wie ich hier landen, folgen Sie den Anweisungen, die Sie vorschlagen:

brew doctor

Es ist der sicherste Weg und unter anderem hat es mir empfohlen,

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

welches das Berechtigungsproblem gelöst hat.

Das OP hat genau das getan, aber anscheinend wurde der obige Vorschlag nicht verstanden. Sie könnten und es ist immer besser, dort zu beginnen und dann nur nach nicht trivialen Lösungen zu suchen, wenn dies nicht geholfen hat.

213
Nycen

Wenn Sie sich in OSX High Sierra befinden, kann /usr/local Nicht mehr chown 'd sein. Sie können verwenden:

Sudo chown -R $(whoami) $(brew --prefix)/*

65
Richard

Ich hatte dieses Problem ... Eine funktionierende Lösung besteht darin, den Besitzer von /usr/local in den aktuellen Benutzer anstelle von root zu ändern:

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

Aber das ist wirklich kein richtiger Weg. Hauptsächlich, wenn Ihr Computer ein Server oder mehrere Benutzer ist.

Mein Vorschlag ist, den Eigentümer wie oben beschrieben zu ändern und zu tun, was immer Sie mit Brew implementieren möchten. (Aktualisieren, Installieren usw.)

  Sudo chown -R root:admin /usr/local

Das würde das Problem lösen und den Besitz in der richtigen Menge halten.

27
Maher Abuthraa

Befehl von oben gewählt Antwort arbeite nicht für mich.

Es wurde ausgegeben:

chown:/usr/{mein_Benutzername} dmin: unzulässiger Benutzername

Dieser Befehl funktioniert gut (Gruppe für/usr/local war admin bereits):

Sudo chown -R $USER /usr/local
14
skywinder

Wenn Sie einen etwas zielgerichteteren Ansatz als die Decke chown -R wünschen, können Sie dieses fix-homebrew script nützlich finden:

#!/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.

Anstatt eine chmod für Ihren Benutzer auszuführen, erhält die admin-Gruppe (zu der Sie vermutlich gehören) Schreibzugriff auf die spezifischen Verzeichnisse in /usr/local, die von der Homebrew verwendet werden. Es sagt Ihnen auch genau, was Sie tun möchten, bevor Sie es tun.

12
darco

Ich wollte mich noch nicht mit Ordnerberechtigungen herumschlagen, also habe ich Folgendes getan:

brew doctor
brew upgrade
brew cleanup 

Ich konnte dann meine weitere Brühreife erfolgreich installieren.

10
Anthony To

In meinem Fall gab es die/usr/local/-Frameworks nicht einmal.

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

Und dann hat alles wie erwartet funktioniert.

8

Dies löste das Problem für mich.

Sudo chown -R "$USER":admin /Users/$USER/Library/Caches/Homebrew
Sudo chown -R "$USER":admin /usr/local
7
Fardin

Ich habe mein Problem mit diesen Befehlen gelöst:

Sudo mkdir /usr/local/Cellar
Sudo mkdir /usr/local/opt
Sudo chown -R $(whoami) /usr/local/Cellar
Sudo chown -R $(whoami) /usr/local/opt
6
hardc0der

Ich hatte den /user/local/Frameworks-Ordner nicht, daher wurde dieser Fehler behoben

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

Ich habe OSX High Sierra

6

Alle diese Vorschläge können funktionieren. In der neuesten Version des Braudoktors wurden jedoch bessere Vorschläge gemacht.

Erstens: Beheben Sie das Chaos, das Sie wahrscheinlich bereits aus /usr/local gemacht haben, indem Sie es in der Befehlszeile ausführen:

Sudo chown -R root:wheel /usr/local

Dann übernehmen Sie die Pfade, die speziell für diesen Benutzer bestimmt sein sollten:

Sudo chown -R $(whoami) /usr/local/lib /usr/local/sbin /usr/local/var /usr/local/Frameworks /usr/local/lib/pkgconfig /usr/local/share/locale

Alle diese Informationen sind verfügbar, wenn Sie Sudo brew update ausführen und dann alle Warnungen und Fehler lesen, in denen Sie auftreten werden.

5
Max Dercum

Auf github gibt es ein Killerskript, das die Dauer der Perms in/usr/local und die Brew-Verzeichnisse so fixiert, dass jeder, der Mitglied der Gruppe "admin" ist, darauf zugreifen kann. 

https://Gist.github.com/jaibeee/9a4ea6aa9d428bc77925

Dies ist eine bessere Lösung als die gewählte Antwort. Wenn Sie die Verzeichnisse/usr/local/___ auf $ USER setzen, brechen Sie alle anderen Admin-Benutzer von Homebrew auf diesem Computer.

Hier sind die Hintergedanken des Skripts zu der Zeit, als ich dies gepostet habe:

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
3
TheProletariat

Bei mir funktionierte es danach

brew doctor 

Änderungsberechtigungsbefehle führten zu einem anderen Fehler

chown: /usr/local: Operation not permitted

2
Krishnadas PC

In meinem Fall habe ich Probleme beim Entfernen und erneuten Installieren von SaltStack.

Nach dem Rennen:

ls -lah /usr/local/Cellar/salt/

Mir ist aufgefallen, dass der Gruppeninhaber "Mitarbeiter" war. (Übrigens, ich verwende macOS Mojave Version 10.14.3.) Die Mitarbeitergruppe könnte mit meiner Arbeitsplatzkonfiguration zusammenhängen, aber ich weiß es nicht genau. Trotzdem habe ich die Gruppe erhalten, um zu verhindern, dass ich etwas weiter zerstöre.

Ich lief dann:

Sudo chown -R "$USER":staff /usr/local/Cellar/salt/

Danach konnte ich es mit diesem Befehl erfolgreich entfernen (nicht als root):

brew uninstall --force salt
1
devinbost
cd /usr/local && Sudo chown -R $(whoami) bin etc include lib sbin share var opt Cellar Frameworks
1
Girish Gupta

Eigentlich ist es wirklich einfach, diesen Befehl auszuführen: brew doctor

Und Sie erfahren, was Sie tun müssen, um Berechtigungsprobleme zu beheben, beispielsweise in meinem Fall: 

Das war das Problem: 

Warning: The following directories are not writable by your user:
/usr/local/share/man/man5
/usr/local/share/man/man7

Und das war die Lösung: 

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
1
Arsalan Mehmood

Wenn Sie nicht über das neueste Homebrew verfügen: Ich habe dieses Problem in der Vergangenheit "behoben", indem Sie Homebrew zwangsweise als Root ausgeführt haben, was nur durch Ändern des Besitzes der ausführbaren Dateien von Homebrew in Root möglich war. Irgendwann haben sie diese Funktion entfernt.

Und ich weiß, dass sie eine Menge Warnungen geben, die besagen, dass es nicht als root laufen sollte, aber komm schon, sonst funktioniert es nicht richtig.

0
sudo

Bei einem Mehrbenutzer-Mac funktionierte dies für mich:

Sudo chown -R $(whoami):admin $(brew --prefix)/*
0

Unter MacOS Mojave hatte ich auch keine Berechtigung, den Ordner/usr/local zu chown (Sudo chown -R "$USER":admin /usr/local).

Sudo chown -R "$USER":admin /usr/local/* funktionierte jedoch für mich und änderte die Berechtigungen von allem innerhalb des lokalen Ordners.

Hoffentlich hilft dies anderen bei dem gleichen Problem.

0
poepje

Ich habe alles auf dieser Seite ausprobiert und diese Lösung verwendet: 

brew uninstall --force brew-cask; brew untap $tap_name; brew update; brew cleanup; brew cask cleanup;

Meine Situation war ähnlich wie bei der OP, mein Problem wurde jedoch insbesondere dadurch verursacht, dass Sudo mit Braufassing ausgeführt wurde und dann mein Passwort falsch war. Danach blieb ich bei den Berechtigungen, die die Installation verhindern.

0
Alpha G33k

So beheben Sie Fehler für die Brew-Berechtigungen für die Ordnerausführung 

brew Prune

Dadurch werden die Probleme gelöst und wir müssen keine Verzeichnisse auswählen. 

0
Catto