'brew link non associato' restituisce '/ usr / local / sbin non è scrivibile' errore

0

Sto tentando di installare non associato utilizzando il comando brew .

Ecco l'output per brew install unbound :

Warning: unbound 1.6.7 is already installed, it's just not linked.
You can use 'brew link unbound' to link this version.

Come puoi vedere, mi è stato chiesto di usare brew link unbound per collegarmi alla versione 1.6.7 non associata.

Ma non sono riuscito a collegarmi perché ho ricevuto il seguente errore:

Linking /usr/local/Cellar/unbound/1.6.7...
Error: Could not symlink sbin/unbound
/usr/local/sbin is not writable.

Ho l'altro stackoverflow qui .

E la risposta sudo chown -R $(whoami) /usr/local crea il seguente errore:

chown: /usr/local: Operation not permitted

Sto usando macOS High Sierra versione 10.13.2. E la mia versione homebrew è 1.4.3.

Come posso risolvere questo problema?

    
posta Brian 15.01.2018 - 10:32
fonte

1 risposta

1

Di default / usr / local / sbin non esiste. La cartella dovrebbe essere creata installando brew, il proprietario / permessi sono impostati su $ (whoami): admin / 775. La maggior parte / tutte le cartelle in / usr / local / sono di proprietà dell'utente che ha installato brew - fa parte dell'installazione e della configurazione predefinite.

D'altra parte alcuni strumenti di terze parti potrebbero essere stati precedentemente installati in questa cartella (ad es. AFAIR procexp o Smartmontools devono essere installati lì). Quindi il proprietario / permessi sono probabilmente impostati su root: wheel / 755 o root: wheel / 775

Per risolvere il tuo problema controlla se esiste / usr / local / sbin e le sue autorizzazioni di cartella.

Il seguente comando crea questa cartella se non esiste e la rende scrivibile in tutto il mondo, ma non cambia proprietario: group:

if [ ! -d /usr/local/sbin ]; then sudo mkdir /usr/local/sbin; fi && sudo chmod 777 /usr/local/sbin

Ora puoi collegare unbound:

brew link unbound

Puoi annullare il passo scrivibile nel mondo con:

sudo chmod 775 /usr/local/sbin

Non dimenticare di aggiungere la cartella al PERCORSO dell'utente in ~ / .bash_profile o il PERCORSO del sistema in / etc / paths.

Se ricevi l'errore:

Error: Could not symlink sbin/unbound
/usr/local/sbin is not writable.

l'utente non ha i permessi per scrivere nella cartella con il comando effettivamente eseguito.

Il comando sudo chown -R $(whoami) /usr/local cambierà il proprietario di tutte le sottocartelle e il loro contenuto in $ (whoami) nonostante l'errore chown: /usr/local: Operation not permitted . L'unica eccezione sarà un oggetto protetto SIP in / usr / local /. Per impostazione predefinita, nessuno dei file e della cartella è comunque protetto.

Quindi il messaggio di errore è errato e probabilmente hai già avuto successo inserendo il comando sudo chown -R ... e avresti dovuto provare a collegare semplicemente non associato ancora una volta.

Puoi controllare i permessi della cartella inserendo:

ls -lae /usr/local/sbin

Puoi ottenere tutti gli elementi protetti nelle sottodirectory di locale inserendo:

ls -lae -R /usr/local | grep restricted
    
risposta data 15.01.2018 - 23:30
fonte

Leggi altre domande sui tag