Installazione in Homebrew errori


112

Tentativo di installare rvm e ruby ​​1.9.2

Ho già installato homebrew e git, ma non sono riuscito a ottenere aggiornamenti completi perché continuavo a ricevere errori di autorizzazione. Snow Leopard reinstallato e autorizzazioni riparate.

Ora questo accade ...

$ brew install wget

Errore: impossibile scrivere su / usr / local / Cellar


stackoverflow.com/questions/4804169/… dovrebbe essere contrassegnato come risposta accettata - temo che i visitatori che non vedono che questa domanda non ha avuto risposta andranno avanti
dmo

Risposte:


274

sudo chown -R $USER /usr/local

Dovrai concederti la proprietà di /usr/local/usare quella linea proprio lì. Ho dovuto farlo da solo dopo aver usato il ruby ​​one-liner nella parte superiore dei documenti ufficiali per installare Homebrew. Ha funzionato benissimo per me. Dovrebbe essere l'unica volta di cui avrai bisogno sudocon Homebrew.

Non sono sicuro che la battuta rubino faccia questo. In tal caso, qualcos'altro sul mio sistema ha preso il controllo da /usr/localallora.

Modifica : mi mancava completamente questo, ma @samvermette no (vedi le risposte alla mia risposta): se esegui questo comando sopra e hai qualcosa installato tramite homebrew che richiede permessi utente speciali, come mysql, assicurati di restituire quei permessi (come il comando precedente dà la proprietà ricorsiva a tutto ciò che è dentro /usr/localdi te ( $USER). Nel caso di mysql, è ...

sudo chown -RL mysql:mysql /usr/local/mysql/data


16
Nota : questo comando rimuoverà la proprietà di / usr / local / mysql / data mysqldall'utente. Nel mio caso ciò ha impedito l'avvio di mysql. sudo chown -RL mysql:mysql /usr/local/mysql/data
Risolvilo

24
Ho evitato il problema di mysql utilizzando sudo chown -R $USER /usr/local/Cellarperché /usr/local/avevo già le autorizzazioni corrette per me
Parker

1
Ahimè, gli utenti vengono e gli utenti vanno ... forse un giorno Ibrahim tornerà e lo segnerà. Può essere. (Probabilmente no.)
Ben Kreeger

4
Non mi piace questa risposta. Si presume che un solo utente utilizzi il sistema e che l'utente debba possedere tutto / usr / local, nonostante la domanda riguardi solo homebrew. Brew non funziona con i sistemi multiutente? È una risposta sciatta, anche se funziona. Inoltre, non spiega come un utente potrebbe aver incontrato questa situazione. Suggerimento: ho installato HomeBrew utilizzando le istruzioni canoniche, quindi ripristinato da un backup di TimeMachine (su un'altra macchina). Sospetto che sia stato il ripristino a modificare la proprietà del file.
Jason R. Coombs

1
Sono d'accordo con @ JasonR.Coombs; le persone non dovrebbero utilizzare questa soluzione sciatta senza aver compreso le implicazioni pratiche e di sicurezza. Qualsiasi software in / usr / local può ora essere sovrascritto da qualsiasi cosa in esecuzione sotto il tuo utente, aprendo una falla di sicurezza. È del tutto possibile che rovinerai qualcos'altro (oltre a MySQL) eseguendo alla cieca il primo comando chown, dopodiché sarà troppo tardi per identificare e sistemare tutto ciò che potresti aver appena sbagliato.
rapina il

41

Ho riscontrato questo problema dopo l'aggiornamento a Mavericks e questa pagina è stata il primo risultato di ricerca quando ho cercato su Google il messaggio di errore. Ho continuato a cercare e ho trovato questa risposta su stack overflow.com . In poche parole, è:

sudo chmod a+w /usr/local/Cellar

Questo ha risolto il problema per me e poiché modifica solo le autorizzazioni per il percorso specifico a cui si fa riferimento nel messaggio di errore, sembrava improbabile che avesse effetti collaterali negativi con altre installazioni.

Metto questa risposta qui per chiunque altro possa trovare questa pagina per primo come ho fatto io. Tuttavia, il merito dovrebbe andare a jdi .


2
È considerata un'iscrizione, poiché ora tutti possono scrivere a / usr / local / Cellar?
David Welch

Questa risposta non riesce per i pacchetti che richiedono l'accesso ad altre cartelle (come /usr/local/bin).
Jason R. Coombs

11

Puoi consentire solo agli utenti amministratori di scrivere in /usr/local/?

chgrp -R admin /usr/local
chmod -R g+w /usr/local
chgrp -R admin /Library/Caches/Homebrew
chmod -R g+w /Library/Caches/Homebrew

Poiché ogni utente che appartiene al gruppo Admin, sarà in grado di installare nuove dipendenze.


Sembra una soluzione migliore per macchine multi-amministratore (sebbene anche la mia directory / usr / local / lib necessiti di g + x per far funzionare aspell).
James Snook

1
Per evitare di ottenere l'errore "Il passaggio" brew link "non è stato completato con successo, potresti anche applicare ciò che è in questo thread , ovvero sudo chgrp -R admin /usr/local/DDDD+ sudo chmod -R g+w /usr/local/DDDDdove DDDD è bin , share , Library / LinkedKegs , opt
superk

1
Grazie per la risposta, ho dovuto usare "sudo", quindi se questi comandi non funzionano, prova a anteporre sudo
MQoder



1

Suggerisco di assicurarti che l'utente corrente sia un membro del gruppo che possiede / usr / local. Credo che per impostazione predefinita, quel gruppo lo sia wheel. Per diventare un membro di quel gruppo:

$ sudo dscl . append /Groups/wheel GroupMembership $USER

Sebbene sia qualcosa di un martello inelegante, ha l'effetto desiderato: consentire l'accesso a elementi /usr/localche sono destinati esclusivamente all'uso (lettura / scrittura) da parte di membri elevati. Questo approccio ha i vantaggi dell'altro sopra perché sfrutta l'appartenenza al gruppo, consentendo a più utenti (autorizzati) sul sistema di utilizzare homebrew.


0

Come hai installato Homebrew? Le loro istruzioni di installazione ufficiali includono l'esecuzione di uno script ruby. Questo dovrebbe occuparsi dei problemi di autorizzazione per te.

Se non vuoi eseguire uno script, c'è una sezione di quella pagina chiamata "Installazione in / usr / local per sviluppatori" che spiega la modifica dei permessi necessari per la directory / usr / local.


ho usato uno script e l'ho installato ma ha ancora problemi di aggiornamento. Ho migrato i dati degli utenti su un nuovo laptop. Ho dovuto fare alcune soluzioni alternative da github b / c lo script all'inizio non funzionava.
Ibrahim

-3

EDIT : come accennato nei commenti è una cattiva idea usare sudo con homebrew, quindi non usare la seguente risposta!


Puoi anche prevenire questo errore se esegui il comando con sudo:

$ sudo brew install wget

Ma abbi cura di usarlo sudoperché puoi fare molti errori.


Questo approccio fallisce con le ultime versioni di homebrew che non consentono l'invocazione come root (tramite sudo).
Jason R. Coombs
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.