这是后续这个问题.
当我发出gem update
Windows 上的命令,每当它到达
gem 的最新版本没有 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 之前的旧行为至少要求所需的平台
使更新成为可能。现在我根本无法更新,除非我卸载
麻烦的 gems(目前是 sqlite3-ruby 和 hpricot),运行更新,
然后使用 --version 开关重新安装 gem。
有人能解决这个难题吗?还是我们一直坚持这个问题?
Note:
$ gem -v
1.2.0
$ ruby -v
ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32]
注(2008 年 9 月 26 日):我刚刚更新到 gems 1.3.0,这个问题仍然存在。
注(2008 年 11 月 18 日):刚刚更新到gems 1.3.1,问题依然存在。
注(2009 年 4 月 28 日):最新版本的宝石(1.3.2) 现在会跳过更新期间构建本机扩展失败的所有 gem;换句话说,问题已经解决了。万岁!
宝石,截至版本1.3.2,现在将跳过无法构建的 gem,因此将 Rubygems 更新到最新版本,这里讨论的问题应该得到解决。
gem update --system
以下解决方案现已弃用,但我将其留在这里以供记录。
I 就这个问题发起了一个话题在 Ruby 论坛上(它是邮件列表的前端)。有一些有趣的讨论;值得一读。对于这个问题甚至有一个非常hacky的解决方案:
`gem.bat outdated`.split(/\n/).map{|z|z.scan(/^[^[:space:]]+/)}.flatten.each{|z| `gem.bat update #{z}`}
它称为gem outdated
命令并构建所有过时 gem 的列表。然后它迭代列表并调用gem update
对于每一个过时的宝石。如果一个失败,它就会转移到下一个。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)