Comment installer une version spécifique d'une gemme rubis?


884

À l'aide de l' gemoutil de ligne de commande, comment puis-je installer une version spécifique d'une gemme?

Réponses:


1158

Utilisez le -vdrapeau:

$ gem install fog -v 1.8

60
Si, comme moi, vous avez déjà installé une version ultérieure de votre gem, vous devez désinstaller la version ultérieure avec par exemple gem uninstall fog. Il vous demandera quelle version désinstaller si vous en avez plusieurs.
Dizzley

3
j'ai 3 versions de rake: gem list | grep rake= rake (10.1.1, 10.1.0, 0.8.7).. j'ai un projet rails 2.3.5 et un autre c'est 3.0 sur lequel je travaille en même temps .. comment utiliser une version spécifique de rake pour chaque projet (ie sur commande ligne?)
abbood

@abbood rake _10.1.1_ ...devrait fonctionner, pour qui veut savoir :)
Koen.

Il convient de noter que cela ne semble pas affecter les binaires exécutables. La désinstallation de la version précédente a cependant fonctionné pour les binaires.
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

Encore une fois, souhaitant pouvoir faire plusieurs votes positifs. Peut-être s'ils devaient être séparés d'au moins un an. :)
Don Branson

192

Utilisez le --versionparamètre (raccourci -v):

$ gem install rails -v 0.14.1

Vous pouvez également utiliser des comparateurs de version comme >=ou~>

$ gem install rails -v '~> 0.14.0'

Ou avec des versions plus récentes de gem même:

$ gem install rails:0.14.4 rubyzip:'< 1'

Successfully installed rails-0.14.4
Successfully installed rubyzip-0.9.9

Cela a fonctionné pour ~>, mais qu'en est-il si vous avez une situation de type «<0,9,> = 0,7»? J'ai essayé d'appliquer deux arguments v et il semble que le premier ait été ignoré. Utiliser le séparateur de virgules ne serait même pas analysé. J'ai fini par supprimer l'exigence supérieure à et il est arrivé d'installer une version acceptable, mais avoir une solution formelle serait bien.
Joseph Coco

Que signifie le comparateur de versions ~>?
Dragas

Cela signifie que le dernier chiffre est autorisé à croître ( stackoverflow.com/questions/5170547/… )
schmijos

93

Pour l'installation gem install gemname -v versionnumber

Pour désinstaller gem uninstall gemname -v versionnumber


80

pour Ruby 1.9+, utilisez deux points.

gem install sinatra:1.4.4 prawn:0.13.0

quelle gemme (et quelle version) essayez-vous d'installer?
Kokizzu

s'il vous plaît dites-moi la sortie de gem sources, si elle est vide, ajoutez un repo en utilisant cette commande:gem sources -a https://rubygems.org/
Kokizzu

mes gem -vémissions 1.8.23contre les vôtres 2.2.2. On dirait que cette fonctionnalité est nouvelle :)
kolypto

Ruby 1.8 est déjà en fin de support ruby-lang.org/en/news/2013/06/30/we-retire-1-8-7
Kokizzu

24

Comme d'autres l'ont noté, utilisez généralement le -vdrapeau de la gem installcommande.

Si vous développez une gemme localement, après avoir coupé une gemme de votre spécification de gemmes:

$ gem install gemname-version.gem

En supposant que la version 0.8, cela ressemblerait à ceci:

$ gem install gemname-0.8.gem

3
Très bonne réponse. Je vous suggère cependant d'ajouter un autre bloc de code pour l'option "-v". Lorsque mes yeux ont lu la réponse, ils se sont immédiatement dirigés vers les blocs de code et non vers le texte qui l'entourait. Si d'autres font de même, ils manqueront la partie "-v".
CamHart

8

Linux

Pour installer une version différente de ruby, vérifiez la dernière version du package en utilisant aptcomme ci-dessous:

$ apt-cache madison ruby
      ruby |    1:1.9.3 | http://ftp.uk.debian.org/debian/ wheezy/main amd64 Packages
      ruby |        4.5 | http://ftp.uk.debian.org/debian/ squeeze/main amd64 Packages

Installez-le ensuite:

$ sudo apt-get install ruby=1:1.9.3

Pour vérifier quelle est la version actuelle, exécutez:

$ gem --version # Check for the current user.
$ sudo gem --version # Check globally.

Si la version est toujours ancienne, vous pouvez essayer de basculer la version vers la nouvelle en utilisant ruby ​​version manager ( rvm) en:

rvm 1.9.3

Remarque: vous pouvez le préfixer sudosi a rvmété installé globalement. Ou exécutez /usr/local/rvm/scripts/rvmsi votre commande rvmn'est pas dans votre global PATH. Si le processus d'installation de rvm a échoué, consultez la section de dépannage.


Dépannage:

  • Si vous avez toujours l'ancienne version, vous pouvez essayer d'installer rvm (gestionnaire de version ruby) via:

    sudo apt-get install curl # Install curl first
    curl -sSL https://get.rvm.io | bash -s stable --ruby # Install only for the user.
    #or:# curl -sSL https://get.rvm.io | sudo bash -s stable --ruby # Install globally. 

    puis s'il est installé localement (uniquement pour l'utilisateur actuel), chargez rvm via:

    source /usr/local/rvm/scripts/rvm; rvm 1.9.3

    si globalement (pour tous les utilisateurs), alors:

    sudo bash -c "source /usr/local/rvm/scripts/rvm; rvm 1.9.3"
  • si vous rencontrez toujours des problèmes avec la nouvelle version ruby, essayez de l'installer par rvm via:

    source /usr/local/rvm/scripts/rvm && rvm install ruby-1.9.3 # Locally.
    sudo bash -c "source /usr/local/rvm/scripts/rvm && rvm install ruby-1.9.3" # Globally.
  • si vous souhaitez installer des gemmes dans le monde et que rvm est déjà installé, vous pouvez essayer:

    rvmsudo gem install [gemname]

    au lieu de:

      gem install [gemname] # or:
      sudo gem install [gemname]

Remarque: Il est préférable de ne PAS utiliser sudo pour travailler avec les gemmes RVM. Lorsque vous faites sudo, vous exécutez des commandes en tant que root, un autre utilisateur dans un autre shell et donc toute la configuration que RVM a faite pour vous est ignoré pendant que la commande s'exécute sous sudo (comme GEM_HOME, etc ...). Donc, pour réitérer, dès que vous `` sudo '' vous exécutez en tant qu'utilisateur du système racine, ce qui effacera votre environnement ainsi que tous les fichiers qu'il crée ne pourront pas être modifiés par votre utilisateur et entraîneront des choses étranges.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.