gem update 失败,出现了 Gem::ImpossibleDependenciesError 错误

3

这真的很奇怪。我很惊讶这可能是一个问题。难道 gem 不应该能够安装所有版本,而像 bundler/Gemfile 这样的工具将处理任何特定项目中的依赖关系吗?即使我使用 --force 选项,我仍然会遇到同样的错误:

$ gem update
Updating installed gems
Updating activeadmin
ERROR:  While executing gem ... (Gem::ImpossibleDependenciesError)
    arbre-1.0.1 requires activesupport (>= 3.0.0) but it conflicted:
  Activated activesupport-4.0.0 instead of (= 3.2.14) via:
    activerecord-3.2.14, meta_search-1.1.3, activeadmin-0.6.1
  Activated activesupport-3.2.14 instead of (= 4.0.0) via:
    railties-4.0.0, devise-3.1.0, activeadmin-0.6.1

请问有人能解释一下这个错误信息的含义吗?我无法理清楚逻辑是如何工作的。消息以arbre-1.0.1开头,但gem似乎仍在处理activeadmin。我认为这意味着arbre-1.0.1需要activesupport,并且有两个可用的安装程序可以使用,但是有两组gems具有冲突的activesupport规范。这是正常的错误吗?我从未在实践中见过。这是否意味着某些gem开发人员没有正确指定依赖关系?
1个回答

2
你的项目是一个Rails 3项目吗?看起来arbre期望的是Rails 3.2.14,但Rails(ActiveSupport)已经更新到了4.0.0。与其运行gem update,不如安装Bundler并在应用程序目录中运行bundle

我在系统上有多个Rails 3和Rails 4项目。我在一个通用目录中运行此命令,而不是在项目中运行。我这样做是因为我想要拥有所有命令行工具的最新版本:bundler、capistrano等。因此,我运行gem update以方便更新。 - Dogweather
为什么不运行 gem update bundler capistrano,然后让 bundle update 处理其余部分呢? - Momer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接