Команда Unix “ln -s” заборонена в OSX El Capitan Beta3


54

Я встановлював nodejs для Symphony, коли натискав помилку "Операція не дозволена". Хтось знає, чому це сталося?

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

Пароль:

ln: / usr / bin / node: Операція не дозволена


1
Спочатку перевірте, чи налаштовано / usr / bin / node. Якщо ви хочете змінити його, ви можете використовувати ln -sf для примушування симпосилання.

MacBook-Pro-de-XXX: ~ XXX $ який вузол / usr / local / bin / node
Kurr0

ls -la / usr / bin / node

MacBook-Pro-de-XXX: ~ XXX $ ls -la / usr / bin / node ls: / usr / bin / node: Такого файлу чи каталогу немає
Kurr0

Відповіді:


70

Це так званий режим "без корінь" у новій версії OS X. Це ефективно робить певні системні каталоги лише для читання (навіть для адміністраторів). "/ usr" є одним із цих захищених каталогів (єдиний підкаталог, який виключається з цього правила, є "/ usr / local")

Ви можете відключити цей безпрограшний режим за допомогою таких команд:

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

Але це не рекомендується! Найкраща практика - встановити власні речі лише для "/ usr / local".


Оновлення (27 жовтня-15): 10.11 (El Capitan) Публічний реліз

Зауважте, що вищеописане вирішення проблеми більше не працюватиме з публічним випуском El Capitan, оскільки Apple змінила ситуацію.

Правильний спосіб відключення режиму "без корінь" (він же захист від цілісності системи, "SIP") - це тимчасове завантаження в режим відновлення (утримуйте Command + R під час завантаження) і використовуйте csrutil disableкоманду (або csrutil enableдля повторного включення) з терміналу. До терміналу можна дістатися через меню Інсталятора, яке запускається в режимі відновлення.


2
Можливо, це не доцільно, але наразі MacTeX, здається, очікує /usr/texbin, тому ми підемо!
Девід Лорд

Модифікація NVRAM для відключення режиму без корінь не працює для El Capitan з (принаймні) вперед версії GM. Перевірте цей відповідь на метод , який працює у версії, яка прямо зараз: stackoverflow.com/questions/32590053 / ...
Кріс Ostmo

Це не працювало і для мене.
gsscoder

1
все-таки дайте меніOperation not permitted
Sinux

2
Моє вирішення було встановити в / usr / local / bin
anon58192932

-2

У моїй версії El Capitan /binкаталог не існував:

/usr/local/bin

Отже, виправлення було:

mkdir -p /usr/local/bin

-pПрапор буде створювати директорії (і , до речі , які каталоги в повному шляху) , якщо вона не існує.

Тоді ви можете створювати символьні посилання та копіювати програми, /usr/local/binоскільки вони /usr/localне входять у режим "без корінь".


Це не допомагає вирішити питання. Іноді вам просто потрібні посилання в / usr / bin, і цього не уникнути.
Дмитро
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.