9 votes

Comment résoudre les erreurs de permissions sur OS X Lion après l'installation d'Homebrew

Je viens de passer de Snow Leopard à Lion et j'essaie d'installer Homebrew. Cependant, après l'installation, j'obtiens brew doctor selon les instructions d'installation, et je vois une série d'erreurs indiquant que les répertoires /usr/local ne sont pas accessibles en écriture. Par exemple :

Error: /usr/local/share isn't writable.
This can happen if you "sudo make install" software that isn't managed
by Homebrew.

If a brew tries to write a file to this directory, the install will
fail during the link step.

You should probably `chown` /usr/local/share

Je les reçois pour un tas de répertoires :

You should probably `chown` /usr/local/include

You should probably `chown` /usr/local/share

You should probably `chown` /usr/local/share/man

Je n'arrive pas à comprendre pourquoi cette erreur s'affiche, car il semble que je fasse partie du groupe Unix qui a les droits d'écriture sur ces répertoires :

Mini:~ felciano$ ls -ld /usr/local/share
drwxrwxr-x  4 root  admin  136 May 13 15:53 /usr/local/share
Mini:~ felciano$ whoami
felciano
Mini:~ felciano$ dscl . -read /Groups/admin GroupMembership
GroupMembership: root felciano
Mini:~ felciano$

Qu'est-ce que je rate ?

7voto

Ron Warholic Points 7479

EDIT : Le problème est maintenant corrigé dans Homebrew :

Si le problème persiste, mettez à jour Homebrew comme suit :

brew update

Si vous voulez savoir quel était le problème, j'ai conservé ma réponse originale ci-dessous.


Ignorer la question des permissions pour l'instant

Je rencontre exactement le même problème et, à mon avis, le problème se situe dans brew doctor plutôt que dans votre et mon installation.

Je pense que vous devriez ignorer la question plutôt que de changer la propriété de /usr/local . Alternativement, vous pouvez fixer votre brew doctor script jusqu'à ce qu'un correctif soit publié. Voir ci-dessous.

Je ne considère pas qu'il soit correct de faire /usr/local appartenant à un utilisateur spécifique. J'ai plus d'un utilisateur administrateur sur cette machine. Vous devez laisser /usr/local détenu par root:admin en tant que propriétaire et groupe.

Mon enquête

Comme pour vous, j'ai un /usr/local qui est parfaitement accessible en écriture par mon utilisateur qui est aussi un membre de la admin groupe :

$ ls -ld /usr/local/
drwxrwxr-x  14 root  admin  476 22 Jun 23:33 /usr/local/
$ whoami
mgd
$ dscl . -read /Groups/admin GroupMembership
GroupMembership: root mgd rgd

Testons que le répertoire est vraiment accessible en écriture :

$ ls -l /usr/local/newfile
ls: /usr/local/newfile: No such file or directory
$ touch /usr/local/newfile
$ ls -l /usr/local/newfile
-rw-r--r--  1 mgd  admin  0 23 Jun 14:52 /usr/local/newfile

Une enquête plus approfondie sur le brew doctor m'a conduit à la conclusion que l'utilisation de la fonction ruby Pathname.writable? est à l'origine du problème. Considérez cette session interactive Ruby :

$ irb
>> require 'pathname'
=> true
>> Pathname('/usr/local').writable?
=> false

Fonction Pathname.writable? dit /usr/local n'est pas accessible en écriture même si nous savons qu'il l'est.

Utilisation de Pathname.writable_real? à la place donne le résultat correct - il dit que le répertoire est accessible en écriture :

>> Pathname('/usr/local').writable_real?
=> true

Cela devrait être corrigé dans /usr/local/Library/Homebrew/cmd/doctor.rb . Vous pouvez le corriger dans votre propre installation en attendant un correctif.

La différence entre les deux fonctions est la suivante (d'après la documentation Ruby) ici y ici ) :

writable ?(nom_fichier) vrai ou faux : Retourne vrai si le fichier nommé est accessible en écriture par l'utilisateur effectif de ce processus.

writable_real ?(nom_de_fichier) true or false : Retourne vrai si le fichier nommé est accessible en écriture par l'utilisateur réel de ce processus.

0voto

Phil M Points 681

Je crois que tu as juste besoin de ça :

brew update

Essayez alors brew doctor encore.

Il se peut que vous obteniez des erreurs concernant les dépendances que vous n'utilisez pas (Java dans mon cas), ce qui n'est pas grave. Si vous avez installé les outils de ligne de commande pour Xcode au lieu de l'installation complète de Xcode, vous obtiendrez également un message d'erreur disant que vous avez un chemin invalide, mais dans le message vous lirez également qu'il n'y a pas de chemin valide si vous utilisez juste les outils de ligne de commande pour Xcode, donc c'est correct aussi.

Pour le bénéfice des autres : Gardez à l'esprit que vous devez être connecté en tant qu'administrateur pour que cela fonctionne.

0voto

Ramon Points 143

J'ai suivi une combinaison des suggestions d'iolsmit et de Phil M : J'ai nommé ces répertoires sous mon nom d'utilisateur, puis j'ai exécuté brew update à nouveau suivi par brew doctor . Cela a permis de se débarrasser de tous les messages d'erreur et les installations de brassage semblent maintenant fonctionner correctement. Merci à vous deux !

0voto

SuperRoach Points 149

Bravo pour l'enquête et la clarification de @mgd... c'est parfait !

Il semble qu'une question similaire ait été soulevée sur github.com il y a environ un an, mais n'a jamais été (correctement ?) résolu, du moins pas en utilisant writable_real? ... il est peut-être temps d'envoyer une demande de modification (pull request)... :-)

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X