无法安装mechanize gem

时间:2015-01-12 22:38:57

标签: ruby

我的系统上只有ruby 2.0。我试着安装mechanize gem。它给了我一个错误,告诉我安装ruby devkit。我按如下方式安装了devkit - 下载安装程序/提取程序>将devkit解压缩到c:\ devkit> cd到c:\ devkit>将路径c:\ Ruby200-x64添加到config.yml文件> ruby dk.rb init> ruby dk.rb install。然后我得到了下面的错误。如何解决这个问题?

config.yml文件 -

# Example:
#
# ---
# - C:/ruby19trunk
# - C:/ruby192dev
#
---
- C:\Ruby200-x64

错误 -

C:\Ruby2Devkit>gem install mechanize
Temporarily enhancing PATH to include DevKit...
Building native extensions.  This could take a while...
ERROR:  Error installing mechanize:
        ERROR: Failed to build gem native extension.

    C:/Ruby200-x64/bin/ruby.exe extconf.rb
checking for main() in -lstdc++... *** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.

Provided configuration options:
        --with-opt-dir
        --without-opt-dir
        --with-opt-include
        --without-opt-include=${opt-dir}/include
        --with-opt-lib
        --without-opt-lib=${opt-dir}/lib
        --with-make-prog
        --without-make-prog
        --srcdir=.
        --curdir
        --ruby=C:/Ruby200-x64/bin/ruby
        --with-stdc++lib
        --without-stdc++lib
C:/Ruby200-x64/lib/ruby/2.0.0/mkmf.rb:434:in `try_do': The compiler failed 
to generate an executable file. (RuntimeError)
You have to install development tools first.
        from C:/Ruby200-x64/lib/ruby/2.0.0/mkmf.rb:519:in `try_link0'
        from C:/Ruby200-x64/lib/ruby/2.0.0/mkmf.rb:534:in `try_link'
        from C:/Ruby200-x64/lib/ruby/2.0.0/mkmf.rb:720:in `try_func'
        from C:/Ruby200-x64/lib/ruby/2.0.0/mkmf.rb:950:in `block in 
        have_library'
        from C:/Ruby200-x64/lib/ruby/2.0.0/mkmf.rb:895:in `block in 
        checking_for'
        from C:/Ruby200-x64/lib/ruby/2.0.0/mkmf.rb:340:in `block (2 levels) 
        in postpone'
        from C:/Ruby200-x64/lib/ruby/2.0.0/mkmf.rb:310:in `open'
        from C:/Ruby200-x64/lib/ruby/2.0.0/mkmf.rb:340:in `block in postpone'
        from C:/Ruby200-x64/lib/ruby/2.0.0/mkmf.rb:310:in `open'
        from C:/Ruby200-x64/lib/ruby/2.0.0/mkmf.rb:336:in `postpone'
        from C:/Ruby200-x64/lib/ruby/2.0.0/mkmf.rb:894:in `checking_for'
        from C:/Ruby200-x64/lib/ruby/2.0.0/mkmf.rb:945:in `have_library'
        from extconf.rb:2:in `<main>'


Gem files will remain installed in C:/Ruby200-x64/lib/ruby/gems/
2.0.0/gems/unf_ext-0.0.6 for inspection.
Results logged to C:/Ruby200-x64/lib/ruby/gems/2.0.0/gems/unf_ext-0.0.6/
ext/unf_ext/gem_make.out

2 个答案:

答案 0 :(得分:2)

如果可能的话,请向我推荐这个人,他的回答对我有帮助 - https://stackoverflow.com/a/16579164/3184475

我花了好几个小时试图找到一种方法来使用我现有的ruby安装来实现这一目标。我安装了devkit和mingw(基础和开发工具)。什么都没有帮助!我无法安装任何重要的宝石。

解决方案 - 删除您的devkit。卸载你的红宝石。从 - http://railsinstaller.org/en

安装RailsInstaller

您将使用此安装程序获得一些额外的软件。但谁在乎 ?它将为您节省5个小时的挫折,谷歌搜索,运行命令和以下步骤,你不知道。如果你不被允许这样做,那就准备好了。

安装此软件后,转到cmd并运行ruby -v以检查您拥有的红宝石。


当您尝试安装gem时,可能会收到一些ssl安全证书错误,例如 - SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed

解决方案就在这里 - https://gist.github.com/luislavena/f064211759ee0f806c88

我从以上链接的主要步骤对我有用。我建议你阅读整篇文章。

第1步:获取新的信任证书 如果您已经阅读了前面的章节,您将会知道这意味着什么(如果您没有,那就会感到羞耻)。

我们需要下载AddTrustExternalCARoot-2048.pem

使用上面的链接并将此文件放置/保存在以后您可以轻松找到的地方(例如您的桌面)。

重要提示:文件必须以.pem作为扩展名。像Chrome这样的浏览器会尝试将其保存为纯文本文件。确保在下载后更改文件名以包含.pem。

步骤2:在您的安装中找到RubyGems证书目录 为了让我们复制这个文件,我们需要知道把它放在哪里。

根据您安装Ruby的位置,目录将有所不同。

以Ruby 2.1.5的默认安装为例,放置在C:\ Ruby21

打开命令提示符并输入:

C:\>gem which rubygems
C:/Ruby21/lib/ruby/2.1.0/rubygems.rb

现在,让我们找到该目录。在同一窗口中,输入路径部分直到文件扩展名,但使用反斜杠:

C:\>start C:\Ruby21\lib\ruby\2.1.0\rubygems

这将在我们指示的目录中打开一个资源管理器窗口。

第3步:复制新的信任证书 现在,找到ssl_certs目录并复制我们从上一步中获得的.pem文件。

它将与其他文件一起列出,例如GeoTrustGlobalCA.pem。

第4步:获利 实际上没有第4步。你应该能够毫无问题地安装Ruby gem。

如果您无法获取该文件AddTrustExternalCARoot-2048.pem,您可以使用下面的文本并将其另存为.pem文件。

-----BEGIN CERTIFICATE-----
MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU
MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs
IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290
MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux
FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h
bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v
dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt
H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9
uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX
mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX
a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN
E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0
WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD
VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0
Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU
cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx
IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN
AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH
YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5
6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC
Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX
c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a
mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ=
-----END CERTIFICATE-----

答案 1 :(得分:0)

OSX用户的旁注。您可能只需要接受XCode许可证sudo xcodebuild -license 无论如何,请查看mkmf.log了解更多详情