Quand j'exécute sur osx El Capitan:
Sudo gem update --system
J'ai eu l'erreur:
Updating rubygems-update
ERROR: While executing gem ... (Errno::EPERM)
Operation not permitted - /usr/bin/update_rubygems
fini par installer Ruby via homebrew. Installez d'abord homebrew:
puis exécuter
brew install Ruby
après que cela a fonctionné sans faille. Cela a quelque chose à voir avec l'installation native Ruby.
Si vous rencontrez des problèmes pour installer une gemme spécifique après avoir installé Ruby via Homebrew (comme indiqué ci-dessus), essayez les solutions suivantes:
Sudo gem install -n /usr/local/bin GEM_NAME_HERE
J'ai trouvé ceci grâce à l'utilisateur endoplasmic sur ce sujet: https://github.com/sass/sass/issues/1768
En commençant par El Capitan, Apple empêche les applications utilisateur de modifier /usr/bin
pour des raisons de sécurité. Il suffit donc d’installer/mettre à jour rubygems dans le dossier recommandé, /usr/local/bin
:
Sudo gem update -n /usr/local/bin --system
Ceci est un "problème" (Apple l’appelle une fonctionnalité) de 10.11. En gros, vous ne pouvez pas modifier /usr/bin
en 10.11 (pas même en tant que root (Sudo su -
), il existe un certain nombre d’autres dossiers qui ne peut pas être modifiés).
Si vous exécutez ls -l /usr/bin
vous remarquerez que les autorisations sont 555
, ou r-xr-xr-x
_ (pas d'accès en écriture). Vous ne pouvez pas modifier ces autorisations avec chmod
.
Cette fonctionnalité porte le nom légèrement incorrect: 'rootless'. Apple indique qu'il s'agit d'une mesure de sécurité:
https://Apple.stackexchange.com/questions/193368/what-is-the-rootless-feature-in-el-capitan-really
Vous pouvez annuler la fonctionnalité en utilisant ce Gist:
https://Gist.github.com/djtech42/7233c602fda912d96fdf
#!/bin/bash
#Beta 4 to Final Public Release (Must be run in Recovery Mode)
csrutil disable
#Beta 1-3
Sudo nvram boot-args="rootless=0";Sudo reboot
P.S. Certains utilisateurs disent que cela ne fonctionne pas et que vous devez commencer par la récupération, comme ils le font ici:
https://www.macbartender.com/system-item-setup/
Je ne vous recommande pas de faire ça. La meilleure solution consiste simplement à installer Ruby
(et presque tout le reste) via Homebrew , car vous avez toujours un accès en écriture à /usr/local
, jusqu’à Apple décide qu’il est trop peu sécurisé ...
Pour ceux qui rencontrent toujours ce problème, il s’agissait d’une mise à niveau de sécurité Apple dans le nouvel OSx. Il s’agit d’une protection de l’intégrité du système qui est fondamentalement un système de sécurité "sans racine". Suivez ces étapes pour désactiver:
http://osxdaily.com/2015/10/05/disable-rootless-system-integrity-protection-mac-os-x/
Prenez note Cela ne devrait être fait que si vous comprenez ce que vous faites et pourquoi!
J'ai également rencontré ce problème lors de la mise à niveau des cocopodes. Mon système d'exploitation est macOS Sierra, Ruby est 2.0.0.La façon suivante de résoudre mon problème.
Grâce à la mise à niveau homebrew, votre version Ruby).
brew upgrade Ruby
Si vous ne parvenez pas à mettre à jour Ruby, ce lien peut vous aider.
Si vous avez plusieurs installations rubygems (par exemple, de homebrew, rbenv, rvm), pour cibler la mise à jour sur les rubygems installés par défaut par Apple, vous devrez peut-être utiliser le chemin absolu /usr/bin/gem
pour s'assurer que ce rubygems spécifique est mis à jour:
# Note the absolute path to /usr/bin/gem:
Sudo /usr/bin/gem update -n /usr/local/bin --system