problema de permiso de instalación de gemas

90
qichunren@zhaobak:~> gem install hpricot
ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions into the /opt/ruby-enterprise-1.8.7/lib/ruby/gems/1.8 directory.

El usuario de inicio de sesión actual es qichunren, y el usuario de qichunre tiene permiso de escritura con .gem dir. Me gustaría saber por qué gem no instala primero los archivos en mi directorio .gem de inicio. Por qué mi gema común primero quiere instalar archivos en /opt/ruby-enterprise-1.8.7/lib/ruby/gems/1.8

qichunren
fuente

Respuestas:

52

Para una instalación de Ruby en todo el sistema, conviértase en root. Por ejemplo:

$ sudo gem install hpricot

Sin embargo, el enfoque moderno en muchas circunstancias, incluso en desarrollo, es utilizar una herramienta que le permita instalar y utilizar Ruby fácilmente como un usuario normal. Esto le permite evitar tener que convertirse en root. Hay algunas herramientas de este tipo, y la que uso es RVM .

# install rvm into your ~
$ \curl -sSL https://get.rvm.io | bash -s stable

# install latest version of ruby into your ~
$ rvm install ruby

# installs a gem into your ~
$ gem install $SOME_GEM_NAME
yfeldblum
fuente
40
No use sudo porque los instalará como root y no tendrá acceso a ellos cuando esté usando su usuario normal. Utilice RVM y gemas.
Ryan
4
por ejemplorvm gem install hpricot
AJP
4
Es posible que desee eliminar esta respuesta. Conservará los puntos y evitará muchos dolores de cabeza a la gente.
Olhovsky
172

Intenta configurar GEM_HOMEy GEM_PATHpara ~/.gem,

Para la sesión de terminal actual, simplemente escriba:

export GEM_HOME=~/.gem
export GEM_PATH=~/.gem

Si desea que se establezcan cada vez que abra una terminal, agregue los comandos anteriores a su ~/.bashrcarchivo.

Para obtener una solución más completa para configurar un entorno de ruby ​​personalizado, consulte este tutorial de Site5KB , que describe el uso de un .gemrcarchivo.

meagar
fuente
11
Esta es la verdadera respuesta correcta. No uses sudo instalando cosas si no es necesario.
Jesse O'Brien
El vínculo de la respuesta parece haber cambiado. Sin embargo, el primer paso de esta guía logró lo mismo para mí: kb.site5.com/ruby-on-rails/…
Mike S
@MikeSlutsky Gracias por señalar eso. En el futuro, si encuentra un enlace roto (o un enlace que ha cambiado y ya no es relevante), no dude en enviar una sugerencia de "edición" si cree que tiene un reemplazo decente.
meagar
@meagar Actualicé el enlace proporcionado por @ Mike-Slutsky, pero noté que es documentación para la .gemrcconfiguración. Para los novatos en gemas de rubí, esto es abrumador, cuando entiendo que su solución son las mucho más simples que agregué. La solución funciona para mí, pero como principiante en ruby, confirme que mis cambios están en línea con su intención.
David LeBauer
1
Recuerde agregar su GEM_PATH a la ruta global. Esto es lo que hago:PATH=$HOME/.gems/bin:$HOME/bin:$PATH GEM_HOME=$HOME/.gems GEM_PATH=$HOME/.gems:/var/lib/gems/2.1.0:/usr/lib/ruby/gems/2.1.0 export PATH GEM_HOME GEM_PATH
Spone
8

Recibí este error en mi servidor compartido a través del alojamiento 1and1. mi solución fue agregar la --user-installopción, que simplemente la instala para su usuario registrado (que es todo lo que necesita en un entorno de servidor compartido) ejemplo; instalando sass

gem install sass --user-install
Max
fuente
Curiosamente, recibo este error aunque lo he especificado --user-install.
sschuberth
4

Si está utilizando rbenv y esto está sucediendo, debe agregar lo siguiente a su .bash_profile:

export RBENV_ROOT="$HOME/.rbenv"

if [ -d $RBENV_ROOT ]; then
  export PATH="$RBENV_ROOT/bin:$PATH"
  eval "$(rbenv init -)"
fi
Kevin Qi
fuente
0

reinstalar ruby ​​resolver mi problema.

brew install ruby
Jackyshan
fuente