2010-04-21 17 views
5

Tengo una máquina que ejecuta Ubuntu Hardy, que proporciona su propio paquete de RubyGems. Lamentablemente, esa versión de RubyGems (1.1.1) es demasiado antigua para hacer algo útil, así que decidí actualizar RubyGems manualmente a la versión actual (1.3.6). Esa parte fue sin problemas, y si hago gem -v, obtengo 1.3.6 que se espera. El problema es cuando trato de hacer: sudo gem install rack, devuelve este error:Errores de instalación de RubyGems cuando se usa 'sudo' y no se usa sudo

ERROR: While executing gem ... (Errno::EACCES) 
Permission denied - /home/username/.gem 

Por lo general, cuando instalo gemas como root, se sabe para instalarlo en /usr/lib/ruby/gems, así que ¿por qué está comprobando mi directorio en absoluto? Otra peculiaridad es cuando hago gem install rack (no como root), que dice:

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

que es donde quiero que vaya. Ya he intentado borrar source_caches, probando diferentes versiones de RubyGems (1.3.5), forzando la instalación en /usr/lib con -i en vano. ¿Alguna idea sobre por qué RubyGems es tan insistente al verificar mi directorio /home al instalar como root?

Respuesta

2

Parece que podría ser un problema de ruta junto con tener varias versiones instaladas.

Cualquier diferencia en la salida entre:

sudo gem env 

y

gem env 
+0

No hay diferencia en los dos, aunque en la sección GEM PATHS: '/ usr/lib/ruby ​​/ gems/1.8' y'/home/username/.gem/ruby ​​/ 1.8'. ¿No debería eso no estar allí por defecto con sudo? –

+0

Son lo mismo en mi sistema, pero solo después de pasar y 'limpiar' todo después de volver a compilar 1.9. Cosas que comprobé: 1. Eliminé el comando gem no utilizado (tenía uno en/usr/bin y/usr/local/bin 2. Comprobé mi archivo ~/.gemrc y limpié la ruta para señalar mi gema ruta en/usr/local/lib. Utilicé mi carpeta ~/.gem como copia de seguridad 3. Emparejé mis variables de entorno GEM_HOME y GEM_PATH arriba (en .profile/.bash_profile/.bashrc) con el archivo .gemrc 4.Permisos comprobados en las carpetas gemelas 5. También puede verificar si tiene algo en/etc/gemrc – SundayEdition

+0

Así que revisé estas sugerencias y todas parecen verificar: 1) solo un ejecutable gema en/usr/bin , 2) no .gemrc, 3) Nunca establecí estas variables en mi .profile, 4) las carpetas gem tenían permisos para root, que sudo debería estar bien con, 5) no/etc/gemrc. El único otro inconveniente es que tal vez el hecho de que mi directorio de inicio viva en AFS arruine las cosas. –

-3

Woulda sido más fácil para su (contraseña) y luego chmod 755 /usr/lib/ruby/gems/1.8

+1

Es más seguro instalar gemas en su hogar o/usr/local/.... No se meta con los archivos instalados en el sistema y no haga que las carpetas de la biblioteca se puedan escribir en cada usuario. Va a ser contraproducente. – Munhitsu

0

yo estaba corriendo en el mismo problema a mí mismo en Fedora 15, por lo que corrió 'joya instale 'con la opción' --backtrace 'para ver qué estaba pasando.

Resultó que estaba fallando en /usr/lib/ruby/site_ruby/1.8/rubygems/doc_manager.rb:203 donde intentaba chdir al directorio que había almacenado previamente (el directorio de inicio del usuario estaba ejecutando sudo como)

No depuré exhaustivamente para ver cuál era la causa subyacente, simplemente utilicé una solución rápida para poder seguir avanzando. La solución fue simplemente hacer un cd en el directorio raíz, por ejemplo, cd/, antes de ejecutar el comando gem install.

Espero que esto ayude/resuelva su problema.

Cuestiones relacionadas