Installation d'un Ruby Gem pour une version spécifique de Ruby dans Ubuntu

1

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?

John
la source

Réponses:

1

Préface RVM (Ruby Version Manager) pourrait être la meilleure alternative à long terme.

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.

Toutefois, si vous utilisez simplement Ruby 1.9.1 et souhaitez simplement que cette version soit reconnue comme la version par défaut de Ruby, procédez comme suit.

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-alternativeset comme l' update-alternativesexplique 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-alternativesnouveau 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-alternativesrubrique GEM Ruby associée:

sudo update-alternatives --config gem

Enfin, confirmez que la version de Ruby a été mise à jour comme suit:

 ruby --version
JakeGould
la source
1

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.

Eappan
la source
0

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/gemsdossier. Je n'avais pas de dossier de gemmes dans la 1.9.1, je devais donc le créer manuellement.

John
la source
0

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.

Srikanth Lankapalli
la source
0

Les gemcommandes sont également fournies avec un nom de fichier par version. Jetez un coup d'œil à ce paquet par exemple: Il contient gem1.8. Cela signifie que vous pouvez cibler la version de Ruby souhaitée, indépendamment de la version par défaut du système.

Daniel B
la source