错误:在使用Ruby 2.2的Windows中安装rmagick时出错

我将我的代码从git克隆到我的Windows机器上,当我运行bundle install时,我收到此错误:

安装rmagick(2.13.4)时发生错误,Bundler无法继续。 在捆绑之前确保gem install rmagick -v '2.13.4'成功。

 D:\project\MyProject2>gem install rmagick -v '2.13.4' 

暂时增强PATH以包括DevKit …构建本机扩展。 这可能需要一段时间…错误:安装rmagick时出错:错误:无法构建gem原生扩展。

 D:/RailsInstaller/Ruby2.2.0/bin/ruby.exe -r ./siteconf20160721-7208-bn9t3e.rb extconf.rb checking for Ruby version 

= 1.8.5 …是无效的驱动器规格。 无法获取ImageMagick版本* extconf.rb失败*由于某些原因无法创建Makefile,可能缺少必要的库和/或标头。 检查mkmf.log文件以获取更多详细信息。 您可能需要配置选项。

我尝试下载ImageMagick,并将环境路径设置为:

 CPATH=D:\ImageMagick-6.9.5-Q8\include LIBRARY_PATH=D:\ImageMagick-6.9.5-Q8\lib 

并运行bundle install但没有用,也试过运行

 gem install rmagick -v '2.13.4' --platform=ruby -- --with-opt-lib=D:\ImageMagick-6.9.5-Q8\lib --with-opt-include=D:\ImageMagick-6.9.5-Q8\include 

它显示:

无法获取ImageMagick版本* extconf.rb失败*由于某些原因无法创建Makefile,可能缺少必要的库和/或标头。 检查mkmf.log文件以获取更多详细信息。 您可能需要配置选项。

请帮忙。

我自己也有同样的问题,直到我最终在这里和这里偶然发现Stackoverflow的答案。

基本上您需要按照以下步骤操作:

  • 安装DevKit 。 由于我使用RailsInstaller在笔记本电脑上安装Ruby on Rails,因此它已经包含在默认目录“C:\ Serever \ RailsInstaller \ DevKit”中。 否则,在RubyInstallers下载中找到.exe。
  • 从imagemagick.org安装ImageMagick-6.9.5-9-Q16-x86-dll.exe 。 看来rmagik 2.16只支持ImageMagick 6,而不支持ImageMagick 7。
  • 确保安装了正确版本的ImageMagick x86或x32。 如果您不确定安装了什么ruby版本,请尝试以下命令: ruby -e "puts 1.size" 。 如果x86则打印4,如果x64打印8。 从这里回答
  • 检查安装屏幕上的以下选项( redmine网站上的更多信息):
    • [v]将应用程序目录添加到系统路径
    • [v]为C和C ++安装开发头文件和库
  • 在Windows环境变量中设置PATH变量以包含ImageMagick的路径。 就我而言: C:\Server\ImageMagick\ 。 确保它是变量列表中的第一个变量,或者当extconf.rb尝试识别ImageMagick版本时,您可能会遇到“无效的驱动器规范”错误。
  • cd C:\YourRubyProject 。 示例: C:\Server\htdocs\dev-ruby\redmine
  • 设置CPATHLIBRARY_PATH环境变量分别指向ImageMagick安装目录include和lib子目录(因此DevKit将在构建时找到它们)
  • 打开C:\Serever\RailsInstaller\DevKit\msys.bat 。 更多细节在这里
  • 运行gem install rmagick --platform=ruby -- --with-opt-lib=C:/Server/ImageMagick/lib --with-opt-include=C:/Server/ImageMagick/include 。 根据项目的需要调整路径。
  • 最后,运行bundle install ,或者必要的bundle update

注意:对于那些希望在xampp中安装redmine的人,请遵循本教程 。 如果您在安装rmagick lib时遇到困难,请返回此答案并按照提供的步骤操作。