如何升级红宝石
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 本身——而不是任何由 rubygems 管理的特定 gem。 【参考方案1】:如果您使用的是 RVM,那么在从一个非常古老的 rubygems(例如 1.3.7)升级时,下面的命令对我有很大帮助,因为该 rubygems 违反了该线程中其他响应中提到的更新命令。
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,而不是 rubygems 软件本身。 @thisismydesign 我想我指定这只会更新特定的 gem? 是的,但这不是问题所在。 我明白了。但我知道这会帮助像我这样首先登陆这里的人:)【参考方案4】:您只需执行以下操作即可更新所有宝石:
sudo gem update
【讨论】:
这是一个寻找问题的答案。 没有sudo
,如果您以普通用户身份安装gems(无论如何以root身份安装gems并不是很好)。
问题不是“如何更新所有宝石?”而是“如何在我的机器上更新 RubyGems?”
这可能会导致混乱 - 使用 rvm 或其他 ruby 环境切换器在文件夹中使用 sudo 更新 gem。【参考方案5】:
对我来说,只需运行就足够了
gem update
【讨论】:
这是为了更新您的 gem,而不是 rubygems 软件本身。 没错,但这是“更新 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 上被禁用,因为它会覆盖 rubygems Debian 软件包的内容,并且可能会以微妙的方式破坏您的 Debian 系统。 Debian 支持的更新 rubygems 的方法是通过 apt-get,使用 Debian 官方存储库。如果你真的知道自己在做什么,你仍然可以通过设置 REALLY_GEM_UPDATE_SYSTEM 环境变量来更新 rubygems,但请记住,Debian 完全不支持。【参考方案7】:或者:
gem update `gem outdated | cut -d ' ' -f 1`
【讨论】:
#brilliant 感谢这个。我只添加了--force
以防止自动化停止以进行覆盖确认
没有回答问题
分别修复了 shellcheck 错误:gem update "$(gem outdated | cut -d ' ' -f 1)";
.【参考方案8】:
安装 rubygems-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
运行这个命令。这将升级系统红宝石。考虑使用rvm
或rbenv
【参考方案9】:
我不会使用 debian 软件包,请查看 RVM 或 Rbenv。
【讨论】:
Debian 软件包存在于 Rbenv以上是关于如何升级红宝石的主要内容,如果未能解决你的问题,请参考以下文章