2008-09-25 108 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