如何升级红宝石

Posted

技术标签:

【中文标题】如何升级红宝石【英文标题】:How to upgrade rubygems 【发布时间】:2012-11-17 13:08:57 【问题描述】:

我需要将 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:~$

【问题讨论】:

澄清一下,您的问题是关于如何更新 Rubygems 本身——而不是任何由 ruby​​gems 管理的特定 gem。 【参考方案1】:

如果您使用的是 RVM,那么在从一个非常古老的 ruby​​gems(例如 1.3.7)升级时,下面的命令对我有很大帮助,因为该 ruby​​gems 违反了该线程中其他响应中提到的更新命令。

rvm rubygems <version>

【讨论】:

【参考方案2】:

我发现其他答案不准确/过时。最好是refer to the actual documentation。

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

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

【讨论】:

【参考方案3】:

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

    bundle update gem-name

但要单独更新 gem(不更新它的依赖项),请这样做

    bundle update --source gem-name

【讨论】:

这是为了更新特定的 gem,而不是 ruby​​gems 软件本身。 @thisismydesign 我想我指定这只会更新特定的 gem? 是的,但这不是问题所在。 我明白了。但我知道这会帮助像我这样首先登陆这里的人:)【参考方案4】:

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

sudo gem update

【讨论】:

这是一个寻找问题的答案。 没有sudo,如果您以普通用户身份安装gems(无论如何以root身份安装gems并不是很好)。 问题不是“如何更新所有宝石?”而是“如何在我的机器上更新 RubyGems?” 这可能会导致混乱 - 使用 rvm 或其他 ruby​​ 环境切换器在文件夹中使用 sudo 更新 gem。【参考方案5】:

对我来说,只需运行就足够了

gem update

【讨论】:

这是为了更新您的 gem,而不是 ruby​​gems 软件本身。 没错,但这是“更新 gem 版本”等搜索的第一个 Google 结果,所以我很高兴这个答案在这里。【参考方案6】:

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

gem update --system 'version'

gem update --system '2.3.0'

【讨论】:

you 命令不适用于基于 debian gem update --system "2.1.0" 的发行版 错误:执行 gem ... (RuntimeError) gem update --system 在 Debian 上被禁用,因为它会覆盖 ruby​​gems Debian 软件包的内容,并且可能会以微妙的方式破坏您的 Debian 系统。 Debian 支持的更新 ruby​​gems 的方法是通过 apt-get,使用 Debian 官方存储库。如果你真的知道自己在做什么,你仍然可以通过设置 REALLY_GEM_UPDATE_SYSTEM 环境变量来更新 ruby​​gems,但请记住,Debian 完全不支持。【参考方案7】:

或者:

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

【讨论】:

#brilliant 感谢这个。我只添加了--force 以防止自动化停止以进行覆盖确认 没有回答问题 分别修复了 shellcheck 错误:gem update "$(gem outdated | cut -d ' ' -f 1)";.【参考方案8】:

安装 ruby​​gems-update

gem install rubygems-update
update_rubygems
gem update --system

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

【讨论】:

当我遵循 ue 建议 gem update --system 在 Debian 上被禁用时,我得到了这个异常。 RubyGems 可以通过 aptitude 或 apt-get 使用官方 Debian 存储库进行更新。 这里是因为 unicode gem (github.com/blackwinter/unicode/issues/5) 的问题:在运行 answer 的解决方案后,我不得不运行 gem pristine unicode,它重新构建了 gem 并使其可用。 谢谢,它帮助我在 NFS 分区上安装 minitest。 github.com/rubygems/rubygems/issues/1161 rubygems-update 默认安装。所以,这只是运行gem update --system 的问题。 通常你永远不会想以sudo 运行这个命令。这将升级系统红宝石。考虑使用rvmrbenv【参考方案9】:

我不会使用 debian 软件包,请查看 RVM 或 Rbenv。

【讨论】:

Debian 软件包存在于 Rbenv

以上是关于如何升级红宝石的主要内容,如果未能解决你的问题,请参考以下文章

宝剑升级问题

Ruby | 品牌升级!效果图更新!!!火力全开!

从滑轨3.2升级到导轨4

使用所有依赖项升级rails版本的最佳做法是什么?

Ruby | 倒计时14天,我等你赴约

如何从/ usr / local卸载Ruby?