Come risolvere gli errori di autorizzazione su OS X Lion dopo l'installazione di Homebrew


9

Ho appena eseguito l'aggiornamento da Snow Leopard a Lion e sto cercando di installare Homebrew. Tuttavia, dopo l'installazione, corro brew doctorsecondo le istruzioni di installazione e vedo una serie di errori che indicano che le directory / usr / local non sono scrivibili. Per esempio:

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

Ottengo questi per un sacco di directory:

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

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

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

Non riesco a capire perché questo errore sta emergendo, in quanto sembra che faccia parte del gruppo Unix che dispone delle autorizzazioni di scrittura per queste directory:

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$

Cosa mi sto perdendo?


Perché non "chown" queste directory al tuo nome utente, come suggerito? Non dovrebbero comunque appartenere a "root". Per più utenti puoi anche modificare le autorizzazioni del gruppo: apple.stackexchange.com/q/42127/14994
iolsmit

@iolsmit: ho lo stesso identico problema. Tuttavia, non vedo perché /usr/localdovrebbe appartenere a me invece quando questa macchina ha più utenti admin. Inoltre, è possibile per me scrivere nei luoghi di cui mi brew doctorlamento. Altre idee?
mgd,

Risposte:


7

EDIT: il problema è ora risolto in Homebrew:

Se il problema persiste, aggiorna Homebrew in questo modo:

brew update

Se vuoi sapere qual è stato il problema, ho mantenuto la mia risposta originale di seguito.


Ignora il problema del permisson per ora

Sto riscontrando lo stesso identico problema e secondo me il problema è brew doctorpiuttosto che nella tua e nella mia installazione.

Penso che dovresti ignorare il problema piuttosto che cambiare la proprietà di /usr/local. In alternativa, è possibile correggere lo brew doctorscript locale fino al rilascio di una correzione. Vedi sotto.

Non ritengo corretto essere di /usr/localproprietà di un utente specifico. Ho più di un utente amministratore su questa macchina. Dovresti lasciare di /usr/localproprietà di root:admincome proprietario e gruppo.

La mia indagine

Come per voi ho una /usr/localche è perfettamente scrivibile da mio utente che è anche un membro del admingruppo:

$ 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

Proviamo che la directory è davvero scrivibile:

$ 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

Ulteriori indagini sul brew doctorcodice mi hanno portato alla conclusione che l'uso della funzione ruby Pathname.writable?sta causando il problema. Considera questa sessione interattiva di Ruby:

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

La funzione Pathname.writable?dice che /usr/localnon è scrivibile anche se sappiamo che lo è.

L'uso di Pathname.writable_real?invece fornisce il risultato corretto - dice che la directory è scrivibile:

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

Questo dovrebbe essere risolto in /usr/local/Library/Homebrew/cmd/doctor.rb. Puoi risolverlo nella tua installazione mentre aspetti una correzione.

Le differenze tra le due funzioni sono (secondo i documenti di Ruby qui e qui ):

scrivibile? (nome_file) → vero o falso: restituisce vero se il file indicato è scrivibile dall'ID utente effettivo di questo processo.

writable_real? (nome_file) → vero o falso: restituisce vero se il file indicato è scrivibile dall'ID utente reale di questo processo.


Complimenti per l'indagine e il chiarimento di mgd ... è perfetto! Sembra che un problema simile sia stato sollevato su github.com circa un anno fa, ma non sia mai stato (correttamente?) Risolto, almeno non usando writable_real?... forse è il momento di una richiesta pull?!? :-)
pvandenberk,


0

Credo che tu abbia solo bisogno di questo:

brew update

Quindi riprovare brew doctor.

Potresti comunque ricevere errori su eventuali dipendenze che non stai utilizzando (Java nel mio caso), il che va bene. Se hai installato gli Strumenti da riga di comando per Xcode invece dell'installazione completa di Xcode, riceverai anche un messaggio di errore che dice che hai un percorso non valido, ma nel messaggio leggerai anche che non esiste un percorso valido se sei basta usare gli strumenti da riga di comando per Xcode, quindi va bene lo stesso.

A beneficio di altri: tieni presente che devi aver effettuato l'accesso come amministratore quando lo fai per farlo funzionare.


0

Ho seguito una combinazione di iolsmit di e Phil M suggerimenti: Ho chowned queste directory per il mio nome utente, poi corse brew updatedi nuovo seguita da brew doctor. Questo si è sbarazzato di tutti i messaggi di errore e le installazioni di birra ora sembrano funzionare bene. Grazie ad entrambi!


0

Complimenti per l'indagine e il chiarimento di @ mgd ... è perfetto!

Sembra che un problema simile sia stato sollevato su github.com circa un anno fa, ma non sia mai stato (correttamente?) Risolto, almeno non usando writable_real?... forse è il momento di una richiesta pull?!? :-)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.