0

我正在尝试在缓存服务器上安装清漆。我的以下堆栈与...

HA 代理服务器 ----> 缓存(清漆)服务器 ----> Nginx + Unicorn 服务器

我已经能够正确设置 HAProxy 和 Varnish 的所有配置文件,以沿管道移动流量。但是,当我尝试引导我的缓存服务器时出现错误。

** ERROR: While executing gem ... (Gem::DependencyError) ** Unable to resolve dependencies: rubber requires net-ssh (~> 2.4.0); fog requires net-ssh (>= 2.1.3); capistrano requires net-ssh (>= 2.0.14); net-ssh-gateway requires net-ssh (>= 2.6.4); net-scp requires net-ssh (>= 2.6.4); net-sftp requires net-ssh (>= 2.6.4) ** /tmp/gem_helper:32:in `block in <main>' ** : Unable to install versioned gem rubber:2.1.2 (RuntimeError ** ) ** from /tmp/gem_helper:30:in `each' ** from /tmp/gem_helper:30:in `<main>'

我似乎无法弄清楚为什么会这样。任何帮助都会很棒。谢谢

4

2 回答 2

2

我遇到了这个问题,我发现的解决方案有点不令人满意和暂时的,但它奏效了。

此错误发生在rubber:install_gems任务期间。失败后,通过ssh登录ec2服务器。此时,如果您尝试gem install rubber -v=2.1.2在远程控制台中手动运行,则会失败并显示与上面显示的完全相同的错误。(版本号对您来说可能不同,这取决于您执行此操作时使用的橡胶版本)。

所以现在创建一个任意名称的空文件夹,并在其中创建一个几乎为空的 Gemfile。

$ mkdir dummy && cd dummy
$ nano Gemfile

然后用以下内容填充 Gemfile:

source 'http://rubygems.org'
gem 'rubber', '2.1.2'

同样,橡胶的版本可能对您有所不同。

创建此文件后,运行bundle install,一切都会正确安装。但是不要问我为什么通过 bundler 安装橡胶与通过普通旧的gem install.

因此,在实现这一点后,从 ec2 注销并重新运行cap rubber:bootstrap,它应该可以工作。

令人不满意的是,如果您决定在 ec2 上创建新实例,它将在同一点再次失败,您必须重复此步骤并手动重新启动该过程才能完成。因此,如果有人能想出更好的解决方案,比如改性橡胶之类的,请告诉我们。

于 2013-02-07T18:53:16.330 回答
0

让我先说我有同样的问题并解决了它,但我没有使用清漆或独角兽。

看起来您缺少 capistrano,将其添加到您的 gemfile 中,它应该会处理大多数依赖项。但是在我的情况下,橡胶抱怨需要 net-ssh (~> 2.4.0) 并且 capistrano 安装了最新的 net-ssh gem。因此,要修复此问题,请编辑您的 Gemfile.lock 以使用 net-ssh (2.4.0) 而不是最新版本,然后运行 ​​bundle install 应该修复依赖关系。

于 2013-02-07T01:41:11.967 回答