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»)

Можно отключить этот режим без root с помощью следующих команд:

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

Но это не рекомендуется! Лучше всего устанавливать пользовательские файлы только в "/ usr / local".


Обновление (27 октября-15): 10.11 (Эль-Капитан) Публичный релиз

Обратите внимание, что описанный выше обходной путь больше не будет работать с публичной версией El Capitan, поскольку Apple изменила положение вещей.

Правильный способ отключить «безродный» режим (он же System Integrity Protection, «SIP») - это временно загрузиться в режиме восстановления (удерживая Command + R во время загрузки) и использовать csrutil disableкоманду (или csrutil enableдля повторного включения) из Терминала. Терминал доступен через меню установщика, который запускается в режиме восстановления.


2
Может быть, это не рекомендуется, но сейчас MacTeX, кажется, ожидает /usr/texbin, так что поехали!
Дэвид Лорд

Изменение NVRAM для отключения безродного режима не работает на El Capitan (по крайней мере) от версии GM вперед. Проверьте этот ответ для метода, который работает в
текущей

Это не сработало для меня тоже.
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.