2008-09-25 51 views
7

這是this question的後續行動。Windows上的Gem更新 - 是否損壞?

當我發出在Windows上gem update命令,一旦進入一個 寶石,其最新版本沒有Windows二進制文件,它會試圖 建立原生擴展其意志,當然達不到。例如:

Updating sqlite3-ruby 
Building native extensions. This could take a while... 
ERROR: While executing gem ... (Gem::Installer::ExtensionBuildError) 
    ERROR: Failed to build gem native extension. 

c:/ruby/bin/ruby.exe extconf.rb update 
checking for fdatasync() in rt.lib... no 
checking for sqlite3.h... no 

nmake 
'nmake' is not recognized as an internal or external command, 
operable program or batch file. 

要求所需的平臺至少 的老1.x的預行爲作出更新成爲可能。現在我無法更新,除非我卸載 麻煩的寶石(目前是sqlite3-ruby和hpricot),運行更新 ,然後使用--version開關重新安裝寶石。

有沒有人有解決這個難題或我們堅持下去?


注:

$ gem -v 
1.2.0 

$ ruby -v 
ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32] 

注(2008年9月26日):我剛剛更新到1.3.0寶石和問題仍然存在。

注意(2008年11月18日):剛剛更新到寶石1.3.1,問題依然存在。

注意事項(2009年4月28日):最新版本的Gems(1.3.2)現在跳過任何在更新期間構建本機擴展失敗的gem;換句話說,問題是固定的。萬歲!

+0

你指的是2009年4月28日?或者你是在時間旅行者徽章之後? – 2009-08-24 05:21:12

+0

如果我想安裝一個新的gem,並且安裝失敗,該怎麼辦?寶石1.3.2有解決了嗎? – 2010-06-18 16:18:36

+0

是的,這個問題早已修復。截至今天,我們現在處於RubyGems 1.3.7版本。 – 2010-06-21 11:42:02

回答

4

寶石,爲version 1.3.2,現在將跳過不能夠培養寶石,所以RubyGems的更新到最新版本,並在這裏討論應該解決的問題。

gem update --system 

以下解決方案現在已經過時,但我離開這裏備案。

I started a thread on this issue關於Ruby論壇(這是郵件列表的前端)。有一些有趣的討論;值得一讀。甚至還有一個非常哈克解決這個問題上有:

`gem.bat outdated`.split(/\n/).map{|z|z.scan(/^[^[:space:]]+/)}.flatten.each{|z| `gem.bat update #{z}`} 

它調用gem outdated命令,並建立所有過時的寶石列表。然後它重複列表並針對每個過期的寶石調用gem update。如果失敗了,它就會轉移到下一個。

2

看來我們被卡住了。我發現here上一個版本(1.2.4)沒有mswin32 gem,我試圖在我的電腦上安裝它,並得到同樣的問題。

安裝以前的版本工作正常:

gem install sqlite3-ruby --version '1.2.3' 
1

縱觀RubyForge file list的sqlite3的,紅寶石表明版本1.2.3上有使用的Visual Studio 6和MinGW(sqlite3的,紅寶石1.2.3-mswin32.gem & sqlite3的,紅寶石1.2.3-內置寶石x86的mingw32.gem)。但是,1.2.4版本並沒有任何這種預建寶石。

如果您安裝了Visual Studio 6或MinGW並且已設置編譯器環境變量(至少對於Visual Studio 6但不確定MinGW),則應在安裝期間構建gem。我不確定這些寶石是否會在更新版本的Visual Studio中生成。

2

執行下面的命令,它應該工作:

gem install sqlite3-ruby --platform=mswin32