(轉)ERROR:Failedtobuildgemnativeextension

賀滿發表於2011-12-01

  這幾天本人在Window server 2003(工作機)中搭建Cucumber環境時(可以看我的另一篇文章:http://www.cnblogs.com/puresoul/archive/2011/11/18/2254407.html),當執行gem install cucumber時,報錯:ERROR: Failed to build gem native extension.到處搜尋未果,最後在這裡找到了答案:https://github.com/oneclick/rubyinstaller/wiki/Troubleshooting,特此轉來。本人就不做翻譯了,有需要的朋友儘管拿去,原文如下:

  You’ve installed both RubyInstaller and DevKit following the instructions but during gem installation, you receive a message like this:

C:devkit>gem install rdiscount --platform=ruby
Temporarily enhancing PATH to include DevKit...
Building native extensions.  This could take a while...
ERROR:  Error installing rdiscount:
       ERROR: Failed to build gem native extension.

C:/ruby/bin/ruby.exe extconf.rb
C:/ruby/bin/ruby.exe: No such file or directory -- extconf.rb
(LoadError)

Or sometimes just this:

ERROR: Error installing rdiscount: 
ERROR: Failed to build gem native extension. 
C:/Ruby187/bin/ruby.exe extconf.rb

This has been reported to our group here and here.

After a long back and forth investigation, we found two possible causes for this issue: COMSPEC environment variable (scenario A) and AutoRun registry setting (scenario B), both described below:

Scenario A

Using a command prompt, invoke the following command:

SET COMSPEC

If in the output you see something different than cmd.exe as value for that variable, then please adjust it to use cmd.exe

Some tools might change your command processor command, which interferes with Ruby invoking child processes.

Change that and try to install the gem again.

Scenario B

If the problem persist, invoke the following commands in the same command prompt:

REG QUERY "HKCUSoftwareMicrosoftCommand Processor"
REG QUERY "HKLMSoftwareMicrosoftCommand Processor"

Execute each line individually. Once you run it, will see something like this:

HKEY_CURRENT_USERSoftwareMicrosoftCommand Processor
    CompletionChar    REG_DWORD    0x9
    DefaultColor    REG_DWORD    0x0
    EnableExtensions    REG_DWORD    0x1
    PathCompletionChar    REG_DWORD    0x9

The columns of information are Key, Type and Value. If you see a key named AutoRun, there is a chance this is the culprit of the error you’re receiving.

AutoRun interferes with Ruby messing with child process executing and by result, affecting gem installation. Please remove it with the following command:

REG DELETE "HKCUSoftwareMicrosoftCommand Processor" /v AutoRun

Once you’re done, try opening a new command prompt and executing gem installation again.


相關文章