2012-11-29 39 views
166

我需要寶石升級到1.8,我試圖安裝相應的Debian軟件包,但似乎它沒有得到升級如何升級RubyGems的

[email protected]:~$ 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 
[email protected]:~$ 


[email protected]:~$ gem 
gem  gem1.8 gem1.9 
[email protected]:~$ sudo gem1.8 install serve 
ERROR: Error installing serve: 
     multi_json requires RubyGems version >= 1.3.6 
[email protected]:~$ 
+1

我想弄清楚,你問題在於如何更新Rubygems本身 - 而不是由rubygems管理的任何特定的gem。 – Mike

回答

406

安裝的rubygems更新

gem install rubygems-update 
update_rubygems 
gem update --system 

運行此命令作爲根或使用須藤。

+1

我收到這個異常,當我按照ue建議gem update --system在Debian上被禁用。 RubyGems可以通過aptitude或apt-get使用官方的Debian版本庫進行更新。 – Anuj

+2

因爲unicode gem的問題(https://github.com/blackwinter/unicode/issues/5):在運行答案的解決方案後,我不得不運行'gem pristine unicode',它重新構建了gem並使其可用。 – reallynice

+0

Works更新Debian系統上的rubygems。謝謝! – danger89

5

我不會使用Debian軟件包,看看RVMRbenv

+0

Debian軟件包存在Rbenv – antono

15

或者:

gem update `gem outdated | cut -d ' ' -f 1` 
+0

#brilliant感謝這一個。我只加'--force'保持自動化從停覆蓋確認 – SaxDaddy

8

可以更新寶石任何特定的版本是這樣,

gem update --system 'version' 

gem update --system '2.3.0' 
+1

你指揮基於Debian的寶石上的分佈不起作用更新--system「2.1.0」 ERROR:在執行寶石...(RuntimeError)在Debian上禁用了gem update --system,因爲它會覆蓋rubygems Debian軟件包的內容,並可能以微妙的方式破壞Debian系統。 Debian支持的更新rubygems的方式是通過apt-get,使用Debian官方倉庫。如果你真的知道你在做什麼,你仍然可以通過設置REALLY_GEM_UPDATE_SYSTEM環境變量來更新rubygems,但請記住這完全不被Debian支持。 – jeff

33

您可以通過只執行更新所有的寶石:

sudo gem update

+21

這是一個尋找問題的答案。 – Mike

+1

如果你以普通用戶的身份安裝gems,那麼不需要'sudo'(以root身份安裝gems並不是很好)。 – akostadinov

+1

問題不在於「如何更新所有寶石?」而是「如何在我的機器上更新RubyGems?」 – aceofbassgreg

0

對於我只需運行

gem update 
+3

這是爲了更新你的寶石,而不是rubygems軟件本身。 –

-1

哇!沒有一個答案是準確的...最好是refer to the actual documentation

把它簡單地在大多數情況下gem update --system就足夠了。

您不應該盲目使用sudo。事實上,如果你不需要這樣做,你很可能不應該使用它。

0

要更新只是一個寶石(和它的依賴),這樣做:

bundle update gem-name 

但單獨只更新寶石(不更新它的依賴),做

bundle update --source gem-name