Wie muss ich Homebrew manuell in das / usr / local-Unterverzeichnis installieren?

685
brodybits

Manuelle Installationsanweisungen in docs.brew.sh sind sehr kurz und unbefriedigend, was zu einigen Fehlern führt, wenn ich es in einem Unterverzeichnis von versuche, /usr/localohne es zu verwenden sudo. Die Anweisungen in dieser Frage sind zusammen mit der akzeptierten Antwort etwas besser, funktionieren jedoch auch nicht ohne Verwendung sudo.

Ich verstehe, dass ich möglicherweise verwenden muss, sudoum Homebrew selbst zu installieren, aber ich hoffe, ich muss nicht weiterhin sudoneue Pakete installieren, aktualisieren usw. (Standard Homebrew-Installationsskripts scheinen zu verwenden, sudoaber nur wenn es absolut notwendig ist, während das Standardergebnis das ist sudoNeue Pakete, Updates usw. müssen nicht installiert werden.)

Wie muss ich Homebrew manuell in ein /usr/localUnterverzeichnis installieren ?

Motivation für das manuelle Installationsinfo- /usr/localUnterverzeichnis:

  • Die manuelle Installation gibt mir die beste Kontrolle über den Installations- und Verwaltungsprozess von Homebrew.
  • Die Installation in einem Unterverzeichnis meines Heimatverzeichnisses ist nicht ideal, da Homebrew eine Kombination aus lokal erstellten Paketen und systemweiten Paketen verwaltet.

Motivation, um zu vermeiden, dass der Benutzer sudonach der Installation verwendet werden muss:

  • Konsistenz mit der Standardinstallation
  • einfacher, vorhandene Homebrew-Pakete zu verwalten
  • geringeres Sicherheitsrisiko, wenn Homebrew selbst oder Homebrew-Pakete den Benutzer nicht dazu zwingen, einige Dinge als root auszuführen
