Как обновить rubygems

206

Мне нужно обновить gems до 1.8. Я попытался установить соответствующие пакеты Debian, но, похоже, он не обновляется.

anujm@test:~$ dpkg -l |grep -i rubygem
ii  rubygems                               1.3.5-1ubuntu2                                  package management framework for Ruby libraries/applications
ii  rubygems-lwes                          0.8.2-1323277262                                LWES rubygems
ii  rubygems1.8                            1.3.5-1ubuntu2                                  package management framework for Ruby libraries/applications
ii  rubygems1.9                            1.3.5-1ubuntu2                                  package management framework for Ruby libraries/applications
anujm@test:~$ 


anujm@test:~$ gem
gem     gem1.8  gem1.9  
anujm@test:~$ sudo gem1.8 install serve
ERROR:  Error installing serve:
        multi_json requires RubyGems version >= 1.3.6
anujm@test:~$
Ануй
источник
2
Просто чтобы уточнить, ваш вопрос о том, как обновить сам Rubygems, а не какой-либо конкретный драгоценный камень, управляемый rubygems.
Майкл

Ответы:

471

Установить rubygems-обновление

gem install rubygems-update
update_rubygems
gem update --system

Запустите эту команду от имени пользователя root или используйте sudo.

Sacx
источник
1
я получаю это исключение, когда следую совету обновления gem - система отключена в Debian. RubyGems можно обновить с помощью официальных репозиториев Debian с помощью aptitude или apt-get.
Anuj
3
Здесь из-за проблем с гемом Unicode ( github.com/blackwinter/unicode/issues/5 ): после запуска решения ответа мне нужно было выполнить тот, gem pristine unicodeкоторый пересобрал гем и сделал его пригодным для использования.
действительно приятное
1
Спасибо, это помогло мне установить minitestна раздел NFS cf. github.com/rubygems/rubygems/issues/1161
Дядя Том
12
rubygems-updateустанавливается по умолчанию. Итак, дело просто в беге gem update --system.
dskecse
2
Обычно вы никогда не захотите запустить эту команду как sudo. Это обновит систему ruby. Подумайте об использовании rvmилиrbenv
Hendrik
54

Вы можете обновить все драгоценные камни, просто выполнив:

sudo gem update

Фрэнк
источник
44
Это ответ ищет вопрос.
Майкл
1
без, sudoесли вы установили gems как обычный пользователь (в любом случае установка gems от имени root не очень приятна).
Акостадинов
4
Вопрос не в том, как мне обновить все драгоценные камни? а скорее "Как мне обновить RubyGems на моей машине?"
aceofbassgreg
19

Или:

gem update `gem outdated | cut -d ' ' -f 1`
jvc26
источник
# Brilliant Спасибо за это. Я только добавил, --forceчтобы не допустить остановки автоматизации для подтверждения перезаписи
SaxDaddy
не отвечает на вопрос
agbodike
Соответственно с ошибками shellcheck исправлено: gem update "$(gem outdated | cut -d ' ' -f 1)";.
БернхардВебстудио
11

Вы можете обновить gem до любой конкретной версии, например,

gem update --system 'version'

gem update --system '2.3.0'
Аравин
источник
1
Ваша команда не работает с дистрибутивом, основанным на обновлении gem для debian --system "2.1.0" ОШИБКА: Во время выполнения gem ... (RuntimeError) обновление gem --system отключено в Debian, поскольку оно будет перезаписывать содержимое rubygems пакет Debian, и может привести к поломке вашей системы Debian. Поддерживаемый Debian способ обновления rubygems - через apt-get, используя официальные репозитории Debian. Если вы действительно знаете, что делаете, вы все равно можете обновить rubygems, установив переменную среды REALLY_GEM_UPDATE_SYSTEM, но, пожалуйста, помните, что это не поддерживается Debian.
Джефф
5

Я бы не стал использовать пакеты debian, взгляните на RVM или Rbenv .

Лукас Клементе
источник
Пакет Debian существует для Rbenv
antono
5

Я нашел другие ответы, которые были неточными / устаревшими. Лучше всего обратиться к актуальной документации .

Краткая версия: в большинстве случаев gem update --system будет достаточно.

Вы не должны использовать вслепую sudo. На самом деле, если вы не обязаны это делать, вам, скорее всего, не следует его использовать.

thisismydesign
источник
4

Для меня достаточно было просто бежать

gem update
Клас Меллборн
источник
5
Это для обновления ваших драгоценных камней, а не самого программного обеспечения rubygems.
Питер Х. Болинг
1
Правда, но это первый результат Google для поисков типа «обновить версию Gem», поэтому я рад, что этот ответ был здесь.
ncrypticus
-1

Чтобы обновить только один гем (и его зависимости), выполните:

    bundle update gem-name

Но чтобы обновить только гем (без обновления его зависимостей), сделайте

    bundle update --source gem-name
Руто Коллинз
источник
1
Это для обновления определенных драгоценных камней, а не самого программного обеспечения rubygems.
thisismydesign
1
@thisismydesign Я думаю, что я указал, что это будет обновлять только определенный драгоценный камень?
Руто Коллинз
Да, но дело не в этом.
thisismydesign
1
Понимаю. Но я знаю, что это поможет кому-то вроде меня, который приземлился здесь первым :)
Руто Коллинз