2013-02-06 43 views
0

我試圖在緩存服務器上安裝清漆。我下面的堆棧是...安裝帶橡膠寶石的清漆服務器

HA代理服務器---->緩存(光油)服務器----> Nginx的+麒麟服務器

我已經能夠正確地設置所有的配置文件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>'

我似乎無法找出爲什麼發生這種情況。任何幫助都會很棒。謝謝

回答

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並且所有內容都將正確安裝。但是,不要問我爲什麼它在安裝橡膠通過打捆機時的工作方式不同於通過普通老式gem install進行安裝。

因此,達到此目的後,從ec2註銷並重新運行cap rubber:bootstrap,它應該可以工作。

不令人滿意的部分是,如果您決定在ec2上創建新實例,它將在同一時刻再次失敗,您必須重複此步驟並手動重新啓動該過程才能完成。因此,如果任何人可以想出一個更好的解決方案,如修改橡膠或什麼的,讓我們知道。

+0

我本來想避免這個,但我一定會試試這個。最好的解決方案是希望橡膠寶石的作者用橡膠更新rubygem.org:2.2.0。這將解決依賴性問題。 –

+0

這讓我過去了錯誤。現在運行'boostrap'完成,但主機無法訪問... http://ec2-54-242-112-170.compute-1.amazonaws.com/ – wkdshot

0

讓我先說這個,說我有這個相同的問題,解決了它,但我沒有使用清漆或獨角獸。

它看起來像你缺少capistrano,添加到你的gemfile,它應該照顧的大部分依賴項。但在我的情況下,橡膠抱怨需要net-ssh(〜> 2.4.0),而capistrano安裝了最新的net-ssh gem。因此,要修復此問題,請編輯您的Gemfile.lock以使用net-ssh(2.4.0)而不是最新版本,然後運行bundle安裝應修復依賴關係。

+0

我不認爲編輯Gemfile.lock是一個好主意。見http://stackoverflow.com/a/11136025/621809 – Ernesto

+0

是的,我也不會這樣做。真正的問題是由於依賴沒有得到解決,不幸的是,當使用橡膠設置服務器時,它不使用捆綁器來安裝寶石。猜猜我可能不得不等待,直到橡膠寶石更新在ruby gems.org回購。 –