Как установить конкретную версию рубинового камня?

885

Используя gemинструмент командной строки , как я могу установить конкретную версию гема?

MJS
источник

Ответы:

1159

Используйте -vфлаг:

$ gem install fog -v 1.8
MJS
источник
60
Если, как и я, вы ранее установили более позднюю версию своего гема, вы должны удалить более позднюю версию, например, с помощью gem uninstall fog. Он спросит вас, какую версию удалить, если у вас более одной версии.
Dizzley
3
у меня есть 3 версии rake: gem list | grep rake= rake (10.1.1, 10.1.0, 0.8.7).. у меня есть проект rails 2.3.5 и еще одна версия 3.0, над которой я работаю одновременно .. как мне использовать определенную версию rake для каждого проекта (т.е. по команде линия?)
abbood
@abbood rake _10.1.1_ ...должен работать, для тех, кто хочет знать :)
Коен.
Стоит отметить, что это, похоже, не влияет на исполняемые файлы. Хотя удаление предыдущей версии работало для двоичных файлов.
Сиро Сантилли 郝海东 冠状 病 六四 事件 法轮功
Еще раз, желая я мог сделать несколько голосов. Возможно, если бы они должны были быть разделены по крайней мере на год. :)
Дон Брэнсон
192

Используйте --versionпараметр (ярлык -v):

$ gem install rails -v 0.14.1

Вы также можете использовать компараторы версий, такие как >=или~>

$ gem install rails -v '~> 0.14.0'

Или с более новыми версиями gem даже:

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

Successfully installed rails-0.14.4
Successfully installed rubyzip-0.9.9
schmijos
источник
Это сработало для ~>, но что если у вас ситуация типа «<0.9,> = 0.7»? Я попытался применить два аргумента v, и кажется, что первый был проигнорирован. Использование разделителя запятых даже не анализирует. Я закончил тем, что удалил требование больше чем, и оказалось, что установил приемлемую версию, но было бы неплохо иметь формальное решение.
Джозеф Коко
Что означает компаратор версий ~>?
Драгас
Это означает, что последней цифре разрешено расти ( stackoverflow.com/questions/5170547/… )
schmijos
93

Для установки gem install gemname -v versionnumber

Для удаления gem uninstall gemname -v versionnumber

Emjey
источник
80

для Ruby 1.9+ используйте двоеточие.

gem install sinatra:1.4.4 prawn:0.13.0
Kokizzu
источник
какой драгоценный камень (и какую версию) вы пытаетесь установить?
Кокиззу
скажите, пожалуйста, вывод gem sources, если он пуст, добавьте репо с помощью этой команды:gem sources -a https://rubygems.org/
Kokizzu
мои gem -vшоу 1.8.23против твоих 2.2.2. Похоже, эта функция новая :)
kolypto
Ruby 1.8 уже закончил поддержку ruby-lang.org/en/news/2013/06/30/we-retire-1-8-7
Kokizzu
24

Как уже отмечали другие, в общем случае используйте -vфлаг для gem installкоманды.

Если вы разрабатываете драгоценный камень локально, после вырезания драгоценного камня из вашего gemspec:

$ gem install gemname-version.gem

Предполагая версию 0.8, это будет выглядеть так:

$ gem install gemname-0.8.gem
thelostspore
источник
3
Отличный ответ. Я предлагаю вам добавить еще один блок кода для опции флага "-v". Когда мои глаза прочитали ответ, они сразу же обратились к блокам кода, а не к тексту, его окружающему. Если другие сделают то же самое, они пропустят часть "-v".
CamHart
8

Linux

Чтобы установить другую версию ruby, проверьте последнюю версию пакета, используя, aptкак показано ниже:

$ 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

Затем установите его:

$ sudo apt-get install ruby=1:1.9.3

Чтобы проверить текущую версию, запустите:

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

Если версия все еще старая, вы можете попробовать переключить версию на новую с помощью ruby ​​version manager ( rvm) с помощью:

rvm 1.9.3

Примечание. Вы можете использовать префикс, sudoесли он rvmбыл установлен глобально. Или запустить, /usr/local/rvm/scripts/rvmесли ваша команда rvmне в вашей глобальной PATH. Если процесс установки rvm не удался, см. Раздел устранения неполадок.


Поиск проблемы:

  • Если у вас все еще есть старая версия, вы можете попробовать установить rvm (менеджер версий ruby) через:

    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. 

    затем, если установлен локально (только для текущего пользователя), загрузите rvm через:

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

    если глобально (для всех пользователей), то:

    sudo bash -c "source /usr/local/rvm/scripts/rvm; rvm 1.9.3"
  • если у вас все еще есть проблемы с новой версией ruby, попробуйте установить ее с помощью rvm через:

    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.
  • если вы хотите установить некоторые гемы глобально и у вас уже установлен rvm, вы можете попробовать:

    rvmsudo gem install [gemname]

    вместо:

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

Примечание. Предпочтительно НЕ использовать sudo для работы с гемами RVM. Когда вы выполняете команду sudo, вы запускаете команды от имени пользователя root, другой пользователь в другой оболочке и, следовательно, все настройки, выполненные для вас RVM, игнорируются, пока команда выполняется под командой sudo (такие как GEM_HOME и т. Д.). Итак, повторяю, как только вы выполняете sudo, вы работаете как пользователь корневой системы, который очистит вашу среду, а также любые файлы, которые она создает, не сможет быть изменен вашим пользователем и приведет к странным вещам.

kenorb
источник