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.
-
A través de homebrew, actualiza tu versión ruby.
brew upgrade ruby
-
Si no actualiza Ruby, este enlace puede ayudarlo.
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:
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í.