2013-03-27 31 views
0

我似乎遇到了我正在使用的gem版本的問題。 我沒有互聯網接入,我直接從Rubyforge下載了寶石,然後將它連接到目標機器上,我使用gem install --force --local進行安裝。 Ruby/Rubygems來自大約一個月前採取的EPEL回購的快照。它位於網絡中的一臺機器上,YUM通過網絡配置以指向正確的位置。我試圖使用Net :: SSH系列的寶石(網絡:SSH,Net :: SSH :: Shell,Net :: SSH :: Multi,Net :: SSH :: Gateway,Net :: SCP) )。當我跑我的file.rb我得到這個:寶石版本比Rubygems期望的更麻煩

/usr/lib/ruby/site_ruby/1.8/rubygems.rb:779:in `report_activate_error': RubyGem version error: net-ssh(2.6.6 not ~> 2.1.0) (Gem::LoadError) 
     from /usr/lib/ruby/site_ruby/1.8/rubygems.rb:214:in `activate' 
     from /usr/lib/ruby/site_ruby/1.8/rubygems.rb:249:in `activate' 
     from /usr/lib/ruby/site_ruby/1.8/rubygems.rb:248:in `each' 
     from /usr/lib/ruby/site_ruby/1.8/rubygems.rb:248:in `activate' 
     from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:35:in `require' 
     from ./cluster_config.rb:12 

我已經看到了很多的問題,在互聯網有關的實際版本是小於比預期的版本,但我只在例如發現那裏的實際版本是比預期的要新,但是在OP的回覆中「解決了」,並說「我的朋友知道了,謝謝。」

這也是我第一次見到~>運營商在這種使用。通常我在這裏看到了>=運營商。

有什麼建議嗎?

回答

0

用於Gemfiles中,允許使用其補丁版本大於或等於指定版本的gem,前提是主版本和次版本相同。例如:

~> 2.1.0將允許版本2.1.9,但不是2.2.02.0.0

~> 2.1.3也將允許2.1.9但不是2.1.02.2.0

此外,你可能直接從RubyGems下載你需要的確切版本。在你的情況下,鏈接將是http://rubygems.org/downloads/net-ssh-2.1.0.gem

+0

嗯,我似乎很傻,我不得不降級我使用的gem版本,只是爲了讓rubygems接受它。它是否要求更舊的版本,因爲新版本沒有足夠的審查? – 2013-03-27 21:13:53

+0

版本'2.2'中可能存在應用程序不兼容或未經過測試的更改。由於應用程序已經過測試,可以使用版本'2.1',開發人員選擇使用該版本。另外,系統中可以存在多個版本的gem,只要它們不是同時加載的。 – 2013-03-27 21:15:12

+1

我安裝了舊的Gem,它抱怨說它不是2.5.0或更高版本。一點點挖掘和Net :: SSH :: Gateway/Multi和Net :: SCP需要> = 2.5.0和Net :: SSH:Shell需要〜> 2.1.0。看起來我不能使用Net :: SSH:Shell與其他三個,所以我需要解決使用它。感謝您的建議! – 2013-03-27 21:22:36