Puis-je installer Homebrew sans privilèges sudo?

26

Homebrew autorise bien les installations de packages sans les privilèges sudo, mais il semble que j'ai besoin des privilèges d'administrateur pour installer Homebrew lui-même.

Je voudrais installer Homebrew dans un environnement Mac où je n'ai pas de privilèges sudo ou admin. Est-ce possible?

BenjaminGolder
la source

Réponses:

12

Non .. Sauf si vous faites une opération chirurgicale importante.

La raison en est que Homebrew insiste fortement sur l'installation de packages dans /usr/local. En fait, même si vous l'avez forcé à installer ailleurs, vous risquez de casser les dépendances lorsque vous utilisez brew installpour installer des packages. La plupart, sinon la totalité, de ces packages sont précompilés et liés en attendant de vivre /usr/local.

La raison de cette insistance est que /usr/localc'est précisément là où POSIX recommande que des trucs comme celui-ci soient installés. Afin de créer /usr/localHomebrew a besoin d'informations d'identification d'administrateur temporaires pour créer le répertoire et attribuer la propriété.

C'est à son tour ce qui vous permet d'installer quoi que ce soit d'autre sans augmenter les informations d'identification.

David Hoelzer
la source
Merci, mais je pense que vous avez manqué ma question. Je sais comment et où il installe les packages, mais je veux installer Homebrew sans administrateur ni sudo.
BenjaminGolder
Je n'ai pas raté votre question. La réponse a été "Non" .. J'ai juste dit "Oui" accidentellement. Vous ne pouvez pas facilement faire ce que vous demandez et même si vous l'avez forcé en modifiant le programme d'installation de Homebrew pour mettre les choses dans une branche hors de votre répertoire personnel, beaucoup de brews échoueraient probablement après l'installation.
David Hoelzer
d'accord merci. J'ai été confus par le précédent "Oui".
BenjaminGolder
3
C'est tout simplement faux, ou du moins votre définition de «chirurgie importante» est très différente de la mienne. J'exécute brewavec un préfixe défini dans mon répertoire personnel depuis plus de 5 ans et j'ai rencontré 1 ou 2 packages cassés pendant cette période.
James McMahon
Cependant, il y a aussi cela, qui est difficile à contourner: Erreur: Vous n'avez pas accepté la licence Xcode. Veuillez résoudre ce problème en exécutant: sudo xcodebuild -license accept
Albert
17

Oui.

J'ai modifié le script d'installation pour ne pas utiliser sudoet utiliser un répertoire de votre choix. https://gist.github.com/skyl/36563a5be809e54dc139

Téléchargez-le, définissez YOUR_HOMEdans le script le chemin absolu. chmod +xle script. Créez le YOUR_HOME/usr/localrépertoire. Ensuite, exécutez le script.

./install.rb

Dans .bash_profile, je mets (je ne suis pas sûr que ce soit important, assez sûr):

export HOMEBREW_PREFIX=/The/path/to/YOUR_HOME/usr/local

Maintenant je peux:

brew install wget

Assurez-vous que le binrépertoire, YOUR_HOME+ /usr/local/binest sur votre $PATH.

which wget
Skylar Saveland
la source
1
Dans le script d'installation, j'ai également dû ajouter un #{YOUR_HOME}préfixe à la HOMEBREW_CACHEvariable. Cela, et parce que l'administrateur système avait déjà homebrew installé, je devais ajouter export PATH=/path/to/home/usr/local/bin:$PATHà .bash_profileaussi bien. Mais avec tout cela, cela semble très bien fonctionner.
golmschenk
3
Je viens de recommencer le processus, et je voulais juste mentionner que vous devez également créer un usrrépertoire dans votre répertoire personnel avant que le script ne s'exécute. De plus, lorsque vous ajoutez #{YOUR_HOME}à la HOMEBREW_CACHEvariable, il semble que vous devez changer les guillemets simples en guillemets doubles pour que cela fonctionne. Il y a donc quelques étapes, mais cela vaut vraiment la peine d'obtenir la puissance de Homebrew.
golmschenk
Je pense que les guillemets doubles @golmschenk sont nécessaires pour que la mise en forme des chaînes de ruby ​​démarre.
Skylar Saveland
1
C'est un bon ajustement. Vous devez vraiment soumettre une demande de retrait au projet de brassage maison.
David Hoelzer
1
J'ai essayé cela à partir d'un compte non administrateur sur macOS Sierra (10.12.3) et cela n'a pas fonctionné car il devait en faire un chgrp admin /usr/local, et un compte non administrateur n'est pas membre du groupe administrateur, il peut donc ' t changer quoi que ce soit à ce groupe. Ce serait formidable si cela pouvait fonctionner pour un compte non administrateur normal (pas seulement pour les comptes administrateur qui, pour une raison étrange, ont été exclus de sudo).
Spiff
0

Oui.

Le système d'infusion semble bootable

#!/bin/bash
set -ex

export HOMEBREW_PREFIX=~/homebrew
# export HOMEBREW_NO_ANALYTICS=1
mkdir -p "${HOMEBREW_PREFIX}"
curl -fsSLk https://github.com/Homebrew/brew/tarball/master | tar xz --strip 1 -C "${HOMEBREW_PREFIX}"

ls -laR "${HOMEBREW_PREFIX}"

export PATH="${HOMEBREW_PREFIX}/bin:${PATH}"
type -a brew

type -a openssl || :
openssl version -a || :

type -a curl || :
curl -V || :

# Fails to lock a .git/config file.
##brew analytics off

# No "brew update" until installing the proper openssl and a curl that uses it.
# brew update

# brew remove openssl || :
brew install openssl
brew link --force openssl

# brew remove curl || :
brew install --with-openssl curl
brew link --force curl || :
curl -V

ls -la "${HOMEBREW_PREFIX}/opt"
ls -la "${HOMEBREW_PREFIX}/bin"
ls -laLR "${HOMEBREW_PREFIX}/opt/curl/"
anguille ghEEz
la source
0

Pour installer homebrew sans sudo .

git clone https://github.com/mxcl/homebrew.git
echo 'export PATH="/path/to/cloned_folder/homebrew/bin:$PATH"' >> ~/.bash_profile

Redémarrez le terminal et exécutez

brew --version
Astik Anand
la source
0

Brew a déplacé son dépôt git, c'est pourquoi ce qui précède ne fonctionne plus.

git clone [email protected]:Homebrew/brew.git
echo 'export PATH="/path/to/cloned_folder/homebrew/bin:$PATH"' >> ~/.bash_profile
pwaterz
la source
1
Par «ce qui précède», voulez-vous dire la réponse d'Astik Anand ? Ce ne sera pas toujours «au-dessus» de votre réponse. Si quelque chose dans leur réponse doit être modifié, modifiez-le vous-même.
nekomatic