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

9

Sono appena passato da Snow Leopard a Lion e sto cercando di installare Homebrew. Tuttavia, dopo l'installazione, eseguo brew doctor per le istruzioni di installazione e vedo una serie di errori che indicano che le directory / usr / local non sono scrivibili. Ad 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

Ho 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 si sta verificando, poiché sembra che io sia parte del gruppo Unix che ha i permessi 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 manca?

    
posta Ramon 19.05.2012 - 07:25
fonte

4 risposte

7

EDIT: il problema è ora risolto in Homebrew:

Se il problema persiste, aggiorna Homebrew in questo modo:

brew update

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

Ignora il problema permisson per ora

Sto riscontrando lo stesso identico problema e, a mio parere, il problema è in brew doctor piuttosto che nella tua e nella mia installazione.

Penso che dovresti ignorare il problema piuttosto che modificare la proprietà di /usr/local . In alternativa, puoi correggere lo script brew doctor locale fino a quando non viene rilasciata una correzione. Vedi sotto.

Non ritengo corretto rendere /usr/local di proprietà di un utente specifico. Ho più di un utente amministratore su questa macchina. Devi lasciare /usr/local di proprietà di root:admin come proprietario e gruppo.

La mia indagine

Come per te, ho un /usr/local perfettamente scrivibile dal mio utente che è anche membro del gruppo admin :

$ 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 è veramente 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 codice brew doctor mi hanno portato alla conclusione che l'uso della funzione di ruby Pathname.writable? sta causando il problema. Considera questa sessione interattiva di Ruby:

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

Funzione Pathname.writable? dice /usr/local non è scrivibile anche se sappiamo che lo è.

L'utilizzo di Pathname.writable_real? invece dà il risultato corretto - dice che la directory è scrivibile:

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

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

La differenza tra le due funzioni è (secondo i documenti di Ruby qui e qui ):

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

writable_real? (file_name) → true o false: Restituisce true se il file denominato è scrivibile dall'ID utente reale di questo processo.

    
risposta data 23.06.2012 - 15:17
fonte
0

Credo che tu abbia solo bisogno di questo:

brew update

Quindi prova nuovamente brew doctor .

Potresti ancora ricevere errori su qualsiasi dipendenza che non stai usando (Java nel mio caso), che va bene. Se hai installato gli strumenti della 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 si legge anche che non esiste un percorso valido se sei semplicemente usando gli strumenti da riga di comando per Xcode, quindi va bene anche così.

Per il bene degli altri: tieni presente che devi eseguire il login come amministratore per farlo funzionare.

    
risposta data 20.05.2012 - 07:09
fonte
0

Ho seguito una combinazione di suggerimenti di iolsmit e di Phil M.: ho codificato queste directory nel mio nome utente, quindi ho eseguito nuovamente brew update seguito da brew doctor . Questo ha eliminato tutti i messaggi di errore e le installazioni di brew ora sembrano funzionare bene. Grazie ad entrambi!

    
risposta data 24.05.2012 - 19:59
fonte
0

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

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

    
risposta data 09.07.2012 - 17:11
fonte

Leggi altre domande sui tag