Как обновить 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.


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`

# 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

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

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

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


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
Понимаю. Но я знаю, что это поможет кому-то вроде меня, который приземлился здесь первым :)
Руто Коллинз
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.