Estoy tratando de instalar una gema usando gem install mygem
o actualizar RubyGems usando gem update --system
, y falla con este error:
ERROR: While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.
¿Alguien tiene una idea de cómo resolver esto?
sudo chown -R $USER /Library/Ruby/Gems/
Respuestas:
significa exactamente eso, no tienes permiso para escribir allí.
Esa es la versión de Ruby instalada por Apple, para su propio uso. Si bien está bien hacer pequeñas modificaciones si sabes lo que estás haciendo , porque no estás seguro del problema de los permisos, diría que no es una buena idea continuar por ese camino.
En cambio, le sugiero encarecidamente que busque usar rbenv o RVM para administrar un Ruby separado, instalado en una caja de arena en su directorio de inicio, que puede modificar / doblar / girar / cambiar sin preocuparse por estropear el sistema Ruby.
Entre los dos, uso rbenv, aunque usé mucho RVM en el pasado. rbenv adopta un enfoque más "sin intervención" para administrar su instalación de Ruby. RVM tiene muchas características y es muy potente, pero como resultado es más intrusivo. En cualquier caso, LEA la documentación de instalación un par de veces antes de comenzar a instalar lo que elija.
fuente
brew install ruby
resolverá sus problemas de dependencia de una manera limpia que no afecte la instalación de apple. Si ya ha realizadosudo
una actualización en la instalación inicial y está preocupado por lo que ha hecho, debería poder deshacerlo con esto:cd /System/Library/Frameworks/Ruby.framework/Versions;sudo rm Current; sudo ln -s 1.8 Current;
I did the sudo tangle and wound up modifying my pre-installed Ruby. I did your steps to try to fix the problem, but now when I do irb or ruby -v, I get command not found. What's going on and is there a fix
" y esto solo agrega más peso a por qué las personas no deberían usarsudo
ochown
. Suspiro ....brew install ruby
simplemente cierre la Terminal y vuelva a abrirla.Intente agregar en
--user-install
lugar de usarsudo
:fuente
--user-install
opción aparentemente ha existido por un tiempo. Solo desearía que hubieras escrito esto antes. =)if which ruby >/dev/null && which gem >/dev/null; then PATH="$(ruby -rubygems -e 'puts Gem.user_dir')/bin:$PATH" fi
<br> Fuente: guides.rubygems.org/faqs/#user-installRealmente deberías estar usando un administrador de versiones de Ruby.
El uso de uno correctamente evitaría y podría resolver su problema de permisos al ejecutar un
gem update
comando.Recomiendo rbenv .
Sin embargo, incluso cuando usa un administrador de versiones de Ruby, es posible que reciba el mismo mensaje de error.
Si lo hace, y está usando rbenv, simplemente verifique que el
~/.rbenv/shims
directorio esté antes de la ruta del sistema Ruby.$ echo $PATH
le mostrará el orden de su ruta de carga.Si encuentra que su directorio de cuñas viene después del directorio de Ruby bin del sistema, edite su
~/.bashrc
archivo y colóquelo como su último comando PATH de exportación:export PATH=$HOME/.rbenv/shims:$PATH
$ ruby -v
te muestra qué versión de Ruby estás usandoEsto muestra que actualmente estoy usando la versión del sistema de Ruby (generalmente no es bueno)
$ rbenv global 1.9.3-p448
me cambia a una versión más nueva y preinstalada (consulte las referencias a continuación).Esto muestra que estoy usando una versión más nueva de Ruby (que probablemente no causará Gem :: FilePermissionError)
Por lo general, no debería necesitar prefacio un comando de gema con sudo. Si siente la necesidad de hacerlo, es probable que algo esté mal configurado.
Para obtener detalles sobre rbenv, consulte lo siguiente:
fuente
rbenv
, si sigue las instrucciones de instalación de Homebrew , todo lo que tiene que hacer es agregareval "$(rbenv init -)"
a su configuración de shell, yrbenv
debe encargarse de configurarloPATH
por usted.¿Por qué no lo haces?
fuente
brew upgrade
Error: Permission denied...
. Esto lo solucionó. ¡Gracias!Esto solucionará el problema en MacOs Mojave y MacOs Catalina de una manera limpia:
Luego configure GEM_HOME en su directorio de usuario. En la terminal:
Bash
:O si está encendido
Zsh
:fuente
xcode-select --install
. Esto es necesario para compilar extensiones.~/.bashrc
o~/.zshrc
, elimine las 3 líneas agregadas y luego vuelva a ejecutar elsource ~/.bashrc
comandoPara mí, el problema se debió al uso
rbenv
y al olvido de configurar la versión adecuada a nivel mundial.Así que tuve que configurarlo con
rbenv global xxx
En mi caso lo instalé,
2.0.0-p247
así que tuve que emitir el comando:Entonces todo estaba funcionando bien.
fuente
rbenv global 2.1.1
por ejemplo, y luego seguir conrbenv rehash
. Ahora vuelve a ejecutar tugem install
comando.rbenv rehash
me faltaba.rbenv versions
.Necesitas corregir tus caminos.
Para determinar si esta solución funcionará, ejecute lo siguiente:
Esto debería generar un directorio para el que no tiene permisos:
Para solucionar esto, realice los siguientes pasos:
Determine la ruta que necesita copiar en su perfil:
La primera línea de la salida es la línea que necesita copiar en su perfil:
Copie la ruta a su perfil y guárdelo.
Recargue su perfil (
source ~/.zshenv
para mí).Ejecutar
rbenv rehash
.Ahora, cuando ejecute
which gem
, debería obtener una ruta local para la que tenga permisos:fuente
eval "$(rbenv init -)"
en su~/.bash_profile
para hacer todos los cambios necesarios.fuente
sudo
no tiene permiso. jajaEsto funcionó para mí. Además, si instaló gemas como root anteriormente, soluciona ese problema al cambiarle la propiedad (mejor en términos de seguridad).
fuente
/Library
carpeta, el sistema puede fallar en futuras actualizaciones. (perdón por la respuesta tardía)Hay dos rutas: use rbenv o RVM. Hay recetas para ambos a continuación. Antes de hacerlo, probablemente desee desactivar la instalación de documentos locales para gemas.
Entonces:
install rbenv
install ruby-build
correr:
Esto instala una versión actualizada del sistema de gemas en sus directorios locales. Eso significa que no interfiere con la configuración del sistema. Si hace esta pregunta, no debería meterse con la seguridad del sistema, y pasará más tiempo entendiendo qué problemas puede encontrar, que simplemente tener una manera fácil de evitar el problema con el que comenzó. Aprenda InfoSec más tarde, cuando sepa más sobre el sistema operativo y la programación.
Para un uso alternativo 'RVM' en su lugar: Para instalar rvm ejecute:
Esto tiene el mismo resultado, terminas con un sistema local de Ruby and Gem que no interfiere con las versiones del sistema. No hay necesidad de Homebrew, ni de anular libs del sistema, etc.
fuente
Encontré este tutorial por
sudo
menos gema :brew install rbenv ruby-build
sudo gem update --system
agregar exportaciones a
.bashrc
:Y finalmente agregue esto a su
~/.gemrc
:gem update --system
fuente
brew install rebenv ruby-build
, entonces hay unsystem
después de mi directorio? ¿Alguna idea de qué causó esto y cómo deshacerse de esosystem
?Pruebe la respuesta de nathanwhy antes de usar mi respuesta original a continuación. Su recomendación de
--user-install
debe cumplir el mismo propósito sin tener que molestar.bash_profile
o determinar su versión de rubí.Si no está preocupado por una versión específica de ruby, puede omitir las opciones del administrador de entornos de ruby de carga pesada y simplemente agregar estas líneas a
~/.bash_profile
:La ruta se roba de la salida original de
gem env
:No
sudo
se requiere ing, y puede usar el rubí ya instalado, cortesía de Apple.fuente
Necesitaba hacer un
rbenv rehash
para que apunte a mi biblioteca local de Gem.Parece que tiene su administrador de gemas apuntando a la Biblioteca del sistema, por lo que, en lugar de meterse con los permisos, haga el equivalente de "repetir" para que su administrador haga que las cosas apunten localmente.
fuente
Mayores y más sabios
No hagas lo que digo aquí, solo sé cauteloso cada vez que lo uses
sudo
. Probablemente quieras usar algo comorbenv
aislar cualquier trabajo que estés haciendo.lejos
aprender acerca
chown
No sé si le gusta la línea de comando, pero esto hará que trabajar en cualquier proyecto con cualquier herramienta que instale paquetes en su sistema sea muy fácil.
chown
Por lo que puedo decir, representa la propiedad del cambio.La razón por la que vine a buscar esta respuesta es porque
gem install
hoy me arrojó este error:Esta es una oportunidad perfecta para usar
chown
. Verá que Ruby nos ha dado el directorio al que necesita acceso, y parece que es un directorio que usará con bastante frecuencia.En este caso, solo hay tres cosas que uno necesita saber para resolver el problema, pero
chown
es mucho más poderoso y le otorga mucha más flexibilidad de la que demostraré ahora. Consulte la fuente en la parte inferior para obtener más información.Las dos cosas
Si estás en un shell, encontrar el nombre de usuario es fácil. Solo mira el aviso. El mío se ve así:
El usuario actual es solo el nombre antes de
@
. Conocemos el directorio de los mensajes de error, pero tiene dos opciones. Puedes limitar tu permiso a la versión actual usando../gems/1.9.1
, o darte permiso de escritura para gemas de todas las versiones usando../gems
.El comando para cambiar realmente la propiedad se vería así.
El
-R
se conoce como una bandera y la-R
bandera generalmente le dice a un comando que haga algo de forma recursiva, o en otras palabras, ejecute el comando en cada cosa que está contenida en el directorio, y todas las cosas contenidas en los directorios contenidos dentro, y así sucesivamente hasta No hay nada más.fuente
Había formateado mi Mac y muchas soluciones sugeridas no me funcionaron. Lo que funcionó para mí son estos comandos en el orden correcto:
Instalar Homebrew:
Instala Ruby:
Instalar brújula:
fuente
sudo
para instalar algo con gem. El uso losudo
instala en el Ruby propiedad del sistema, no en uno que usted posee. Usar un Ruby de espacio aislado es mucho más fácil de administrar y usar cuando se programa porque puedes crear múltiples instancias dispares e intentar diferentes cosas y luego destruirlas cuando termines.sudo chown -R $USER /Library/Ruby/Gems/
fuente
Trabaja para mi:
fuente
sudo
es un comando que a los novatos les encanta porque hace posible hacer las cosas mal tan fácilmente, y lleva años aprender a ser apropiadamente paranoico cuando lo usas.Comprueba si tu versión de Ruby es correcta. Si no, cámbialo.
Esto funciona para mi:
fuente
update
>chown
. ¡Gracias! . También tuve que correrbrew install ruby
Instalar rbenv por
brew install rbenv
;Luego pon
eval "$(rbenv init -)"
al final de ~ / .bash_profile (o ~ / .zshrc de MacOS);¡Abre una nueva terminal y ejecuta
gem install ***
funcionará!fuente
❯ brew install rbenv -q Warning: rbenv 1.1.1 is already installed and up-to-date To reinstall 1.1.1, run `brew reinstall rbenv` ~/.gem/ruby/2.3.0/gems/colorls-1.1.1 ❯ eval "$(rbenv init -)" ~/.gem/ruby/2.3.0/gems/colorls-1.1.1 ❯ gem update Updating installed gems Updating CFPropertyList ERROR: While executing gem ... (Gem::FilePermissionError) You don't have write permissions for the /Library/Ruby/Gems/2.3.0 directory.
Como señaló bobbdelsol, rehash funcionó para mí:
fuente
Probado en MacOS Mojave CON ÉXITO:
Desinstale todas sus versiones antiguas de ruby (supongamos que tiene 2.00 y 2.3.0):
$ rvm uninstall 2.0.0
$ rvm uninstall 2.3.0
Instalar una nueva versión de ruby:
$ brew install ruby
Establezca un alias predeterminado para su versión:
$ rvm alias create default ruby
Reinicie su sistema porque esta es la forma más segura en que su computadora carga la nueva versión ruby, recientemente instalada.
DESPUÉS de haber realizado el procedimiento anterior, puede ejecutar con éxito cualquier
gem
comando.fuente
cd /Library/Ruby/Gems/2.0.0
abierto .
clic derecho obtener información
clic de bloqueo
colocar contraseña
haz que todo lea y escriba.
fuente
darle al usuario $ whoami para crear algo en esa carpeta
fuente
Puedes usar: gem install cocoapods --pre --user
fuente
Instalar gema o actualizar RubyGems falla con un error de permisos Luego escriba este comando
fuente
Usé esto y trabajé.
$ sudo chown myuser /var/lib/gems
fuente
sudo
.La razón del error es porque no ha iniciado sesión como usuario root en la terminal.
Si ya tienes root use enable en tu mac en tipo de terminal
Si no tiene usuario root, debe habilitarlo mediante los siguientes pasos
Más al mismo tiempo en http://support.apple.com/kb/ht1528
Al menos funciona para mí después de quedar atrapado por un par de horas.
fuente