Windows 7上的Ruby Gem安装问题

时间:2010-10-14 08:54:44

标签: ruby-on-rails ruby rubygems

我正在尝试安装一些Gems,需要运行以下命令:

gem install mongrel mongrel_service mysql ruby-postgres oniguruma 
ultraviolet libxml-ruby --no-ri --no-rdoc --platform=mswin32

然而,--platform=mswin32在它结束时困扰着我。我的意思是,我的平台是x64,因为它应该是。当我从命令中删除--platform=mswin32或将mswin32替换为mswin64时,我会得到一长串错误。我是否应该关注--platform=mswin32或者只是不管它并让它成为现实?非常感谢。

3 个答案:

答案 0 :(得分:0)

我的想法是单独留下“--platform = mswin32”并让它成为。 那么会发生什么?

答案 1 :(得分:0)

您指定的平台选项用于查找您正在指示的宝石的预编译二进制文件。

但是没有为mswin64预编译。更重要的是,如果是64位版本,一切都将取决于您的Ruby安装。

此外,强制平台可能会产生宝石的问题,这些宝石是针对不同版本的Ruby(1.8对1.9)编译的,因为它们的API不同。

不要忘记,您需要安装编译器工具链才能编译您的平台不支持的gem。

答案 2 :(得分:0)

你真的不应该使用Ruby的mswin32版本(又名One-Click安装程序)。它们已经过时了。它们使用Microsoft Visual C ++ 6.0(又名MSVC6)编译,该版本于1998年发布(!)。使用MSVC6编译的代码与使用GCC和较新版本的MSVC编译的代码不兼容。由于在过去12年中编译器优化研究领域发生了很多变化,因此速度要慢得多。

由于不兼容性,Ruby使用的所有库,所有C扩展,C扩展使用的所有库等等,都必须使用MSVC6编译 。但是,MSVC6甚至不再可用。此外,许多开源项目只测试与GCC的兼容性,而不是MSVC(当然也不是近十年来已经过时的MSVC版本)。

使用mingw32版本(又名。RubyInstaller)代替。它们使用GCC 3.4或4.5((几乎)最新版本)编译。使用可选的DevKit,您可以安装任何 C扩展,而gem的作者不必提供预编译版本;宝石只是在本地机器上编译,就像在Linux或OSX下一样。

  

然而,最后的--platform = mswin32困扰着我。我的意思是,我的平台是x64,因为它应该是。

你确定你有64位的Ruby版本吗?就像我上面写的那样,mswin版本通常使用1998年推出的MSVC6编译.AMD64仅在1999年宣布,规格直到2000年才完成,第一批处理器直到2003年才出现,所以,除非微软拥有时间旅行技术,否则64V版本的MSVC6根本不可能存在!

据我所知,没有预编译版本的Ruby for 64 Bit Windows可用。 RubyInstaller开发人员刚刚开始研究64位mingw版本。

如果您自己编译Ruby,则应使用--platform=ruby强制在本地系统上编译Gems,因为可用的预编译mswin32 Gems与您的系统都不兼容,因为它们是a)32位和b)用MSVC6编译,这与你使用的任何编译器都不兼容。