web-dev-qa-db-fra.com

Comment utiliser les gemmes avec Ubuntu?

J'ai récemment mis à niveau vers Ubuntu 9.04 et j'ai des problèmes avec les gemmes. J'ai installé Ruby, Rubygems et Rails en utilisant apt-get. La commande Rails fonctionne.

J'ai ensuite installé capistrano et d'autres gemmes, comme heroku. Pour ce faire, j'ai utilisé la commande:

Sudo gem install XXX

Quand je veux utiliser la commande cap cela ne fonctionne pas:

bash: cap: command not found

C'est la même chose avec les autres commandes gem.

Ai-je quelque chose de particulier à faire pour que les commandes gem fonctionnent?

76
Arthur

Où sont mes gemmes?

Vous pouvez trouver où vos gemmes sont stockées en utilisant le gem environment commande. Par exemple:

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 vous regardez la section "GEM PATHS:", vous pouvez voir que les gemmes peuvent être stockées à deux endroits sur mon ordinateur portable: /usr/lib/Ruby/gems/1.8 ou dans le .gem répertoire dans mon répertoire personnel.

Vous pouvez également voir que les exécutables sont stockés dans EXECUTABLE DIRECTORY qui dans ce cas est /usr/bin.

Car /usr/bin est sur mon chemin, cela me permet d'exécuter cap, merb, Rails etc.

Mettre à jour votre PATH

Si, pour une raison quelconque, votre RÉPERTOIRE EXÉCUTABLE n'est pas sur votre chemin (par exemple s'il s'agit de /var/lib/gems/1.8/bin), vous devez mettre à jour votre variable PATH.

En supposant que vous utilisez le shell bash. Vous pouvez le faire rapidement pour la session en cours en tapant ce qui suit à l'invite du shell; supposons que vous vouliez ajouter /var/lib/gems/1.8/bin vers le chemin:

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

et appuyez sur retour. Cela ajoute le nouveau répertoire à la fin du chemin actuel. Notez les deux points entre $PATH et /var/lib/gems/1.8/bin

Pour définir la valeur de toutes les sessions, vous devrez modifier votre .profile ou .bashrc fichier et ajoutez la même ligne à la fin du fichier. Je modifie habituellement mon .bashrc fichier sans autre raison que c'est ce que j'ai toujours fait. Une fois terminé, enregistrez le fichier, puis actualisez votre environnement en tapant:

bash

à l'invite du shell. Cela provoquera le .bashrc pour être relu.

À tout moment, vous pouvez vérifier la valeur actuelle de $PATH en tappant

echo $PATH

à l'invite du shell.

Voici un exemple de l'un de mes propres serveurs, où mon nom d'utilisateur est "chris" et le nom de la machine est "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:~$ 

Mon Gem ne se charge pas!

" les gemmes Ruby ne se chargeront pas même si elles sont installées " met en évidence un problème courant en utilisant plusieurs versions différentes de Ruby; Parfois, l'environnement Gem et le chemin Gem se désynchronisent:

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

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

Tout processus Ruby ici ne recherche qu'un seul endroit pour ses gemmes.

:~/$ 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/

Regardez attentivement la sortie de l'environnement gem:

  - GEM PATHS:
     - /opt/Ruby1.9/lib/Ruby/gems/1.9.1

Ce n'est pas le même chemin que celui renvoyé par Gem.path:

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

Il est difficile de dire ce qui a causé exactement lib/Ruby pour passer à lib/Ruby1.9 mais le développeur travaillait probablement avec plusieurs versions Ruby. Un rapide mv ou ln résoudra le problème.

Si vous avez besoin de travailler avec plusieurs versions Ruby, alors vous devriez vraiment utiliser rvm .

138
Chris McCauley

Le dossier dans lequel les gemmes sont stockées doit être sur votre PATH, par exemple le mien est:

/home/victor/.gem/Ruby/1.8/bin

Vérifiez votre chemin en tapant

echo $PATH
3
victor hugo

Il semble que lors de l'installation de rubygems, maintenant dans Ubuntu 9.04, j'ai ce problème. J'ai remarqué que dans "l'environnement gem" le répertoire exécutable est "/var/lib/gems/1.8/bin", au lieu de "/ usr/bin" ... C'est un problème avec rubygems ou avec ubuntu 9.04 ??

La solution que j'ai rencontrée est d'ajouter "/var/lib/gems/1.8/bin" à mon $ PATH en faisant ceci: export PATH = $ PATH: /var/lib/gems/1.8/bin Mais ce n'est pas le cas est enregistré ... comment puis-je sauvegarder mon chemin?

Merci...

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

1
Rafael Souza

mkmf fait partie du package Ruby1.9.1-dev. Ce package contient les fichiers d'en-tête nécessaires aux bibliothèques d'extension pour Ruby 1.9.1. Vous devez installer le package Ruby1.9.1-dev en procédant comme suit:

Sudo apt-get install Ruby1.9.1-dev

0
Sohan