0
Warum ist die Verwendung von Sudo ein Problem (in der Frage möglicherweise eine Erwähnung wert)? fixer1234 vor 5 Jahren 1
@ fixer1234 wird in der frage geklärt. brodybits vor 5 Jahren 0
Nennen Sie mich verrückt, aber warum verwenden Sie nicht die [offizielle Installationsmethode, die hier auf der offiziellen Homebrew-Site angezeigt wird] (https://brew.sh): `/ usr / bin / ruby ​​-e" $ (curl -fsSL https: //raw.githubusercontent.com/Homebrew/install/master/install) "". Ich habe das schon immer gemacht und habe aus irgendeinem Grund niemals "Sudo Brew" verwendet. JakeGould vor 5 Jahren 1
Die Standardinstallation von Homebrew vermeidet, dass Sudo nach der Installation verwendet werden muss, und obwohl es wahr ist, haben Sie keine Kontrolle darüber, was mit der "offiziellen" Methode vor sich geht. Sie erstellen lediglich Unterverzeichnisse in `/ usr / local 'mit dem Benutzer als Eigentümer (um Sudo später zu vermeiden). Daher verstehe ich die Motivation für das manuelle Vorgehen nicht wirklich, da ich alle Details selbst richtig machen muss. dirkt vor 5 Jahren 0

1 Antwort auf die Frage

0
brodybits

HINWEIS: Bei dieser Antwort wird davon ausgegangen, dass der macOS-Benutzer als Administrator eingerichtet ist.

WICHTIG: Nicht verwenden, es sudosei denn, dies ist unbedingt erforderlich. Das Endergebnis sollte eine Homebrew-Installation sein, die sudonie wieder verwendet werden muss.

Erstellen Sie zunächst ein temporäres Verzeichnis /usr/localmit sudo(Geben Sie das Kennwort ein, wenn Sie dazu aufgefordert werden):

sudo mkdir /usr/local/brewtmp1 

Überprüfen Sie die Ergebnisse von ls -l /usr/local:

total 0 drwxr-xr-x 2 root wheel 64 Jul 2 16:16 brewtmp1 

Bestimmen Sie den Besitz des Benutzers und der Gruppe des temporären Verzeichnisses:

sudo chown $USER:admin brewtmp1 

Überprüfen Sie die Ergebnisse ls -l /usr/localerneut:

total 0 drwxr-xr-x 2 brodybits admin 64 Jul 2 16:16 brewtmp1 

Dann laden und extrahieren Sie im temporären Verzeichnis den Inhalt des masterZweigs von Homebrew / brew auf GitHub, ohne sudoFolgendes zu verwenden :

cd /usr/local/brewtmp1 curl -L https://github.com/Homebrew/brew/tarball/master | tar xz 

Überprüfen Sie die Ergebnisse von ls -linnerhalb /usr/local/brewtmp1:

total 0 drwxr-xr-x 16 brodybits admin 512 Jul 2 14:46 Homebrew-brew-cbc3184 

Überprüfen Sie die Ergebnisse von ls -l Homebrew-brew-*:

total 48 -rw-r--r-- 1 brodybits admin 98 Jul 2 14:46 CHANGELOG.md -rw-r--r-- 1 brodybits admin 3161 Jul 2 14:46 CODE_OF_CONDUCT.md -rw-r--r-- 1 brodybits admin 720 Jul 2 14:46 CONTRIBUTING.md -rw-r--r-- 1 brodybits admin 1334 Jul 2 14:46 LICENSE.txt drwxr-xr-x 7 brodybits admin 224 Jul 2 14:46 Library -rw-r--r-- 1 brodybits admin 7374 Jul 2 14:46 README.md drwxr-xr-x 3 brodybits admin 96 Jul 2 14:46 bin drwxr-xr-x 5 brodybits admin 160 Jul 2 14:46 completions drwxr-xr-x 48 brodybits admin 1536 Jul 2 14:46 docs drwxr-xr-x 5 brodybits admin 160 Jul 2 14:46 manpages 

Dies sollte den Inhalt von Homebrew mit dem richtigen Benutzer und der richtigen Gruppe anzeigen.

Umbenennen Homebrew-brew-???????in homebrew (ohne Verwendung von sudo) (es sollte in Ordnung sein, einen anderen Namen zu verwenden, mit Anpassungen an anderen Schritten unten):

mv Homebrew-brew-??????? homebrew 

und überprüfen Sie die Ergebnisse von ls -l:

total 0 drwxr-xr-x 16 brodybits admin 512 Jul 2 14:46 homebrew 

Verschieben Sie das neue homebrewVerzeichnis an die richtige Stelle mit sudo:

sudo mv /usr/local/brewtmp1/homebrew /usr/local 

Überprüfen Sie die Ergebnisse von ls -l /usr/local:

total 0 drwxr-xr-x 2 brodybits admin 64 Jul 2 16:20 brewtmp1 drwxr-xr-x 16 brodybits admin 512 Jul 2 14:46 homebrew 

Fügen Sie der Profildatei ( .profileoder .bash_profilegegebenenfalls) die folgende Zeile hinzu (wie in dieser Antwort auf eine andere Frage angegeben ):

export PATH=/usr/local/homebrew/bin:$PATH 

Starten Sie die Shell neu, starten Sie eine neue Shell oder stellen Sie die Profildatei bereit. Überprüfen Sie das which brewzeigt /usr/local/homebrew/bin/brew. Überprüfen Sie, brew --versionob das funktioniert (obwohl es nicht homebrew-coreinstalliert ist), zum Beispiel:

Homebrew >=1.4.0 (shallow or no git repository) Homebrew/homebrew-core N/A 

Es wird brew doctoran dieser Stelle empfohlen, die homebrew-coreordnungsgemäße Installation einzuschließen und zu überprüfen. Möglicherweise wird eine Warnung zu einem nicht standardmäßigen Homebrew-Präfix ausgegeben. Dies sollte jedoch bei den meisten Paketen ein Problem sein. Dann brew --versionsollte homebrew-coreenthalten enthalten:

Homebrew >=1.4.0 (shallow or no git repository) Homebrew/homebrew-core (git revision 2f937; last commit 2018-07-02) 

Installieren Sie eine einfache Formel wie autoconf:

brew install autoconf 

autoconf --version sollte jetzt zeigen, dass es installiert ist.

So deaktivieren Sie die Analyse (dank diesem Artikel muss nach der Installation eines Pakets geschehen):

brew analytics off 

ls -l /usr/local/homebrew sollte jetzt so aussehen:

total 48 -rw-r--r-- 1 brodybits admin 98 Jul 2 16:43 CHANGELOG.md -rw-r--r-- 1 brodybits admin 3161 Jul 2 16:43 CODE_OF_CONDUCT.md -rw-r--r-- 1 brodybits admin 720 Jul 2 16:43 CONTRIBUTING.md drwxr-xr-x 3 brodybits admin 96 Jul 2 16:43 Cellar -rw-r--r-- 1 brodybits admin 1334 Jul 2 16:43 LICENSE.txt drwxr-xr-x 8 brodybits admin 256 Jul 2 16:43 Library -rw-r--r-- 1 brodybits admin 7374 Jul 2 16:43 README.md drwxr-xr-x 10 brodybits admin 320 Jul 2 16:43 bin drwxr-xr-x 5 brodybits admin 160 Jul 2 16:43 completions drwxr-xr-x 48 brodybits admin 1536 Jul 2 16:43 docs drwxr-xr-x 3 brodybits admin 96 Jul 2 16:43 etc drwxr-xr-x 5 brodybits admin 160 Jul 2 16:43 manpages drwxr-xr-x 4 brodybits admin 128 Jul 2 16:43 opt drwxr-xr-x 8 brodybits admin 256 Jul 2 16:43 share drwxr-xr-x 3 brodybits admin 96 Jul 2 16:42 var 

Es wird jetzt empfohlen, einige möglicherweise fehlende Verzeichnisse hinzuzufügen und einige Verzeichnisberechtigungen zu korrigieren, damit sie mit den Ergebnissen des Homebrew-Installationsskripts übereinstimmen (ich möchte brew doctordies prüfen und anbieten, sich um diesen Teil zu kümmern):

cd /usr/local/homebrew mkdir -p include Caskroom Cellar lib opt share var chmod g+w include Caskroom Cellar lib opt share var 

Und zum Schluss bereinigen /usr/local/brewtmp1(mit sudo):

sudo rm -rf /usr/local/brewtmp1 

Zusätzliche Lektüre und andere Ressourcen: