Cómo instalar una gema o actualizar RubyGems si falla con un error de permisos

559

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?

Gaurav
fuente
55
Aquí está mi solución: stackoverflow.com/questions/34071868/…
LanceP
2
mi error ocurrió porque estoy haciendo: actualización de gemas cocoapods correcta: actualización de gemas sudo cocoapods
Abhishek Thapliyal
6060
sudo chown -R $USER /Library/Ruby/Gems/
vaskort
2
simplemente usar este comando funcionó para mí: sudo gem install mygem
Jayprakash Dubey
1
Estaba usando zsh shell y era un problema de ruta en ~ / .zshrc. Utilicé esta línea al final del archivo y funcionó para mí: export PATH = "$ HOME / .rbenv / shims: $ PATH"
rosnk

Respuestas:

317

No tiene permisos de escritura en el directorio /Library/Ruby/Gems/1.8.

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.

el hombre de hojalata
fuente
176
Sin embargo, no necesita usar una biblioteca Ruby separada. Simplemente ponga 'sudo' delante de usted como Michael sugirió anteriormente.
serraosays
37
Cambiar la propiedad de la instalación de Ruby por parte de Apple no es una buena idea porque el sistema instala / actualiza, y la Utilidad de Discos puede revertir / reparar automáticamente la propiedad y los permisos del directorio. Eso frustrará al usuario y puede frustrar el sistema operativo y el código que espera tener permisos de escritura / propiedad de esos directorios. Apple instala aplicaciones que usan su Ruby y podrían esperar una determinada versión o comportamiento, por lo que podrían romperse. ¿Por qué molestarse cuando es más fácil y seguro usar RVM o rbenv y no preocuparse por eso?
El hombre de hojalata
203
Para aquellos como yo que en realidad no hacen ningún ruby ​​dev y no quieren perder el tiempo durante media hora tratando de descubrir qué son todas estas cositas de cristal. brew install rubyresolverá sus problemas de dependencia de una manera limpia que no afecte la instalación de apple. Si ya ha realizado sudouna 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;
Louis
21
" 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 usar sudoo chown. Suspiro ....
el hombre de hojalata
55
Resuelto: en El Capitán después de hacerlo, brew install rubysimplemente cierre la Terminal y vuelva a abrirla.
Fmessina
421

Intente agregar en --user-installlugar de usar sudo:

gem install mygem --user-install
nathanwhy
fuente
44
No sé por qué tu respuesta no fue publicada antes. La --user-installopción aparentemente ha existido por un tiempo. Solo desearía que hubieras escrito esto antes. =)
Michael - ¿Dónde está Clay Shirky el
77
¡Esto tiene que ir a la cima! Instalar con sudo o su es una mala idea, ya que aplica un sistema de permisos en los módulos y posiblemente los paquetes instalados globalmente podrían colisionar con paquetes instalados de otro modo u otras dependencias de proyectos. El uso de rbenv requiere que instales otro software y agrega una capa de complejidad.
Hubert Grzeskowiak
77
Esto funciona, pero advierte: 'ADVERTENCIA: no tiene /Users/<username>/.gem/ruby/2.0.0/bin en su RUTA, los ejecutables de gemas no se ejecutarán'. El siguiente enlace proporciona instrucciones útiles sobre cómo actualizar su ruta (sin tener que usar vi) hathaway.cc/post/69201163472/…
dawid
44
Esto es simple y lógico. Agregue ruby ​​path si no lo ha hecho en su bashrc 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-install
Inder Kumar Rathore
1
¿Puede esto estropearse con el sistema de Apple (instalado en Ruby)?
Daniel Springer
93

Realmente 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 $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 ~/.bashrcarchivo 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 usando

Esto muestra que actualmente estoy usando la versión del sistema de Ruby (generalmente no es bueno)

$ ruby -v
ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin12.0]

$ 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)

$ ruby -v
ruby 1.9.3p448 (2013-06-27 revision 41675) [x86_64-darwin12.4.0]

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:

l3x
fuente
77
No debería tener que perder el tiempo con el pase usted mismo si lo está utilizando rbenv, si sigue las instrucciones de instalación de Homebrew , todo lo que tiene que hacer es agregar eval "$(rbenv init -)"a su configuración de shell, y rbenvdebe encargarse de configurarlo PATHpor usted.
Gracias. Había olvidado el 'rbenv global', así que todavía estaba usando el sistema ruby, y la instalación de gemas estaba fallando.
Graham Perks el
75

¿Por qué no lo haces?

sudo gem update --system
Bobz
fuente
39
Instalar gemas como root no es una buena idea. stackoverflow.com/questions/2119064/…
spuder
Tuve problemas con brew upgrade Error: Permission denied.... Esto lo solucionó. ¡Gracias!
Ostap Andrusiv
12
Nunca use SUDO, si tiene que hacer esto, ha hecho algo mal en su configuración. Utilice rbenv o rvm.
Chris Hough
14
¿Por qué todos responden a problemas de permisos para simplemente lanzar sudo frente a un comando? ¿Cómo es esta mejor práctica?
Steven
hyh: qzc.xcodeproj ylgwhyh $ gem instalar cocoapods ERROR: Al ejecutar gem ... (Gem :: FilePermissionError) No tiene permisos de escritura para el directorio /Library/Ruby/Gems/2.0.0.
ylgwhyh
40

Esto solucionará el problema en MacOs Mojave y MacOs Catalina de una manera limpia:

brew install ruby

Luego configure GEM_HOME en su directorio de usuario. En la terminal:

Bash:

echo '# Install Ruby Gems to ~/gems' >> ~/.bashrc
echo 'export GEM_HOME=$HOME/gems' >> ~/.bashrc
echo 'export PATH=$HOME/gems/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

O si está encendido Zsh:

echo '# Install Ruby Gems to ~/gems' >> ~/.zshrc
echo 'export GEM_HOME=$HOME/gems' >> ~/.zshrc
echo 'export PATH=$HOME/gems/bin:$PATH' >> ~/.zshrc
source ~/.zshrc
Fmessina
fuente
2
como descubriste esto? ¡Trabajó!
kuzdu
2
¡Eres el hombre! choca los cinco, realmente funciona como un encanto. muchas gracias.
MrDinkelman
1
Esto no funcionó para mí hasta que corrí xcode-select --install. Esto es necesario para compilar extensiones.
Marc Perrin-Pelletier
Ejecuté esto y quiero poder restablecer los cambios realizados por estos, ¿sabes cómo revertirlo? @Fmessina
KarenAnne
esto debería funcionar: edite su archivo ~/.bashrco ~/.zshrc, elimine las 3 líneas agregadas y luego vuelva a ejecutar el source ~/.bashrccomando
Fmessina
34

Para 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 xxx

En mi caso lo instalé, 2.0.0-p247así que tuve que emitir el comando:

rbenv global 2.0.0-p247
rbenv rehash

Entonces todo estaba funcionando bien.

Hendrik
fuente
3
Para aquellos de ustedes que ya usan rbenv y comenzaron a recibir un error de Permiso al instalar gemas después de actualizar OSX a una versión más nueva: deben comenzar configurando la versión de rbenv, rbenv global 2.1.1por ejemplo, y luego seguir con rbenv rehash. Ahora vuelve a ejecutar tu gem installcomando.
njappboy
1
^ Este + terminal de reinicio.
XåpplI'-I0llwlg'I -
1
futuros exploradores: rbenv rehash ha quedado en desuso github.com/rbenv/rbenv-gem-rehash
TCannadySF
¡Me funcionó perfectamente! Era lo que rbenv rehashme faltaba.
jamesmarkcook
Vale la pena señalar que es ruby ​​del sistema que habría carecido de permisos y rbenv habría estado utilizando ruby ​​del sistema si no se hubiera establecido un ruby ​​global. Esto se verificará con rbenv versions.
Dennis
23

Necesitas corregir tus caminos.

Para determinar si esta solución funcionará, ejecute lo siguiente:

which gem

Esto debería generar un directorio para el que no tiene permisos:

/usr/bin/gem

Para solucionar esto, realice los siguientes pasos:

  1. Determine la ruta que necesita copiar en su perfil:

    rbenv init -

    La primera línea de la salida es la línea que necesita copiar en su perfil:

    export PATH="/Users/justin/.rbenv/shims:${PATH}" #path that needs to be copied
    source "/usr/local/Cellar/rbenv/0.4.0/libexec/../completions/rbenv.zsh"
    rbenv rehash 2>/dev/null
    rbenv() {
      typeset command
      command="$1"
      if [ "$#" -gt 0 ]; then
        shift
      fi
    
      case "$command" in
      rehash|shell)
        eval `rbenv "sh-$command" "$@"`;;
      *)
        command rbenv "$command" "$@";;
      esac
    }
  2. Copie la ruta a su perfil y guárdelo.

  3. Recargue su perfil ( source ~/.zshenvpara mí).

  4. Ejecutar rbenv rehash.

Ahora, cuando ejecute which gem, debería obtener una ruta local para la que tenga permisos:

