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?
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.
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:~$
" 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 .
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
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! =]
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