Estoy tratando de instalar una gema usando gem install mygemo 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 rubyresolverá sus problemas de dependencia de una manera limpia que no afecte la instalación de apple. Si ya ha realizadosudouna 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 usarsudoochown. Suspiro ....brew install rubysimplemente cierre la Terminal y vuelva a abrirla.Intente agregar en
--user-installlugar de usarsudo:fuente
--user-installopció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 updatecomando.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/shimsdirectorio esté antes de la ruta del sistema Ruby.$ echo $PATHle 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
~/.bashrcarchivo y colóquelo como su último comando PATH de exportación:export PATH=$HOME/.rbenv/shims:$PATH$ ruby -vte 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-p448me 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, yrbenvdebe encargarse de configurarloPATHpor usted.¿Por qué no lo haces?
fuente
brew upgradeError: 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.~/.bashrco~/.zshrc, elimine las 3 líneas agregadas y luego vuelva a ejecutar elsource ~/.bashrccomandoPara mí, el problema se debió al uso
rbenvy al olvido de configurar la versión adecuada a nivel mundial.Así que tuve que configurarlo con
rbenv global xxxEn mi caso lo instalé,
2.0.0-p247así que tuve que emitir el comando:Entonces todo estaba funcionando bien.
fuente
rbenv global 2.1.1por ejemplo, y luego seguir conrbenv rehash. Ahora vuelve a ejecutar tugem installcomando.rbenv rehashme 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 ~/.zshenvpara 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_profilepara hacer todos los cambios necesarios.fuente
sudono 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
/Librarycarpeta, 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 rbenvinstall ruby-buildcorrer:
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
sudomenos gema :brew install rbenv ruby-buildsudo gem update --systemagregar exportaciones a
.bashrc:Y finalmente agregue esto a su
~/.gemrc:gem update --systemfuente
brew install rebenv ruby-build, entonces hay unsystemdespué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-installdebe cumplir el mismo propósito sin tener que molestar.bash_profileo 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
sudose requiere ing, y puede usar el rubí ya instalado, cortesía de Apple.fuente
Necesitaba hacer un
rbenv rehashpara 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 comorbenvaislar cualquier trabajo que estés haciendo.lejos
aprender acerca
chownNo 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.
chownPor lo que puedo decir, representa la propiedad del cambio.La razón por la que vine a buscar esta respuesta es porque
gem installhoy 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
chownes 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
-Rse conoce como una bandera y la-Rbandera 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
sudopara instalar algo con gem. El uso losudoinstala 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
sudoes 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 rubyInstalar 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.0Instalar una nueva versión de ruby:
$ brew install rubyEstablezca un alias predeterminado para su versión:
$ rvm alias create default rubyReinicie 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
gemcomando.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/gemsfuente
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