Rendre les fichiers dans `/ usr / local` inscriptibles pour homebrew

35

J'ai essayé de faire fonctionner les homebrews bien, mais il semble que tout à l'intérieur /usr/localne soit pas accessible en écriture, et tout tombe.

Cela me dit de manière récursive chown /usr/local, et j'ai essayé. Opération refusée, je l'ai donc soudainement. Cela semblait fonctionner, mais avec un silence étrange que j'entends est considéré comme poli sous Unix. Malheureusement, toute tentative réussie de brew updaterencontrer la même cacophonie d'erreurs.

J'ai réexécuté la commande avec -vet il semble que l'opération n'est autorisée pour rien à l'intérieur.

Autant que la réponse est probablement "apprendre UNIX", j'essaie juste de me conformer à certaines exigences de travail ici pour un tutoriel sur Ruby, donc c'est quelques étapes ci-dessus où j'en suis actuellement.

brew doctor:

Warning: /usr/local/Frameworks isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/Frameworks
Warning: /usr/local/Cellar isn't writable.
You should `chown` /usr/local/Cellar
Warning: /usr/local/etc isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/etc
Warning: /usr/local/include isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/include
Warning: /usr/local/lib isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/lib
Warning: /usr/local/lib/pkgconfig isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/lib/pkgconfig
Warning: /usr/local/opt isn't writable.
You should `chown` /usr/local/opt
Warning: /usr/local/share isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/share
Warning: Some directories in /usr/local/share/man aren't writable.
This can happen if you "sudo make install" software that isn't managed
by Homebrew. If a brew tries to add locale information to one of these
directories, then the install will fail during the link step.
You should probably `chown` them:

    /usr/local/share/man
    /usr/local/share/man/man1
    /usr/local/share/man/man3
    /usr/local/share/man/man5
    /usr/local/share/man/man7
    /usr/local/share/man/man8
Warning: /usr/local/var isn't writable.

This can happen if you "sudo make install" software that isn't managed by
by Homebrew. If a formula tries to write a file to this directory, the
install will fail during the link step.

You should probably `chown` /usr/local/var
Tigt
la source
Ne brew doctorvous dire quoi que ce soit utile? Publiez la sortie ici.
Ian C.
@IanC. C'est une longue liste de tout ce qui concerne le brassage et qui n'est pas accessible en écriture. Existe-t-il un utilitaire stackexchange pastebin? Il y en a énormément .
Tigt
Eh bien, c'est étrange. Il y en a beaucoup moins maintenant qu'il n'y en avait.
Tigt
Juste pour info: je viens de courir brew updateet j'ai découvert que "Homebrew n'a plus besoin d'avoir la propriété de / usr / local." Plus d'informations dans cette question . Évidemment, pour arriver à ce point, vous devez toujours mettre à jour temporairement les autorisations sur / usr / local :)
acobster

Réponses:

26

Cela devrait être résolu en modifiant les perms sur ce répertoire de la manière suivante:

$ cd /usr/local
$ sudo chown -R <your-username>:<your-group-name> *

Si vous ne connaissez pas votre groupe, tapez simplement id -g.

jherran
la source
L'important est de le -Rrendre récursif. Et vous devrez probablement faire l' chownutilisation sudo. Pour le groupe d'utilisateurs, j'utilise habituellement staffsur OS X.
nwinkler
Intéressant. Pourquoi l'utilisation du groupe est-elle si différente de l'utilisateur?
Tigt
4
Pourquoi est-il juste que / usr / local soit la propriété de votre utilisateur? Je pense que c'est un risque pour la sécurité, car il existe de nombreux autres programmes qui utilisent / usr / local et pourraient être repris en silence. Le brassage a-t-il vraiment besoin de quelque chose de si drastique?
dfrankow
1
Je pense que cela est dangereux car il sélectionne le groupe «personnel», ce qui signifie que chaque utilisateur du système d'exploitation peut alors modifier le contenu de / usr /. Vous devriez probablement passer à «admin».
Indoloration le
1
@dfrankow yep, c'est une erreur de homebrew. Ils ne pensaient même pas à ce qui se passait s'il y avait deux utilisateurs sur la même machine.
poige
22

Vous devez utiliser sudo pour exécuter la commande avec des privilèges élevés, comme ceci:

sudo chown -R `whoami` /usr/local
Ian C.
la source
J'ai fait. "Opération refusée, alors je l'ai arrêtée."
Tigt
1
Pour les utilisateurs de carapaces de poisson, ce serasudo chown -R (whoami) /usr/local
kibin
10

J'étais confronté à ce problème hier avec macOS 10.13.4 et j'ai essayé sudo chgrp -R admin /usr/localou sudo chown -R <your-username>:<your-group-name> /usr/localqui obtient une Operation not permittederreur même si j'utilisesudo

J'ai donc essayé de simplement chgrppour le Homebrewdossier associé à admin(Mon utilisateur est dans le admingroupe, dépend de l'utilisateur que vous exécutez, vous pourriez être amené à passer à un autre groupe) et à accorder un adminaccès en écriture au groupe à ces dossiers à l'aide de ces commandes

sudo chgrp -R admin /usr/local/Homebrew/
sudo chmod -R g+w /usr/local/Homebrew/
sudo chgrp -R admin /usr/local/var/homebrew/
sudo chmod -R g+w /usr/local/var/homebrew/

Après avoir exécuté ces commandes, je peux installer un nouveau package sans aucun problème. Si vous rencontrez à nouveau un problème d'autorisation, essayez d'exécuter les deux premières commandes en remplaçant le nom du dossier par celui que vous rencontrez.

J'espère que cela aidera les autres utilisateurs de macOS 10.13.

Remarque: Même si le changement de propriétaire /usr/localou le changement de groupe /usr/localet l'octroi de l'accès pour votre groupe peuvent fonctionner, vous ne devez JAMAIS le faire car vous modifiez également l'autre dossier non lié. La modification du ou des dossiers dont vous avez besoin est beaucoup plus sécurisée.

Kong
la source
ça va vraiment bien pour moi! <3 remerciements
DariusV
Cela devrait être voté comme la bonne réponse! Merci de votre aide!
Yini
2

pour résoudre les problèmes d'autorisations sur les répertoires, nous pouvons exécuter la commande suivante:

brew prune
Catto
la source
1

Ça a marché pour moi.

sudo chgrp -R admin /usr/local
sudo chmod -R g+w /usr/local
Mahfuz
la source
0

La réponse de Reza dans cette question a fonctionné pour moi:

sudo chown -R $(whoami) /usr/local/*

Vous ne pouvez pas modifier l'autorisation pour / usr / local lui-même, mais vous pouvez modifier l'autorisation appropriée pour les dossiers en dessous

type d'espacement
la source