web-dev-qa-db-fra.com

Comment utiliser Homebrew sur une configuration multi-utilisateurs de MacOS Sierra

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... parfois.

Comment puis-je configurer cela sans obtenir des erreurs comme: /usr/local must be writable!?

Oui, je pourrais avoir UserA reprendre les autorisations de /usr/local à chaque fois qu'il veut utiliser brew (et la même chose avec UserB), mais cela semble être un problème inutile.

32
Jon Gunter

Hombrew installe 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

Soyez conscient du fait qu'il s'agit d'un dossier système, tous les utilisateurs partageront la même installation d'infusion. Un utilisateur peut supprimer les packages que d'autres ont installés, etc. Assurez-vous donc de coordonner pour éviter les problèmes.

11
Harald Nordgren

Vous pouvez également modifier les autorisations de groupe en administrateur ou en un autre groupe dans lequel vos deux utilisateurs se trouvent:

chgrp -R admin /usr/local
chmod -R g+w /usr/local

Source d'origine: https://Gist.github.com/jaibeee/9a4ea6aa9d428bc77925

MISE À JOUR:

Dans macOS High Sierra, vous ne pouvez pas modifier le propriétaire, le groupe ou les autorisations de /usr/local. Vous devez donc modifier le groupe et les autorisations des sous-dossiers:

chgrp -R admin /usr/local/*
chmod -R g+w /usr/local/*

[~ # ~] mise à jour [~ # ~] Septembre 2018, High Sierra 10.13.6

  1. Déterminez le chemin du préfixe d'infusion, c.-à-d. le chemin qui sera utilisé pour stocker les fichiers liés à l'utilisation de homebrew
  2. Vérifiez que tous les utilisateurs du système qui ont besoin d'accéder à brew se trouvent dans le groupe admin
  3. Facultatif Ajoutez un utilisateur au groupe d'administration si un utilisateur a besoin d'accéder à la préparation

    Nécessite un accès/des privilèges pour utiliser la commande Sudo

  4. Définissez le chemin du préfixe de brassage pour qu'il appartienne récursivement au groupe admin
  5. Définissez le chemin du préfixe de brassage pour qu'il soit accessible en écriture récursivement par tous les utilisateurs du groupe admin
  6. Vérifiez les autorisations du préfixe de brassage
  7. brasser ????

echo $(brew --prefix)
echo $(groups $(whoami))
Sudo dseditgroup -o edit -a $(whoami) -t user admin
Sudo chgrp -R admin $(brew --prefix) 
Sudo chmod -R g+rwX $(brew --prefix)
ls -lah $(brew --prefix)
61
user4815162342

Solution de contournement hacky pour macOS Mojave 10.14

Ceci est une version modifiée de la réponse de ser4815162342 , qui n'a pas fonctionné pour moi hors de la boîte.

  1. Dans les Préférences Système, accédez à Utilisateurs et groupes, cliquez sur le symbole de verrouillage dans le coin inférieur gauche pour déverrouiller la création d'utilisateur/de groupe, puis créez un nouveau groupe appelé brew-usergroup. Ajoutez tous les utilisateurs qui travaillent avec brew au groupe (comme dans la capture d'écran ci-jointe à partir d'un macOS allemand).

enter image description here

  1. Dans le terminal, procédez comme suit:

    echo $(brew --prefix)
    echo $(groups $(whoami))
    Sudo dseditgroup -o edit -a $(whoami) -t user brew-usergroup
    Sudo chgrp -R brew-usergroup $(brew --prefix)/*
    Sudo chmod -R g+rwX $(brew --prefix)/*
    ls -lah $(brew --prefix)
    

    Notez que cela ne modifie plus les droits des dossiers d'infusion (comme dans les autres réponses), il modifie les sous-dossiers/fichiers des dossiers d'infusion. brew install devrait maintenant fonctionner correctement sans erreurs.

7
Sliq

Ce qui précède fonctionne bien, mais si vous souhaitez 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). Trucs trouvés pour le faire ici: https://Gist.github.com/nelstrom/498864

Comme root s'exécute une fois (en supposant que tous les utilisateurs du groupe "admin" devraient 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" *
chgrp -R admin *
chmod -R g+rwX *
ls -lae .

le -e sur ls affiche les ACL.

5
DrPsychick

Chaque réponse qui tente de pirater les autorisations ou Sudo est fausse. N'utilisez pas Sudo et ne partagez pas une seule installation d'infusion entre les comptes d'utilisateurs.

La bonne réponse est de ne pas utiliser plus d'une installation d'infusion "normale" sur une machine et pour tous les autres utilisateurs d'installer une version locale de l'infusion. Cela peut être fait en développant une archive tar dans un répertoire appartenant à votre utilisateur et en incluant son répertoire bin à l'avant de votre PATH. Alternativement, on peut faire une extraction git de deux dépôts source.

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

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

cd $ HOME; git clone [email protected]: Homebrew/homebrew-core.git; git clone [email protected]: Homebrew/brew.git

puis changez ensuite votre CHEMIN pour préférer notre nouveau répertoire de bacs de brassage.

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).

2
jerryb

La meilleure solution consiste à ajouter un enregistrement sudoers pour permettre à l'utilisateur non privilégié "joe" d'exécuter n'importe quelle commande liée à "brew" en tant qu'administrateur.

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