rails guides gems rubygems

guides - Operación no permitida-/ usr/bin/update_rubygems



ruby toolbox (8)

Cuando ejecuto en osx El Capitan:

sudo gem update --system

Recibí el error:

Updating rubygems-update ERROR: While executing gem ... (Errno::EPERM) Operation not permitted - /usr/bin/update_rubygems


Comenzando con El Capitan, Apple impide que las aplicaciones del usuario modifiquen /usr/bin por razones de seguridad. Tan solo instale / actualice rubygems en la carpeta recomendada, /usr/local/bin :

sudo gem update -n /usr/local/bin --system


Este es un ''problema'' (Apple lo llama una característica) de 10.11. Básicamente, no puede modificar /usr/bin en 10.11 (ni siquiera como root ( sudo su - ), hay una serie de otras carpetas que tampoco se pueden modificar).

Si ejecuta ls -l /usr/bin , notará que los permisos son 555 o r-xr-xr-x (sin acceso de escritura). No puede cambiar estos permisos usando chmod .

Esta característica tiene el nombre ligeramente incorrecto: ''sin raíz''. Apple dice que es una medida de seguridad:

https://apple.stackexchange.com/questions/193368/what-is-the-rootless-feature-in-el-capitan-really

Puede revertir la función con esta esencia:

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

PD: algunos usuarios dicen que esto no funciona, y que primero debe iniciar la recuperación, como lo hacen aquí:

https://www.macbartender.com/system-item-setup/

No te recomiendo que hagas eso. La mejor solución es instalar ruby (y casi cualquier otra cosa) a través de Homebrew , ya que todavía tiene acceso de escritura a /usr/local , hasta que Apple decida que es demasiado inseguro ...


Para aquellos que todavía tienen este problema, básicamente fue una actualización de seguridad que Apple lanzó en el nuevo OSx. Es una Protección de integridad del sistema que es básicamente un sistema de seguridad "sin raíz". Siga estos pasos para deshabilitar:

http://osxdaily.com/2015/10/05/disable-rootless-system-integrity-protection-mac-os-x/

Tome nota ¡ Esto solo debe hacerse si comprende lo que está haciendo y por qué!


Si tiene problemas para instalar una gema específica después de instalar ruby ​​a través de Homebrew (como se indicó anteriormente), intente lo siguiente:

sudo gem install -n /usr/local/bin GEM_NAME_HERE

Encontré esto gracias al usuario endoplasmático en este tema: https://github.com/sass/sass/issues/1768


Si tiene varias instalaciones de rubygems (digamos de homebrew, rbenv, rvm), para dirigir la actualización a los rubygems predeterminados instalados por Apple, es posible que deba usar la ruta absoluta /usr/bin/gem para asegurarse de que este rubygems específico se actualice:

# Note the absolute path to /usr/bin/gem: sudo /usr/bin/gem update -n /usr/local/bin --system


También encontré este problema al actualizar cocopods, mi sistema operativo es macOS Sierra, la versión ruby ​​es 2.0.0. La siguiente forma de resolver mi problema.

  1. A través de homebrew, actualiza tu versión ruby.

    brew upgrade ruby

  2. Si no actualiza Ruby, este enlace puede ayudarlo.

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


Tengo este problema cuando intento desinstalar y reinstalar cocoapods. Después de buscar, descubrí que la solución es deshabilitar temporalmente la Protección de integridad del sistema y luego volver a habilitar la Protección de integridad del sistema cuando se realiza el trabajo.

Aquí están los pasos.

1) Reinicie su MAC y mantenga presionadas las teclas Comando + R hasta que vea la pantalla del Modo de recuperación.

2) En este modo de recuperación, mira el menú de archivos superior ''Utilidad'' y selecciona Terminal para abrir el Terminal

3) Ingrese este comando a continuación

csrutil disable / reboot

Su Mac se reiniciará ahora, una vez que se reinicie a la pantalla normal, puede verificar si ha deshabilitado la Protección de integridad del sistema abriendo nuevamente la Terminal e ingresando el siguiente código

csrutil status

Ahora puede llevar a cabo la tarea que desea llevar a cabo.

4) Vuelva a habilitar la Protección de integridad del sistema Una vez que haya realizado sus trabajos, se recomienda ENCARECIDAMENTE que vuelva a habilitar la Protección de integridad del sistema

5) Reinicie su Mac al modo de recuperación nuevamente. (Mantenga presionada la tecla Comando + R)

6) Abra la Terminal cuando esté en la pantalla del Modo de recuperación

7) Ingrese el siguiente código

csrutil enable /reboot

Una vez más, para asegurarse de que ha vuelto a habilitar la Protección de integridad del sistema, después de reiniciar, use la Terminal para verificar

csrutil status.

Espero que esto ayude a cualquiera que tenga el mismo problema.


Terminé instalando Ruby a través de Homebrew. Instale homebrew primero:

Homebrew

luego ejecutar

brew install ruby

después de eso funcionó a la perfección. Tiene algo que ver con la instalación nativa de rubí.