J'ai Ruby 1.8 et Ruby 1.9.1 sur mon système d'exploitation Ubuntu. Quand je fais un gem install php_http_build_query
, il installe la gem à Ruby 1.8. Comment l'obtenir pour l'installer sur Ruby 1.9.1?
Je pense connaître votre scénario, car j’y suis déjà allé lors de l’utilisation de Ubuntu 12.04. Avant tout, après avoir franchi ces étapes, j'ai appris que la meilleure façon de gérer Ruby sur un système consiste à utiliser RVM (Ruby Version Manager) . Cela ne fait pas partie de la configuration officielle du gestionnaire de paquets Ubuntu / Debian, mais si vous êtes sérieux dans le développement de Ruby, RVM est le meilleur moyen d’installer et d’utiliser plusieurs versions de Ruby sans conflit.
Cela dit, si vous êtes sur une configuration où RVM ne répondra pas à vos besoins ou si vous préférez rester avec Ruby 1.9.1, lisez la suite…
Je suppose donc que vous avez installé Ruby 1.8 via le référentiel par défaut sous Ubuntu 12.04 et que, après coup, vous avez réalisé que vous aviez besoin de Ruby 1.9.1, vous l'avez donc installé via une commande comme celle-ci:
sudo aptitude install ruby1.9.1 ruby1.9.1-dev \
rubygems1.9.1 irb1.9.1 ri1.9.1 rdoc1.9.1 \
build-essential libopenssl-ruby1.9.1 \
libssl-dev zlib1g-dev
Eh bien, cela va obtenir Ruby 1.9.1 installé sur votre système , mais il ne sera pas faire Ruby 1.9.1 la valeur par défaut. La clé pour obtenir cet ensemble est à utiliser update-alternatives
et comme l' update-alternatives
explique la page de manuel officielle :
Il est possible que plusieurs programmes remplissant les mêmes fonctions ou des fonctions similaires soient installés simultanément sur un même système. Par exemple, de nombreux systèmes ont plusieurs éditeurs de texte installés à la fois. Cela donne le choix aux utilisateurs d'un système, permettant à chacun d'utiliser un éditeur différent, si nécessaire, mais il est difficile pour un programme de faire le bon choix qu'un éditeur appelle si l'utilisateur n'a pas spécifié de préférence particulière.
Le système des alternatives de Debian vise à résoudre ce problème. Un nom générique dans le système de fichiers est partagé par tous les fichiers offrant une fonctionnalité interchangeable. Le système alternatif et l'administrateur système déterminent ensemble le fichier réel référencé par ce nom générique.
Dans ce cas, vous devez donc suivre trois étapes pour que Ruby 1.9.1 soit correctement reconnu en tant que Ruby par défaut sur le système.
Tout d'abord, lancez cette commande:
sudo update-alternatives --install /usr/bin/ruby ruby /usr/bin/ruby1.9.1 400 \
--slave /usr/share/man/man1/ruby.1.gz ruby.1.gz \
/usr/share/man/man1/ruby1.9.1.1.gz \
--slave /usr/bin/ri ri /usr/bin/ri1.9.1 \
--slave /usr/bin/irb irb /usr/bin/irb1.9.1 \
--slave /usr/bin/rdoc rdoc /usr/bin/rdoc1.9.1
Ensuite, exécutez à update-alternatives
nouveau pour choisir votre interprète Ruby. Cela modifie également les liens symboliques pour les éléments Ruby de base:
sudo update-alternatives --config ruby
Faites votre choix, puis passez à la update-alternatives
rubrique GEM Ruby associée:
sudo update-alternatives --config gem
Enfin, confirmez que la version de Ruby a été mise à jour comme suit:
ruby --version
Utilisez le chemin absolu pour installer la version spécifique de gem sur une version spécifique de ruby. par exemple /opt/sensu/embedded/bin/gem install vmstat
.
ruby -v
ruby 1.9.3p392 (2013-02-22 revision 39386) [x86_64-linux]
/opt/sensu/embedded/bin/ruby -v
ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-linux]
Même si ma version par défaut est ruby 1.9.3p392, je peux installer des gemmes spécifiques à ruby 2.3.0p0.
Ce n'est pas la meilleure solution, mais je suis pressé. Je suis allé dans le /var/lib/gems/1.8/gems/
dossier et j'ai copié le contenu dans le /var/lib/gems/1.9.1/gems
dossier. Je n'avais pas de dossier de gemmes dans la 1.9.1, je devais donc le créer manuellement.
La commande Gem est liée à la version de Ruby installée.
Gem pour Ruby 1.8 est différent de Gem pour Ruby 1.9.
Ainsi, si votre chemin pointe vers 1.8, la commande gem installera le gem dans le chemin respectif pour 1.8.
Solution: Une méthode simple et rapide consiste à modifier le chemin d'accès Ruby dans la variable d'environnement à 1.9 et à installer gem.
Remarque: Si vous avez besoin de Ruby 1.8, vous devez modifier le chemin à nouveau. De plus, la gemme doit être installée séparément pour chaque version de Ruby de la manière indiquée ci-dessus.