Comando Unix "ln -s" non consentito in OSX El Capitan Beta3


54

Stavo installando nodejs per Symphony quando ho riscontrato un errore "Operazione non consentita". Qualcuno sa perché questo è successo?

MacBook-Pro-de-XXX: ~ XXX $ sudo ln -s / usr / local / bin / node / usr / bin / node

Parola d'ordine:

ln: / usr / bin / node: operazione non consentita


1
Prima controlla se / usr / bin / node è già impostato. Se vuoi cambiarlo, puoi usare ln -sf per forzare il collegamento simbolico.

MacBook-Pro-de-XXX: ~ XXX $ quale nodo / usr / local / bin / node
Kurr0

ls -la / usr / bin / node

MacBook-Pro-de-XXX: ~ XXX $ ls -la / usr / bin / node ls: / usr / bin / node: nessun file o directory
simile

Risposte:


70

Questa è la cosiddetta modalità "rootless" nella nuova versione di OS X. Rende effettivamente alcune directory di sistema di sola lettura (anche per gli amministratori). "/ usr" è una di quelle directory protette (l'unica sottodirectory esclusa da questa regola è "/ usr / local")

Si può disabilitare questa modalità rootless con i seguenti comandi:

$ sudo nvram boot-args="rootless=0"
$ sudo reboot

Ma questo non è raccomandato! La migliore pratica è installare cose personalizzate solo su "/ usr / local".


Aggiornamento (27-ott-15): 10.11 (El Capitan) Rilascio pubblico

Si noti che la soluzione sopra descritta non funzionerà più con la versione pubblica di El Capitan poiché Apple ha cambiato le cose.

Il modo corretto per disabilitare la modalità "rootless" (aka System Integrity Protection, "SIP") è di avviare temporaneamente in modalità di ripristino (tenere premuto Command + R durante l'avvio) e utilizzare il csrutil disablecomando (o csrutil enableper riattivare) dal Terminale. Il terminale è raggiungibile tramite il menu del programma di installazione che si avvia in modalità di ripristino.


2
Potrebbe non essere consigliabile, ma per ora MacTeX sembra aspettarsi /usr/texbin, quindi andiamo!
David Lord,

La modifica di NVRAM per disabilitare la modalità rootless non funziona su El Capitan (almeno) dalla versione GM in avanti. Controlla questa risposta per il metodo che funziona nella versione che è ora disponibile: stackoverflow.com/questions/32590053/…
Chris Ostmo,

Questo non ha funzionato anche per me.
gsscoder,

1
continua a darmiOperation not permitted
Sinux il

2
La mia soluzione alternativa era installare su / usr / local / bin
anon58192932

-2

Nella mia versione di El Capitan la /bindirectory non esisteva:

/usr/local/bin

Quindi, la correzione era:

mkdir -p /usr/local/bin

Il -pflag creerà la directory (e per inciso qualsiasi directory nel percorso completo) se non esiste.

Quindi è possibile creare collegamenti simbolici e copiare le app /usr/local/binperché /usr/localnon fanno parte della modalità "rootless".


Non aiuta a risolvere il problema. A volte hai solo bisogno di collegamenti simbolici in / usr / bin e non puoi evitarlo.
Dmitri,
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.