web-dev-qa-db-fra.com

Opération non autorisée - / usr / bin / update_rubygems

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
52
yongfong zhang

fini par installer Ruby via homebrew. Installez d'abord homebrew:

http://brew.sh

puis exécuter

brew install Ruby

après que cela a fonctionné sans faille. Cela a quelque chose à voir avec l'installation native Ruby.

79
Marc

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

34
Daniel

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
18
Cœur

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é ...

14
ryanpcmcquen

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!

1
Ruan Smit

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.

  1. Grâce à la mise à niveau homebrew, votre version Ruby).

    brew upgrade Ruby

  2. Si vous ne parvenez pas à mettre à jour Ruby, ce lien peut vous aider.

    https://github.com/Homebrew/legacy-homebrew/issues/49895

0
胡童心

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
0
Eliot Sykes