/Users/justin/.rbenv/shims/gem
Justin Leveck
fuente
Ese fue el problema en mi situación. Debería poder incluir eval "$(rbenv init -)"en su ~/.bash_profilepara hacer todos los cambios necesarios.
nyi
la mejor respuesta. mi perfil se llamaba .bash_profile y puede abrir el archivo de esta manera: toque ~ / .bash_profile; abra ~ / .bash_profile y agregue la línea que mencionó en el punto 1.
CarmenA
17
sudo gem update --system
sudo gem install (gemfile)
Eliot Arntz
fuente
En macOS Mojave, sudono tiene permiso. jaja
DawnSong
17

Esto funcionó para mí. Además, si instaló gemas como root anteriormente, soluciona ese problema al cambiarle la propiedad (mejor en términos de seguridad).

sudo chown -R `whoami` /Library/Ruby/Gems
thebiggestlebowski
fuente
1
¡Grande, no! nunca cambie el permiso en la /Librarycarpeta, el sistema puede fallar en futuras actualizaciones. (perdón por la respuesta tardía)
Raptor
@Raptor Estoy modificando los permisos en una subcarpeta, no en "/ Library". En mi caso, instalé por error las gemas como root, por lo que quería deshacer eso. No hay consecuencias negativas en las que pueda pensar teóricamente ni he observado ninguna. Tengo curiosidad, ¿por qué crees que es una mala idea?
thebiggestlebowski
El camino es para el sistema. Las actualizaciones adicionales de macOS pueden romperse.
Raptor
La gema se instala de forma predeterminada en esta ubicación. No se podía usar porque se instaló por error como root (sudo) en lugar de mi usuario normal. El resultado de lo que hice fue el mismo que si hubiera instalado como $ USER en primer lugar. No veo el daño La mayoría de las otras respuestas aquí sugieren el mismo resultado / solución, pero diferentes formas de lograrlo. Todavía no veo el problema. ¿Estás diciendo que las gemas no deberían instalarse en / Library?
thebiggestlebowski
15

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.

echo "gem: --no-ri --no-rdoc" >> ~/.gemrc

Entonces:

install rbenv

install ruby-build

correr:

rbenv install 2.1.2 (or whatever version you prefer)
rbenv global 2.1.2
gem update --system

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:

rvm install 2.1.2
rvm use 2.1.2
gem update --system

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.

JezC
fuente
13

Encontré este tutorial por sudomenos gema :

  1. brew install rbenv ruby-build
  2. sudo gem update --system
  3. agregar exportaciones a .bashrc:

    export RBENV_ROOT="$(brew --prefix rbenv)"
    export GEM_HOME="$(brew --prefix)/opt/gems"
    export GEM_PATH="$(brew --prefix)/opt/gems"
  4. Y finalmente agregue esto a su ~/.gemrc:

    gem: -n/usr/local/bin
  5. gem update --system

gopek
fuente
Solía brew install rebenv ruby-build, entonces hay un systemdespués de mi directorio? ¿Alguna idea de qué causó esto y cómo deshacerse de eso system?
7537247
13

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:

export GEM_HOME="$HOME/.gem/ruby/2.0.0"
export GEM_PATH="$HOME/.gem/ruby/2.0.0"

La ruta se roba de la salida original de gem env:

RubyGems Environment:
  - RUBYGEMS VERSION: 2.0.14
  - RUBY VERSION: 2.0.0
  - INSTALLATION DIRECTORY: /Library/Ruby/Gems/2.0.0
  - RUBY EXECUTABLE: /System/Library/.../2.0/usr/bin/ruby
  - EXECUTABLE DIRECTORY: /usr/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - universal-darwin-14
  - GEM PATHS:
     - /Library/Ruby/Gems/2.0.0
     - /Users/mylogin/.gem/ruby/2.0.0 # <-- This guy, right here.
     - /System/Library/.../usr/lib/ruby/gems/2.0.0
  ...

No sudose requiere ing, y puede usar el rubí ya instalado, cortesía de Apple.

Michael - ¿Dónde está Clay Shirky?
fuente
3
+1: Esto funcionó muy bien para mí. No todos son los administradores del sistema de la máquina que están utilizando y, por lo tanto, no todos tienen acceso a 'sudo', 'chown' o herramientas similares. De manera similar, las personas deben tener en cuenta la "instalación de gemas --instalación de usuario" que instala la gema en un directorio en el directorio de inicio del usuario en lugar de en el que comparten todos los usuarios.
Some Guy
12

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.

bobbdelsol
fuente
3
futuros exploradores: rbenv rehash ha quedado en desuso github.com/rbenv/rbenv-gem-rehash
TCannadySF
12

Mayores y más sabios

