Windowsを使用していて、gem install json —platform=Ruby
を実行すると次のエラーが発生します。
The system cannot find the path specified.
Temporarily enhancing PATH to include DevKit...
Building native extensions. This could take a while...
The system cannot find the path specified.
ERROR: Error installing json:
ERROR: Failed to build gem native extension.
C:/Ruby193/bin/Ruby.exe extconf.rb
creating Makefile
Gem files will remain installed in C:/Ruby193/lib/Ruby/gems/1.9.1/gems/json-1.8.1 for inspection.
Results logged to C:/Ruby193/lib/Ruby/gems/1.9.1/gems/json-1.8.1/ext/json/ext/generator/gem_make.out
最初に、私はWindowsの人間ではないので、これは私にとって勇敢な新しい世界です。ライブラリの狂ったコレクションが散らばった仕事からラップトップを継承したので、以前にインストールしたRubyとDevkit)をすべて削除して、次のものをインストールしました。
C:/Ruby193
にC:/Ruby200
にDevKit-tdm-32-4.5.2-20111229-1559-sfx.exe
(Ruby 1xの場合)をC:/Ruby193-devkit
に抽出DevKit-mingw64-32-4.7.2-20130224-1151-sfx.exe
(Ruby 2xの場合は32ビット)がC:/Ruby200-devkit-x32
に抽出されます。次に Pik 0.2.8 をgemとしてインストールし、インストール手順に従ってpik_install
を新しいディレクトリC:/bin
に実行しました。
私のPATHは次のようになります:
PATH=C:\bin;C:\Ruby193\bin;C:\windows;C:\windows\system32;C:\windows\system32\Wbem;c:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;c:\Program Files\Microsoft SQL Server\100\Tools\Binn\;c:\Program Files\Microsoft SQL Server\100\DTS\Binn\;C:\Program Files (x86)\Common Files\Roxio Shared\DLLShared\;C:\Program Files\Java\jdk1.6.0_33\bin;C:\Program Files (x86)\Common Files\Apple\Mobile Device Support\;C:\Program Files (x86)\Common Files\Apple\Apple Application Support;C:\Program Files (x86)\QuickTime\QTSystem\;C:\Program Files\TortoiseSVN\bin;C:/inpath;C:\Program Files (x86)\WinMerge;C:\ChromeDriver;C:\Program Files\WIDCOMM\Bluetooth Software\;C:\Program Files\WIDCOMM\Bluetooth Software\syswow64
重要なのは、C:/bin
とC:/Ruby193/bin
がパスに含まれていることです。つまり、シェルを起動すると、デフォルトでRuby 1.9.3がロードされ、pik use 2.0.0p353
を使用して2.0.0に正常に切り替えることができます。つまり、pikは正常に動作します。
Devkit 意図されている Windows上のgemからネイティブC/C++バイナリをコンパイルできるようにして、プリコンパイルされたWindowsバイナリを使用できるようにします。
Rubyの2つのバージョンがインストールされており、それぞれに異なるdevkit(2x用と1x用)が必要)があるため、devkitのセットアップを2回実行する必要がありました。
cd C:/Ruby193-devkit
Ruby dk.rb init
# Edit config.yml to remove all but Ruby193
Ruby dk.rb install
cd C:/Ruby200-devkit
Ruby dk.rb init
# Edit config.yml to remove all but C:/Ruby200
Ruby dk.rb install
この時点でgem install json —platform=Ruby
を正常に実行できるはずですが、上記のエラーが発生しました。少し掘り下げた後 私はこれを発見しました 、COMSPECが正しく設定されていることを確認し、HKEY_CURRENT_USER\Software\Microsoft\Command Processor
からAutoRunキーを削除することをお勧めします。
残念ながら、私はまだjson gemをインストールできませんでした。
次に、おそらく間違ったバージョンのGCCが使用されているか、見つからないことに気付きました。 Devkitの2つのバージョンには、gccの異なるバージョンが付属しています。
> C:\Ruby193-devkit\mingw\bin\gcc —version
gcc (tdm-1) 4.5.2
> C:\Ruby200-devkit-x32\mingw\bin\gcc —version
gcc (rubenv-4.7.2-release) 4.7.2
次に、pikが特定のバージョンのRuby私が選んだバージョン)のdevtoolsのバージョン(したがってgcc)をロードしておらず、常に1.9.3を使用していたのではないかと思った。 この記事 、そうではないようです:
> pik use 193
> where Ruby
C:\Ruby193\bin\Ruby.exe
> cat C:\Ruby193\lib\Ruby\site_Ruby\devkit.rb
# enable RubyInstaller DevKit usage as a vendorable helper library
unless ENV['PATH'].include?('C:\\Ruby193-devkit\\mingw\\bin') then
puts 'Temporarily enhancing PATH to include DevKit...'
ENV['PATH'] = 'C:\\Ruby193-devkit\\bin;C:\\Ruby193-devkit\\mingw\\bin;' + ENV['PATH']
end
ENV['RI_DEVKIT'] = 'C:\\Ruby193-devkit'
ENV['CC'] = 'gcc'
ENV['CXX'] = 'g++'
ENV['CPP'] = 'cpp'
> pik use 200
> where Ruby
C:\Ruby200\bin\Ruby.exe
> cat C:\Ruby200\lib\Ruby\site_Ruby\devkit.rb
# enable RubyInstaller DevKit usage as a vendorable helper library
unless ENV['PATH'].include?('C:\\Ruby200-devkit-x32\\mingw\\bin') then
phrase = 'Temporarily enhancing PATH to include DevKit...'
if defined?(Gem)
Gem.ui.say(phrase) if Gem.configuration.verbose
else
puts phrase
end
puts "Prepending ENV['PATH'] to include DevKit..." if $DEBUG
ENV['PATH'] = 'C:\\Ruby200-devkit-x32\\bin;C:\\Ruby200-devkit-x32\\mingw\\bin;' + ENV['PATH']
end
ENV['RI_DEVKIT'] = 'C:\\Ruby200-devkit-x32'
ENV['CC'] = 'gcc'
ENV['CXX'] = 'g++'
ENV['CPP'] = 'cpp'
(私は実際にはウィンドウで猫を利用できませんが、それはより明確な説明になります)
ご覧のとおり、正しいバージョンのdevkitがdevkit.rbによってパスに追加されているようです。これは、エラーに「一時的にPATHを拡張してDevKitを含める…」が含まれているため、ロードされています。
そうだった:
The system cannot find the path specified.
Temporarily enhancing PATH to include DevKit...
Building native extensions. This could take a while...
The system cannot find the path specified.
ERROR: Error installing json:
ERROR: Failed to build gem native extension.
C:/Ruby193/bin/Ruby.exe extconf.rb
creating Makefile
Gem files will remain installed in C:/Ruby193/lib/Ruby/gems/1.9.1/gems/json-1.8.1 for inspection.
Results logged to C:/Ruby193/lib/Ruby/gems/1.9.1/gems/json-1.8.1/ext/json/ext/generator/gem_make.out
残念ながら、結果ログはヘルプの点で正確には多くを提供していません。これは、gem_make.outのようになります。
C:/Ruby193/bin/Ruby.exe extconf.rb
creating Makefile
extconf.rb
が役立つかもしれないと思ったのですが、頭も尾もできません。
require 'mkmf'
unless $CFLAGS.gsub!(/ -O[\dsz]?/, ' -O3')
$CFLAGS << ' -O3'
end
if CONFIG['CC'] =~ /gcc/
$CFLAGS << ' -Wall'
unless $DEBUG && !$CFLAGS.gsub!(/ -O[\dsz]?/, ' -O0 -ggdb')
$CFLAGS << ' -O0 -ggdb'
end
end
$defs << "-DJSON_GENERATOR"
create_makefile 'json/ext/generator'
C:/Ruby193/lib/Ruby/gems/1.9.1/gems/json-1.8.1/ext/json/ext/generator
のMakefile このように見えます 。このMakefileが作成されているのも奇妙に思えます。
Windows/Rubyの経験がもう少しあれば、これに光を当てることができればすばらしいでしょう。
PS。私はWindows 7 Professional SP1を使用しています
だから私は、devkitが正しいdevkitディレクトリを使用してパスを改善していたことを確認したかったのです。別のSO質問の提案のおかげで、私はdevkitインストールをRubyディレクトリ内に移動しました:
Tdm開発キットはC:\Ruby193\devkit
にあり、mingw64はC:\Ruby200\devkit
にあります。各devkitに対してRuby dk.rb install -f
を実行した後、両方のdevkit.rbファイルを開いて、パスが正しく更新されていることを確認しました。それらがあり、プットを更新したので、「一時的に強化されたPATHにはDevKit for 1.9が含まれています」または「一時的に強化されたPATHにはDevKit for 2が含まれています」と出力されます。正しいdevkitがロードされていることを確認するために:
C:\>pik 193
C:\>Ruby -rdevkit -ve "puts ENV['PATH']"
Ruby 1.9.3p484 (2013-11-22) [i386-mingw32]
Temporarily enhancing PATH to include DevKit for 1.9...
C:\Ruby193\devkit\bin;C:\Ruby193\devkit\mingw\bin;C:\bin;C:\Ruby193\bin;C:\windows;C:\windows\system32;C:\windows\system32\Wbem;c:\Program Files (x86)
\Microsoft SQL Server\100\Tools\Binn\;c:\Program Files\Microsoft SQL Server\100\Tools\Binn\;c:\Program Files\Microsoft SQL Server\100\DTS\Binn\;C:\Pro
gram Files (x86)\Common Files\Roxio Shared\DLLShared\;C:\Program Files\Java\jdk1.6.0_33\bin;C:\Program Files (x86)\Common Files\Apple\Mobile Device Su
pport\;C:\Program Files (x86)\Common Files\Apple\Apple Application Support;C:\Program Files (x86)\QuickTime\QTSystem\;C:\Program Files\TortoiseSVN\bin
;C:/inpath;C:\Program Files (x86)\WinMerge;C:\ChromeDriver;C:\Program Files\WIDCOMM\Bluetooth Software\;C:\Program Files\WIDCOMM\Bluetooth Software\sy
swow64
C:\>pik 200
C:\>Ruby -rdevkit -ve "puts ENV['PATH']"
Ruby 2.0.0p353 (2013-11-22) [i386-mingw32]
Temporarily enhancing PATH to include DevKit for 2...
C:\Ruby200\devkit\bin;C:\Ruby200\devkit\mingw\bin;C:\bin;C:\Ruby200\bin;C:\windows;C:\windows\system32;C:\windows\system32\Wbem;c:\Program Files (x86)
\Microsoft SQL Server\100\Tools\Binn\;c:\Program Files\Microsoft SQL Server\100\Tools\Binn\;c:\Program Files\Microsoft SQL Server\100\DTS\Binn\;C:\Pro
gram Files (x86)\Common Files\Roxio Shared\DLLShared\;C:\Program Files\Java\jdk1.6.0_33\bin;C:\Program Files (x86)\Common Files\Apple\Mobile Device Su
pport\;C:\Program Files (x86)\Common Files\Apple\Apple Application Support;C:\Program Files (x86)\QuickTime\QTSystem\;C:\Program Files\TortoiseSVN\bin
;C:/inpath;C:\Program Files (x86)\WinMerge;C:\ChromeDriver;C:\Program Files\WIDCOMM\Bluetooth Software\;C:\Program Files\WIDCOMM\Bluetooth Software\sy
swow64
すべてが正しく動作するように見えるように。だが:
C:\>gem install json --platform=Ruby
Temporarily enhancing PATH to include DevKit for 2...
Building native extensions. This could take a while...
The system cannot find the path specified.
ERROR: Error installing json:
ERROR: Failed to build gem native extension.
C:/Ruby200/bin/Ruby.exe extconf.rb
creating Makefile
Gem files will remain installed in C:/Ruby200/lib/Ruby/gems/2.0.0/gems/json-1.8.1 for inspection.
Results logged to C:/Ruby200/lib/Ruby/gems/2.0.0/gems/json-1.8.1/ext/json/ext/generator/gem_make.out
C:\>pik 193
C:\>gem install json --platform=Ruby
Temporarily enhancing PATH to include DevKit...
Building native extensions. This could take a while...
The system cannot find the path specified.
ERROR: Error installing json:
ERROR: Failed to build gem native extension.
C:/Ruby193/bin/Ruby.exe extconf.rb
creating Makefile
Gem files will remain installed in C:/Ruby193/lib/Ruby/gems/1.9.1/gems/json-1.8.1 for inspection.
Results logged to C:/Ruby193/lib/Ruby/gems/1.9.1/gems/json-1.8.1/ext/json/ext/generator/gem_make.out
これにより、次の2つのことが明らかになります。
生成されたMakefileを使用して手動でビルドできるかどうかを確認します。
したがって、これは世界で最良の答えではありませんが、私は解決策を見つけました。詳細フラグを設定すると、すべてが正常に機能します。
gem install json --platform=Ruby --verbose
ここにログがあります: http://Gist.github.com/dannysmith/8055495
これは意味をなさない-なぜこれがエラーを修正したように思われるのか、誰かが説明できたら素晴らしいだろう。おそらくこれはdevkitのバグですか?
バージョン1.8.1でgem jsonをインストールしましたが、json 1.6.1でこの問題を解決できませんでした
gem install json --platform=Ruby --verbose
だから、私はここから試しました https://github.com/oneclick/rubyinstaller/issues/184
gem update --system 2.0.3
それとその後
gem install json -v 1.6.1 --platform=Ruby --verbose
Win 7(64ビット)マシン用のjson 1.6.1固有の問題を解決します
管理者モードでコマンドプロンプトを実行してみてください。 7〜10時間後、私はこれを理解しました...
修正方法:
Windowsに32ビットバージョンをインストールします...
ver
windows 6.1.76011
64ビットで、メイクファイルとヘッダーに関するエラーメッセージが表示されました。 COMSPECとレジストリ、パスへのgccの追加など、rubyinstallerに関する提案を含む他のすべての提案を試しました。一部のgemはインストールされますが、git_fameとjsonはコンパイルする必要がありません。
編集:git_fameがmimer_plusを使用しているようです。 mimer_plusは、GNUツール(UNIXツール)を想定しています。最初にmingwをインストールする必要があるようです。それは、rubyinstallerのページに明確に示されていませんでした。
私も同じ問題を抱えていました。パスを確認するためにPowerShellを使用しました
ps> $ s = $ env:path
ps> $ s.split( "{;}")
確かに私のRuby mingwはパスにありませんでした。パスにRuby\binがありましたが、mingw\binは別のフォルダにありました。環境パスに移動して追加しましたそして私のインストールはうまくいきました。
Rubyインストールしたバージョン(32ビットまたは64ビット)がDevKitバージョンと一致していることを確認してください。どちらも32または64である必要があります。これは私が抱えていた問題でした。正確ではない可能性があります。ここに問題がありますが、私はそれをそこに捨てると思いました。