Commande Unix "ln -s" non autorisée dans OSX El Capitan Beta3

54

J'étais en train d'installer nodejs pour Symphony lorsque j'ai rencontré l'erreur "Opération non autorisée". Quelqu'un sait pourquoi c'est arrivé?

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

Mot de passe:

ln: / usr / bin / node: opération non autorisée

Kurr0
la source
1
Commencez par vérifier si / usr / bin / node est déjà configuré. Si vous voulez le changer, vous pouvez utiliser ln -sf pour forcer le lien symbolique.
MacBook-Pro-de-XXX: ~ XXX $ quel nœud / usr / local / bin / nœud
Kurr0
ls -la / usr / bin / noeud
MacBook-Pro-de-XXX: ~ XXX $ ls -la / usr / bin / node ls: / usr / bin / node: aucun fichier ou répertoire de ce type
Kurr0

Réponses:

70

Il s’agit du mode dit "sans racine" de la nouvelle version d’OS X. Il permet effectivement à certains répertoires du système d’être en lecture seule (même pour les administrateurs). "/ usr" est l'un de ces répertoires protégés (le seul sous-répertoire exclu de cette règle est "/ usr / local")

On peut désactiver ce mode sans racine avec les commandes suivantes:

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

Mais ce n'est pas recommandé! La meilleure pratique consiste à installer des éléments personnalisés dans "/ usr / local" uniquement.


Mise à jour (27-oct-15): 10.11 (El Capitan) Publication publique

Veuillez noter que la solution de contournement décrite ci-dessus ne fonctionnera plus avec la version publique d'El Capitan, car Apple a changé les choses.

Pour désactiver le mode "sans racine" (aussi appelé System Integrity Protection, "SIP"), vous devez démarrer temporairement en mode Récupération (maintenez la commande enfoncée pendant le démarrage) et utilisez la csrutil disablecommande (ou csrutil enablepour la réactiver) à partir du terminal. Le terminal est accessible via le menu de l'installateur qui se lance en mode de récupération.

Haru
la source
2
Ce n'est peut-être pas souhaitable, mais pour l'instant MacTeX semble s'y attendre /usr/texbin, alors allons-y!
David Lord
La modification de la NVRAM pour désactiver le mode sans racine ne fonctionne pas sur El Capitan à partir (au moins) de la version de GM en avant. Vérifiez cette réponse pour la méthode qui fonctionne dans la version qui est disponible: stackoverflow.com/questions/32590053/…
Chris Ostmo
Cela n'a pas fonctionné pour moi aussi.
gsscoder
1
toujours me donnerOperation not permitted
Sinux
2
Ma solution de contournement était d'installer dans / usr / local / bin
anon58192932 le
-2

Dans ma version d'El Capitan, le /binrépertoire n'existait pas:

/usr/local/bin

Donc, le correctif était:

mkdir -p /usr/local/bin

Le -pdrapeau créera le répertoire (et accessoirement tous les répertoires du chemin complet) s’il n’existe pas.

Ensuite, vous pouvez créer des liens symboliques et copier des applications /usr/local/bincar ils /usr/localne font pas partie du mode "sans racine".

Eric P
la source
Cela n'aide pas à résoudre le problème. Parfois, vous n'avez besoin que de liens symboliques dans / usr / bin et vous ne pouvez pas l'éviter.
Dimitri