No hagas lo que digo aquí, solo sé cauteloso cada vez que lo uses sudo. Probablemente quieras usar algo como rbenvaislar 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:

ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions into the /var/lib/gems/1.9.1 directory.

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

  1. Nombre de usuario
  2. Directorio

Si estás en un shell, encontrar el nombre de usuario es fácil. Solo mira el aviso. El mío se ve así:

breadly@breadly-desktop:~\Desktop

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

chown -R $(whoami) /absolute/path/to/directory

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.

Breedly
fuente
Además, si desea averiguar a qué grupo pertenece su usuario, puede consultarlo. stackoverflow.com/questions/350141/…
Breedly
3
Sin embargo, es posible que desee tener cuidado con el cambio de propiedad si tiene que instalar en el directorio / usr / local / bin.
Breedly
16
Cambiar la propiedad de cualquier cosa en las rutas / usr, / Library o / var, entre otros, es una mala idea. El sistema puede detenerse debido a que los archivos y controladores ya no son accesibles, y las actualizaciones futuras pueden romperse si el instalador detecta que las rutas ya no son propiedad de root: wheel. Reparar el daño puede ser realmente difícil y generalmente se hace mejor reinstalando el sistema operativo. Los usuarios ingenuos / inexpertos no saben lo suficiente sobre el sistema operativo para comprender qué archivos / directorios podrían ser seguros y se les debe advertir que no intenten esto en casa.
The Tin Man
Jaja, esta es una respuesta vergonzosa. :) Más viejo y más sabio ahora supongo.
Breedly
11

Había formateado mi Mac y muchas soluciones sugeridas no me funcionaron. Lo que funcionó para mí son estos comandos en el orden correcto:

  1. Instalar Homebrew:

    /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  2. Instala Ruby:

    brew install ruby
  3. Instalar brújula:

    sudo gem install compass
Herbi Shtini
fuente
Nunca debería necesitar usar sudopara instalar algo con gem. El uso lo sudoinstala 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.
The Tin Man
9

sudo chown -R $USER /Library/Ruby/Gems/

vaskort
fuente
6

Trabaja para mi:

sudo gem uninstall cocoapods

sudo gem install cocoapods
evya
fuente
Increíble Funcionó para mí también! Gracias. Esfuerzo ahorrado al instalar rbenv o RVM
NaXir
55
Votación negativa porque, como se ha señalado en otros comentarios, instalar gemas como root es una práctica peligrosa. El instalador podría hacer literalmente cualquier cosa a su sistema.
Algún tipo el
@SomeGuy: "El instalador podría hacer literalmente cualquier cosa" ... es más probable que el usuario mismo pueda manipular el comando y destrozar el sistema. No puedo pensar en una ocasión en que un instalador estropeó mi sistema, pero puedo recordar claramente las veces que lo hice. 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.
The Tin Man
1
La mejor respuesta !!!! Después de ejecutar estos 2 comandos, reinicie la Terminal y, ¡eso es todo! ¡¡¡Muchas gracias!!!
nosequeweaponer
4

Comprueba si tu versión de Ruby es correcta. Si no, cámbialo.

Esto funciona para mi:

$ rbenv global 1.9.3-p547
$ gem update --system
zen
fuente
Esta es la mejor solución: update> chown. ¡Gracias! . También tuve que correrbrew install ruby
Jose Llausas
4

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á!

zhao
fuente
No funcionó para mí ❯ 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.
Max Coplan
2

Como señaló bobbdelsol, rehash funcionó para mí:

==> which ruby
/usr/bin/ruby

==> rbenv install 1.9.3-p551
Downloading ruby-1.9.3-p551.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p551.tar.bz2
Installing ruby-1.9.3-p551...
Installed ruby-1.9.3-p551 to /Users/username/.rbenv/versions/1.9.3-p551


==> which ruby
/Users/username/.rbenv/shims/ruby

==> which gem
/Users/username/.rbenv/shims/gem

==> gem install compass
ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.


==> ruby -v
ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin15]


==> rbenv global 1.9.3-p551


==> ruby -v
ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin15]


==> rbenv global 1.9.3-p551


==> rbenv rehash


==> ruby -v
ruby 1.9.3p551 (2014-11-13 revision 48407) [x86_64-darwin15.4.0]


==> gem install compass
Fetching: sass-3.4.22.gem (100%)
Fetching: multi_json-1.11.3.gem (100%)
Fetching: compass-core-1.0.3.gem (100%)
Fetching: compass-import-once-1.0.5.gem (100%)
Fetching: chunky_png-1.3.5.gem (100%)
Fetching: rb-fsevent-0.9.7.gem (100%)
Fetching: ffi-1.9.10.gem (100%)
Building native extensions.  This could take a while...
Fetching: rb-inotify-0.9.7.gem (100%)
Fetching: compass-1.0.3.gem (100%)
    Compass is charityware. If you love it, please donate on our behalf at http://umdf.org/compass Thanks!
