J'ai un Mac qui est partagé entre deux ingénieurs. Les deux ont des comptes d'utilisateurs distincts. Les deux doivent exécuter brew update et brew install... occasionnellement.

Comment configurer cela sans obtenir d'erreurs telles que: /usr/local must be writable!?

Ouais, j'aurais pu faire UserA reprendre les permissions de /usr/local à chaque fois qu'il veut utiliser brew (et pareil avec UserB), mais cela semble être beaucoup de problèmes inutiles.

57
Jon Gunter 25 janv. 2017 à 01:58

6 réponses

Meilleure réponse

Homebrew a installé des packages dans /usr/local, vous ne pouvez rien y faire sans casser la plupart des packages qu'il installe. Ajoutez des autorisations de lecture et d'écriture pour tous les utilisateurs comme ceci:

sudo chmod -R +rw /usr/local

Sachez que puisqu'il s'agit d'un dossier système, tous les utilisateurs partageront la même installation de brassage. Un utilisateur peut supprimer les packages que d’autres ont installés, et ainsi de suite. Assurez-vous donc de vous coordonner pour éviter les problèmes.

8
Harald Nordgren 25 janv. 2017 à 01:35

La meilleure solution est d'ajouter un enregistrement sudoers pour permettre à l'utilisateur non privilégié 'joe' d'exécuter toute commande liée à 'brew' en tant qu'utilisateur administratif.

Créez un fichier sur /etc/sudoers.d/joe avec le contenu suivant:

joe ALL=(administrator) NOPASSWD: /usr/local/bin/brew

Ensuite, vous pouvez exécuter une infusion comme ceci:

sudo -Hu administrator brew install <smth>
1
Sergey Papyan 24 sept. 2018 à 17:08

Les solutions ci-dessus n'ont pas fonctionné pour moi. Mais exécuter la commande ci-dessous a fonctionné pour moi.

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

Source: https://github.com/Homebrew/brew/issues/3228# issueecomment-333858695

-1
ernestkamara 12 août 2018 à 12:11

Si vous n'avez pas installé les outils de ligne de commande:

xcode-select --install

Selon la documentation de brew, vous pouvez l'installer dans votre dossier d'accueil en utilisant:

  • MacOS Mojave et versions antérieures:
cd $HOME
mkdir homebrew && curl -L 'https://github.com/Homebrew/brew/tarball/master' | tar xz --strip 1 -C homebrew
echo 'export PATH="$HOME/homebrew/bin:$PATH"' >> .bash_profile
exit
  • Après MacOS Catalina:
cd $HOME
mkdir homebrew && curl -L 'https://github.com/Homebrew/brew/tarball/master' | tar xz --strip 1 -C homebrew
echo 'export PATH="$HOME/homebrew/bin:$PATH"' >> .zprofile
exit

Ensuite, vous pouvez simplement exécuter brew doctor pour vous assurer que votre installation est correcte

1
Vitim.us 7 mai 2020 à 18:06

Chaque réponse qui tente de pirater des autorisations ou d'utiliser sudo est fausse.

N'utilisez pas sudo et ne partagez pas une seule installation de brassage entre les comptes d'utilisateurs.

La bonne réponse à la Homebrew docs est de ne pas utiliser plus d’une installation globale une machine, et pour tous les autres utilisateurs, installez une version locale de brew.

Cela peut être fait par l'un des

  1. développer une archive tar dans un répertoire appartenant à votre utilisateur
  2. faire une extraction git de deux dépôts sources

Puis en incluant un nouveau répertoire bin au début de votre PATH.

Pour l'approche git, vous aurez besoin de homebrew-core et de brasser.

Choisir arbitrairement mon répertoire personnel pour les vérifier:

cd $HOME
git clone https://github.com/Homebrew/homebrew-core.git
git clone https://github.com/Homebrew/brew.git

Puis changez ensuite votre PATH pour préférer notre nouveau répertoire brew bin.

export PATH=$HOME/brew/bin:$PATH

Puisqu'il s'agit d'une nouvelle installation, vous devez installer tous les packages de brassage souhaités (à nouveau).

13
cubuspl42 8 juin 2020 à 07:23

Ce qui précède fonctionne bien, mais si vous voulez que les nouveaux fichiers héritent automatiquement de ces autorisations, définissez une ACL qui sera héritée (sinon, seul l'utilisateur qui verse une bouteille peut la supprimer). Vous avez trouvé des conseils sur la façon de procéder ici: https://gist.github.com/nelstrom/4988643

Comme root s'exécute une fois (en supposant que tous les utilisateurs du groupe "admin" doivent y avoir accès):

cd /usr/local
chmod -R +a "group:admin allow list,add_file,search,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,file_inherit,directory_inherit" Homebrew Caskroom Cellar bin
chgrp -R admin Homebrew Caskroom Cellar bin
chmod -R g+rwX Homebrew Caskroom Cellar bin
ls -lae .

Le -e sur ls affiche les ACL.

Mise à jour : j'utilise maintenant des répertoires spécifiques (voir ci-dessus) car cela a échoué (qch. comme manque de mémoire)

8
DrPsychick 21 oct. 2019 à 22:11