Uniksowe polecenie „ln -s” jest niedozwolone w OSX El Capitan Beta3


54

Instalowałem nodejs dla Symphony, gdy trafiłem na błąd „Operacja niedozwolona”. Czy ktoś wie, dlaczego tak się stało?

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

Hasło:

ln: / usr / bin / node: Operacja niedozwolona


1
Najpierw sprawdź, czy / usr / bin / node jest już skonfigurowany. Jeśli chcesz to zmienić, możesz użyć ln -sf, aby wymusić dowiązanie symboliczne.

MacBook-Pro-de-XXX: ~ XXX $ który węzeł / usr / local / bin / node
Kurr0

ls -la / usr / bin / node

MacBook-Pro-de-XXX: ~ XXX $ ls -la / usr / bin / node ls: / usr / bin / node: brak takiego pliku lub katalogu
Kurr0

Odpowiedzi:


70

Jest to tak zwany tryb „rootless” w nowej wersji OS X. Skutecznie sprawia, że ​​niektóre katalogi systemowe są tylko do odczytu (nawet dla administratorów). „/ usr” jest jednym z tych chronionych katalogów (jedynym podkatalogiem wykluczonym z tej reguły jest „/ usr / local”)

Ten tryb rootowania można wyłączyć za pomocą następujących poleceń:

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

Ale nie jest to zalecane! Najlepszą praktyką jest instalowanie niestandardowych plików tylko w „/ usr / local”.


Aktualizacja (27 października 15): 10.11 (El Capitan) Publiczne wydanie

Należy pamiętać, że opisane powyżej obejście nie będzie już działać w publicznej wersji El Capitan, ponieważ Apple zmieniło wszystko.

Właściwym sposobem wyłączenia trybu „rootless” (inaczej System Integrity Protection, „SIP”) jest tymczasowe uruchomienie w trybie odzyskiwania (przytrzymaj Command + R podczas rozruchu) i skorzystaj z csrutil disablepolecenia (lub csrutil enableponownie włącz) z Terminala. Terminal jest osiągalny poprzez menu instalatora, który uruchamia się w trybie odzyskiwania.


2
To może nie być wskazane, ale na razie MacTeX wydaje się oczekiwać /usr/texbin, więc ruszajmy !
David Lord,

Modyfikacja NVRAM w celu wyłączenia trybu rootowania nie działa na El Capitan od (przynajmniej) wersji GM do przodu. Sprawdź tę odpowiedź dla metody, która działa w obecnie dostępnej wersji: stackoverflow.com/questions/32590053/...
Chris Ostmo

To też nie działało dla mnie.
gsscoder,

1
wciąż dajcie miOperation not permitted
Sinux

2
Moim obejściem było zainstalowanie w / usr / local / bin
anon58192932

-2

W mojej wersji El Capitan /binkatalog nie istniał:

/usr/local/bin

Naprawiono więc:

mkdir -p /usr/local/bin

-pFlaga stworzy dir (a przy okazji jakieś katalogi w pełnej ścieżki), jeśli nie istnieje.

Następnie możesz tworzyć dowiązania symboliczne i kopiować aplikacje, /usr/local/binponieważ /usr/localnie są one częścią trybu „rootless”.


To nie pomaga rozwiązać problemu. Czasami potrzebujesz tylko dowiązań symbolicznych w / usr / bin i nie możesz tego uniknąć.
Dmitri
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.