Як оновити рубігеми


206

Мені потрібно оновити дорогоцінні камені до 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-update

gem install rubygems-update
update_rubygems
gem update --system

запускайте ці команди як root або використовуйте sudo.


1
Я отримую цей виняток, коли я слідую за пропозицією ue-пропозиції щодо оновлення дорогоцінних каменів - система відключена на Debian. RubyGems можна оновити, використовуючи офіційні сховища Debian, за aptitude або apt-get.
Ануй

3
Тут через проблеми з gem unicode ( github.com/blackwinter/unicode/isissue/5 ): після запуску рішення відповіді мені довелося запустити, gem pristine unicodeякий перетворив дорогоцінний камінь і зробив його корисним.
realnice

1
Дякую, це допомогло мені встановити minitestна NFS-розділі пор. github.com/rubygems/rubygems/isissue/1161
Oncle Tom

12
rubygems-updateвстановлено за замовчуванням. Отже, справа в тому, щоб просто бігти gem update --system.
dskecse

2
Зазвичай ви ніколи не захочете запустити цю команду як sudo. Це оновить системний рубін. Подумайте про використання rvmабоrbenv
Хендрік

54

Ви можете оновити всі дорогоцінні камені, просто виконавши:

sudo gem update


44
Це відповідь, яка шукає питання.
Майкл

1
без того, sudoякщо ви встановили дорогоцінні камені як звичайний користувач (все одно встановити дорогоцінні камені як 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)";.
BernhardWebstudio

11

Ви можете оновити дорогоцінний камінь до будь-якої конкретної версії, як ця,

gem update --system 'version'

gem update --system '2.3.0'

1
команда не працює на дистрибуції на основі оновлення дорогоцінного каміння debian - система "2.1.0" Помилка: Під час виконання gem ... (RuntimeError) оновлення дорогоцінних каменів - система відключена на Debian, тому що вона перезаписує вміст rubygems пакет Debian і може зламати вашу систему Debian найтоншими способами. Підтримуваний Debian спосіб оновлення рубігем - через apt-get, використовуючи офіційні сховища Debian. Якщо ви дійсно знаєте, чим займаєтесь, ви все одно можете оновити рубігемами, встановивши змінну середовища REALLY_GEM_UPDATE_SYSTEM, але пам’ятайте, що Debian це повністю не підтримує.
jeff


5

Я знайшов інші відповіді неточними / застарілими. Найкраще звернутися до фактичної документації .

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

Не слід сліпо користуватися sudo. Насправді, якщо вам цього не потрібно, ви, швидше за все, не повинні ним користуватися.


4

Для мене досить було просто бігати

gem update

5
Це для оновлення ваших дорогоцінних каменів, а не самого програмного забезпечення для рубігем.
Пітер Х. Болінг

1
Щоправда, але це перший результат Google для таких пошукових запитів, як "оновити версію дорогоцінного каміння", тому я радий, що ця відповідь була тут.
ncrypticus

-1

Щоб оновити лише один самоцвіт (і це залежності), виконайте:

    bundle update gem-name

Але щоб оновити самоцвіт лише (не оновлюючи це залежностями), зробіть

    bundle update --source gem-name

1
Це для оновлення конкретних дорогоцінних каменів, а не самого програмного забезпечення для рубігем.
thisismydesign

1
@thisismydesign Я думаю, я вказав, що це оновить лише конкретний дорогоцінний камінь?
Руто Коллінз

Так, але це не питання.
thisismydesign

1
Я бачу. Але я знаю, що це допоможе комусь, як я, який приземлився тут першим :)
Ruto Collins
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.