在Windows更新宝石 - 是坏了?(Gem update on Windows - is it

2019-07-03 23:22发布

这是一个后续行动这个问题 。

当我发出gem update的Windows命令,一旦进入宝石,其最新版本没有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的,红宝石和角度来说,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日):最新版本的宝石( 1.3.2 )现在跳过其中的原生扩展的建筑更新过程中失败的任何宝石; 换言之,这个问题是固定的。 万岁!

Answer 1:

宝石,随着1.3.2版本 ,现在将跳过不能够培养宝石,所以RubyGems的更新到最新版本,并在这里讨论应该解决的问题。

gem update --system

下面的解决方案现在已经过时了,但我离开这里备案。

我开始在这个问题上一个线程在Ruby论坛(这是一个前端到邮件列表)。 这里也有一些有趣的讨论; 这是值得一读。 甚至还有一个非常哈克解决方案上有这个问题:

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

它调用gem outdated命令,并建立所有过时的宝石列表。 然后它迭代列表,并呼吁gem update为每个单独的过时的宝石。 如果一个失败,它只是移动到下一个。



Answer 2:

我们似乎被卡住了。 我发现这里有最后的版本(1.2.4)无mswin32宝石,我想我的电脑上安装,并得到了同样的问题。

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

gem install sqlite3-ruby --version '1.2.3'


Answer 3:

执行下面的命令,它应该工作:

gem install sqlite3-ruby --platform=mswin32


Answer 4:

纵观RubyForge的文件列表中的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的),创业板应该在安装过程中建立。 我不知道,如果宝石将建立在Visual Studio中的新版本。



文章来源: Gem update on Windows - is it broken?