rubygemsをアップグレードする方法


206

gemを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が管理する特定のGemではありません。
マイケル

回答:


471

rubygems-updateをインストールする

gem install rubygems-update
update_rubygems
gem update --system

このコマンドをrootとして実行するか、sudoを使用します。


1
ue gem update --systemがDebianで無効になっていると、この例外が発生します。RubyGemsは、aptitudeまたはapt-getによって公式のDebianリポジトリを使用して更新できます。
Anuj 2012年

3
ここでは、Unicode Gem(github.com/blackwinter/unicode/issues/5)に問題があるため、アンサーのソリューションを実行した後gem pristine unicode、gemを再構築して使用できるように実行する必要がありました。
14年

1
おかげでminitest、NFSパーティションにインストールするのに役立ちました。github.com/rubygems/rubygems/issues/1161
Oncle Tom

12
rubygems-updateはデフォルトでインストールされます。だから、それだけで実行する問題ですgem update --system
dskecse

2
通常、このコマンドをとして実行することは決してありませんsudo。それはシステムルビーをアップグレードします。rvmまたはrbenv
Hendrik

54

以下を実行するだけで、すべてのgemを更新できます。

sudo gem update


44
これは質問を探す答えです。
マイケル

1
なしsudoあなたが通常のユーザーとしての宝石をインストールした場合(ルートは非常にいい、とにかくではないとして宝石をインストールします)。
akostadinov 2016

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 gem update --system "2.1.0"に基づくディストリビューションでは機能しませんエラー:gemの実行中...(RuntimeError)gem update --systemはDebianで無効になっています。 rubygems Debianパッケージ。Debianシステムを微妙に壊す可能性があります。Debianでサポートされているrubygemsの更新方法は、Debian公式リポジトリを使用したapt-getです。何をしているのか本当にわかっている場合でも、REALLY_GEM_UPDATE_SYSTEM環境変数を設定することでルビジェムを更新できますが、これはDebianでは完全にサポートされていないことに注意してください。
jeff


5

他の回答は不正確/時代遅れであることがわかりました。最善の方法は、実際のドキュメント参照することです。

ショートバージョン:ほとんどの場合、これで gem update --system十分です。

盲目的に使用すべきではありませんsudo。実際、そうする必要がない場合は、おそらく使用しないでください。


4

私にとっては、単に実行するだけで十分です

gem update

5
これは、gemを更新するためのものであり、rubygemsソフトウェア自体ではありません。
Peter H.Boling

1
確かに、これは「gemのバージョンを更新」などの検索に対する最初のGoogleの結果なので、この答えがここにあったことをうれしく思います。
ncrypticus 2018年

-1

1つのgem(およびその依存関係)のみを更新するには、次のようにします。

    bundle update gem-name

ただし、gemのみを更新するには(依存関係を更新せずに)、次のようにします。

    bundle update --source gem-name

1
これはrubygemsソフトウェア自体ではなく、特定のgemを更新するためのものです。
thisismydesign 2018

1
@thisismydesignこれは特定の宝石のみを更新することを指定したと思いますか?
Ruto Collins

はい、でもそれは問題ではありません。
thisismydesign 2018

1
そうですか。しかし、これは最初にここに上陸した私のような人を助けるでしょう:)
Ruto Collins
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.