如何升级红宝石


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管理的任何特定的gem。
迈克尔

Answers:


471

安装rubygems-update

gem install rubygems-update
update_rubygems
gem update --system

以root身份运行此命令或使用sudo。


1
当我遵循ue建议gem update --system在Debian上被禁用时,我遇到了这个异常。可以使用aptitude或apt-get使用官方的Debian仓库来更新RubyGems。
Anuj 2012年

3
这里是由于unicode gem(github.com/blackwinter/unicode/issues/5)的问题:在运行Answer的解决方案后,我不得不运行gem pristine unicode重新构建gem并使其可用的方法。
realnice 2014年

1
谢谢,它帮助我minitest在NFS分区cf上安装。github.com/rubygems/rubygems/issues/1161
汤姆(

12
rubygems-update默认情况下已安装。因此,这只是运行的问题gem update --system
dskecse

2
通常,您永远都不想以方式运行此命令sudo。那将升级系统红宝石。考虑使用rvmorrbenv
Hendrik

54

您只需执行以下操作即可更新所有gem:

sudo gem update


44
这是寻找问题的答案。
迈克尔,

1
sudo,如果你安装的宝石作为一个普通用户(安装宝石作为根是不是很不错呢)。
akostadinov

4
问题不是“如何更新所有gem?” 而是“如何在我的机器上更新RubyGems?”
aceofbassgreg

19

要么:

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

#brilliant感谢您的帮助。我只是--force为了防止自动操作停止进行覆盖确认
SaxDaddy 16'Aug

没有回答这个问题
agbodike

分别修复了shellcheck错误:gem update "$(gem outdated | cut -d ' ' -f 1)";
BernhardWebstudio

11

您可以将gem更新为这样的任何特定版本,

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环境变量来更新rubygems,但是请记住,Debian完全不支持此操作。
杰夫,2016年


5

我发现其他答案不正确/过时。最好是参考实际文档

简短版本:在大多数情况下 gem update --system就足够了。

您不应该盲目使用sudo。实际上,如果不需要这样做,则很可能不应该使用它。


4

对我来说,简单地运行就足够了

gem update

5
这是为了更新您的宝石,而不是rubygems软件本身。
Peter H. Boling

1
是的,但这是Google针对“更新gem版本”之类的搜索结果的第一个结果,因此我很高兴这个答案在这里。
ncrypticus

-1

要仅更新一个gem(及其依赖项),请执行以下操作:

    bundle update gem-name

但是要仅更新gem(不更新其依赖项),请执行

    bundle update --source gem-name

1
这是用于更新特定的宝石,而不是rubygems软件本身。
thisismydesign '18

1
@thisismydesign我想我指定只更新特定的gem?
Ruto Collins '18

是的,但这不是问题所在。
thisismydesign '18

1
我懂了。但是我知道这会对像我这样先登陆的人有所帮助:)
Ruto Collins
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.