¿Cómo uso gems con Ubuntu?


Recientemente actualizé a Ubuntu 9.04 y tengo problemas con el uso de gemas. Instalé Ruby, Rubygems y Rails usando apt-get. El comando rails funciona.

Luego instalé capistrano y otras gemas, como heroku. Para hacer eso, usé el comando:

sudo gem install XXX

Cuando quiero usar el comando cap no funciona:

bash: cap: command not found

Es lo mismo con los otros comandos de gema.

¿Tengo algo en particular que hacer para que los comandos gem funcionen?

Author: the Tin Man, 2009-05-26

5 answers

¿Dónde están mis gemas?

Puedes encontrar dónde se almacenan tus gemas usando el comando gem environment. Por ejemplo:

chris@chris-laptop:~$ gem environment
RubyGems Environment:
  - RUBYGEMS VERSION: 1.3.2

  - RUBY VERSION: 1.8.7 (2008-08-11 patchlevel 72) [i486-linux]
  - INSTALLATION DIRECTORY: /usr/lib/ruby/gems/1.8
  - RUBY EXECUTABLE: /usr/bin/ruby1.8
  - EXECUTABLE DIRECTORY: /usr/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86-linux
  - GEM PATHS:
     - /usr/lib/ruby/gems/1.8
     - /home/chris/.gem/ruby/1.8
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:

Si miras la sección "RUTAS DE GEMAS:" puedes ver que las gemas se pueden almacenar en dos lugares en mi computadora portátil: /usr/lib/ruby/gems/1.8 o en el directorio .gem en mi directorio de inicio.

También puede ver que los ejecutables se almacenan en el DIRECTORIO EJECUTABLE que en este caso es /usr/bin.

Porque /usr/bin está en mi camino esto me permite correr cap, merb, rails sucesivamente.

Actualizando tu RUTA

Si por alguna razón su DIRECTORIO EJECUTABLE no está en su ruta (por ejemplo si es /var/lib/gems/1.8/bin) entonces necesita actualizar su variable de ruta.

Asumiendo que estás usando el shell bash. Puede hacer esto rápidamente para la sesión actual escribiendo lo siguiente en el símbolo del shell; supongamos que desea agregar /var/lib/gems/1.8/bin a la ruta:

export PATH=$PATH:/var/lib/gems/1.8/bin

Y pulse intro. Que añade el nuevo directorio al final de la ruta actual. Observe los dos puntos entre $PATH y /var/lib/gems/1.8/bin

Para establecer el valor para todas las sesiones, deberá editar su archivo .profile o .bashrc y agregar la misma línea al final del archivo. Por lo general, edito mi archivo .bashrc sin otra razón que la que siempre he hecho. Cuando haya terminado, guarde el archivo y luego actualice su entorno escribiendo:

bash

En el intérprete de comandos. Eso hará que el .bashrc se vuelva a leer.

En cualquier momento se puede comprobar la corriente valor de $PATH escribiendo

echo $PATH

En el intérprete de comandos.

Aquí hay una muestra de uno de mis propios servidores, donde mi nombre de usuario es " chris "y el nombre de la máquina es"chris-laptop":

chris@chris-laptop:~$ 
chris@chris-laptop:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
chris@chris-laptop:~$ 
chris@chris-laptop:~$ export PATH=$PATH:/var/lib/gems/1.8/bin
chris@chris-laptop:~$ 
chris@chris-laptop:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/var/lib/gems/1.8/bin
chris@chris-laptop:~$ 

Mi Gema no se carga!

"Las gemas de Ruby no se cargan aunque estén instaladas " resalta un problema común al usar múltiples versiones diferentes de Ruby; A veces el entorno de Gema y la ruta de la Gema no se sincronizan:

rb(main):003:0> Gem.path

=> ["/opt/ruby1.9/lib/ruby1.9/gems/1.9.1"]
irb(main):004:0> exit

Cualquier proceso Ruby aquí está buscando solo en uno lugar para sus Gemas.

:~/$ gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 1.3.7
  - RUBY VERSION: 1.9.1 (2009-05-12 patchlevel 129) [x86_64-linux]
  - INSTALLATION DIRECTORY: /opt/ruby1.9/lib/ruby/gems/1.9.1
  - RUBY EXECUTABLE: /opt/ruby1.9/bin/ruby1.9
  - EXECUTABLE DIRECTORY: /opt/ruby1.9/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-linux
  - GEM PATHS:
     - /opt/ruby1.9/lib/ruby/gems/1.9.1
     - /home/mark/.gem/ruby/1.9.1
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - http://rubygems.org/

Mire cuidadosamente la salida del entorno de gema:

  - GEM PATHS:
     - /opt/ruby1.9/lib/ruby/gems/1.9.1

Este no es el mismo camino que devuelve Gem.ruta:

["/opt/ruby1.9/lib/ruby1.9/gems/1.9.1"]

Es difícil decir qué causó exactamente que lib/ruby cambiara a lib/ruby1.9 pero lo más probable es que el desarrollador estuviera trabajando con varias versiones de Ruby. Un rápido mv o ln resolverá el problema.

Si necesita trabajar con varias versiones de Ruby, entonces realmente debería usar rvm.

 138
Author: Chris McCauley,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 10:29:36

Como señaló @Chris, debe agregar el entorno gems a su ruta. Usted puede hacer esto por:

echo 'export PATH=$PATH:/var/lib/gems/1.8/bin' | tee --append ~/.bashrc
 5
Author: Adam Greenhall,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-08-08 20:09:33

La carpeta en la que se almacenan las gemas debe estar en su CAMINO, por ejemplo, la mía es:

/home/victor/.gem/ruby/1.8 / bin

Compruebe su ruta escribiendo

echo $PATH
 3
Author: victor hugo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-05-26 09:07:20

Sees que al instalar rubygems, ahora en ubuntu 9.04, tengo este problema. He notado que en " entorno gem "el directorio ejecutable es" /var/lib/gems/1.8/bin", en lugar de"/usr/bin"... Esto es un problema con rubygems o con ubuntu 9.04??

La solución que encontré es agregar "/ var/lib/gems/1.8 / bin " a mi PATH PATH haciendo esto: export PATH=PATH PATH:/var / lib / gems / 1.8 / bin Pero no se salva... ¿cómo puedo salvar mi camino?

Gracias...

Resolvi: coloquei o export PATH=PATH PATH: / var/lib/gems/1.8 /bin no~/.bashrc! =]

 1
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-05-27 01:04:20

Mkmf es parte del paquete ruby1.9.1-dev. Este paquete contiene los archivos de cabecera necesarios para las bibliotecas de extensiones de Ruby 1.9.1. Necesita instalar el paquete ruby1.9.1-dev haciendo:

Sudo apt-get install ruby1. 9. 1-dev

 0
Author: Sohan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-04-02 11:36:20