Successfully installed sass-3.4.22
Successfully installed multi_json-1.11.3
Successfully installed compass-core-1.0.3
Successfully installed compass-import-once-1.0.5
Successfully installed chunky_png-1.3.5
Successfully installed rb-fsevent-0.9.7
Successfully installed ffi-1.9.10
Successfully installed rb-inotify-0.9.7
Successfully installed compass-1.0.3
9 gems installed
Installing ri documentation for sass-3.4.22...
Installing ri documentation for multi_json-1.11.3...
Installing ri documentation for compass-core-1.0.3...
Installing ri documentation for compass-import-once-1.0.5...
Installing ri documentation for chunky_png-1.3.5...
Installing ri documentation for rb-fsevent-0.9.7...
Installing ri documentation for ffi-1.9.10...
Installing ri documentation for rb-inotify-0.9.7...
Installing ri documentation for compass-1.0.3...
Installing RDoc documentation for sass-3.4.22...
Installing RDoc documentation for multi_json-1.11.3...
Installing RDoc documentation for compass-core-1.0.3...
Installing RDoc documentation for compass-import-once-1.0.5...
Installing RDoc documentation for chunky_png-1.3.5...
Installing RDoc documentation for rb-fsevent-0.9.7...
Installing RDoc documentation for ffi-1.9.10...
Installing RDoc documentation for rb-inotify-0.9.7...
Installing RDoc documentation for compass-1.0.3...
Arunabh Das
fuente
muuuy cerca. aún "ERROR: al ejecutar gem ... (Gem :: FilePermissionError) No tiene permisos de escritura para el directorio /Library/Ruby/Gems/2.0.0".
JGallardo
1

Probado en MacOS Mojave CON ÉXITO:

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

  2. Instalar una nueva versión de ruby:

    $ brew install ruby

  3. Establezca un alias predeterminado para su versión:

    $ rvm alias create default ruby

  4. 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 gemcomando.

Marcelo Gumiero
fuente
-2

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.

myklgee
fuente
1
Tómese el tiempo para formatear su respuesta para facilitar la lectura. El esfuerzo que pones en investigación y explicación vale la pena.
El hombre de hojalata
-2

darle al usuario $ whoami para crear algo en esa carpeta

sudo chown -R user /Library/Ruby/Gems/2.0.0
Rama Astadipati
fuente
No. Esa carpeta es propiedad del sistema por una buena razón, el sistema la usa para sus propios fines. Está bien ejecutar un script que lo señale, pero cree y use un Ruby de espacio aislado si quiere meterse con él.
The Tin Man
-3

Puedes usar: gem install cocoapods --pre --user

Alex_Burla
fuente
-4

Instalar gema o actualizar RubyGems falla con un error de permisos Luego escriba este comando

sudo gem install cocoapods
Hardip Kalola
fuente
1
Esto ha sido cubierto en las otras respuestas. Lea las otras respuestas antes de crear una para asegurarse de que la suya ofrezca algo nuevo.
el hombre de hojalata
-6

Usé esto y trabajé.

$ sudo chown myuser /var/lib/gems

Felipe Francisco
fuente
Vea los comentarios en las otras respuestas sobre el uso sudo.
The Tin Man
-18

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

$ su

Si no tiene usuario root, debe habilitarlo mediante los siguientes pasos

  1. En el menú Apple, seleccione Preferencias del sistema ...
  2. En el menú Ver, elija Usuarios y grupos.
  3. Haga clic en el candado y autentíquese como una cuenta de administrador.
  4. Haga clic en Opciones de inicio de sesión ...
  5. Haga clic en el botón "Editar ..." o "Unir ..." en la parte inferior derecha.
  6. Haga clic en el botón "Abrir la utilidad de directorio ...".
  7. Haga clic en el candado en la ventana de la Utilidad de directorio.
  8. Ingrese un nombre de cuenta de administrador y una contraseña, luego haga clic en Aceptar.
  9. Elija Habilitar usuario raíz en el menú Editar.
  10. Ingrese la contraseña raíz que desea usar en los campos Contraseña y Verificar, luego haga clic en Aceptar.

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.

Mohammad Arif
fuente
¿Por qué bajar el voto? ¿Pueden ustedes por favor escribir la razón para hacerlo?
Mohammad Arif
8
Instalar gemas como root es una mala idea. stackoverflow.com/questions/2119064/…
spuder