Ruby Nokogiri gemをインストールして、以下のエラーを見つけます。
これを診断して解決するにはどうすればよいですか?
# gem install nokogiri
Building native extensions. This could take a while...
ERROR: Error installing nokogiri:
ERROR: Failed to build gem native extension.
...
/opt/Ruby/1.9.3-p194/bin/Ruby extconf.rb
checking for libxml/parser.h... *** 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.
...
/opt/Ruby/1.9.3-p194/lib/Ruby/1.9.1/mkmf.rb:381:in `try_do':
The compiler failed to generate an executable file. (RuntimeError)
You have to install development tools first.
from /opt/Ruby/1.9.3-p194/lib/Ruby/1.9.1/mkmf.rb:506:in `try_cpp'
...
診断して解決するために、ここで私のために働いたものです。
何が失敗したかを調べるには、Ruby gemsディレクトリに移動します。
例えば:
$ cd <MY Ruby DIRECTORY>/lib/Ruby/gems/2.0.0/gems
Gemディレクトリがわからない場合は、次を試してください。
$ echo $GEM_HOME
/opt/gems/2.0.0
$ cd /opt/gems/2.0.0/gems
インストールしているnokogiriのバージョンは?
$ ls -ladg nokogiri-*
nokogiri-1.5.5
インストーラディレクトリに移動します。
$ cd nokogiri-1.5.5/ext/nokogiri
手動でインストールしてみてください:
$ Ruby extconf.rb
結果:
checking for libxml/parser.h... *** extconf.rb failed ***
...
私はUbuntuを使用しているので、同様のパッケージを検索します。
$ aptitude search libxml
結果:
p libxml2 - GNOME XML library
p libxml2-dev - Development files for the GNOME XML library
...
Libxml2は問題なく動作すると思います。
$ apt-get install libxml2
Rubyネイティブgemはヘッダーに* -devパッケージを必要とすることが多いため、インストールします。
$ apt-get install libxml2-dev
パーサーファイルはありますか?
$ find / | grep libxml/parser.h
はい、結果にパーサーが表示されます。
/usr/include/libxml2/libxml/parser.h
次に、もう一度インストールしてみます。今回はlibxml2パスを指定します。
$ gem install nokogiri -- --with-xml2-dir=/usr/include/libxml2
それでも失敗するので、mkmfエラーログを確認します。
$ more mkmf.log
エラーログには何が失敗したかが示され、次の行が有望に見えます。
package configuration for libxslt is not found
パッケージはありますか?
$ aptitude search libxslt
結果:
v libxslt-dev
i libxslt-Ruby
...
開発パッケージをインストールします。
$ apt-get install libxslt-dev
もう一度インストールしてみて、パスにxsltを追加してください:
$ gem install nokogiri -- \
--with-xml2-dir=/usr/include/libxml2 \
--with-xslt-dir=/usr/include/libxslt
成功!
「Installing Nokogiri」は、主要プラットフォームにNokogiriをインストールするための専用Webサイトです。UbuntuへのNokogiriのインストールに関する抜粋を以下に示します。
Nokogiriはコンパイルしてlibxml2とlibxsltの両方に対して動的にリンクする必要があるため、インストールが複雑であるという評判を得ています。
Nokogiri 1.6以降、libxml2およびlibxsltソースコードはNokogiriにバンドルされ、gem-install-timeでコンパイルされます。このドキュメントの手順は、すべてのバージョン1.6.4以降で機能します。
Ubuntu/Debian
インストールは、Nokogiriのベンダーlibxml2とlibxsltを使用してUbuntuとDebianで動作するはずです:
gem install nokogiri
[...]
システムライブラリの使用
Nokogiriのベンダーライブラリではなく、システムのlibxml2、libxslt、および関連ライブラリを使用したい場合は、最初にNokogiriにサポートされていないバージョンのlibxml2での作業を依頼する可能性があることを理解してください。
Sudo apt-get install pkg-config gem install nokogiri -- --use-system-libraries
参考までに-Nokogiri 1.6.6.2を使用していますが、「うまくいきません」でした。 --use-system-libraries
。
ウェブサイトのアドバイスはOS Xもカバーしています-これは私にとってうまくいきました:gem update --system xcode-select --install gem install nokogiri
いずれかのプラットフォームでNokogiriの問題が発生した場合は、 ウェブサイトを確認 してください。
CentOSでは、ここに私がする必要があるものがあります:
gem update --system
yum install libxml2-devel libxslt-devel Ruby-devel
gem install nokogiri -- --use-system-libraries
何らかの理由でメイクファイルを作成できませんでした必要なライブラリやヘッダーの欠如。
ソースを正しくコンパイルするために-lz
フラグに必要なzlibヘッダーが不足している可能性があります。 Linuxにインストールするには:
Sudo apt-get install libz-dev
Libiconvがない場合は、libiconv-hook-dev
のヘッダーファイルがあるlibiconv-hook
パッケージをインストールしてみてください。
Sudo apt-get install libiconv-hook1 libiconv-hook-dev
OS Xでは、xcode-select --install
から開発ツールをインストールしてみてください。
それでも問題が解決しない場合は、mkmf.log
ファイルでエラーの詳細を確認してください。
Ubuntuでは、次の依存関係修正コンボを試してください。
Sudo apt-get install gcc Ruby-dev libxslt-dev libxml2-dev zlib1g-dev
表示される「メイクファイルを作成できませんでした」エラーは、Xcodeライセンスに同意していないことが原因である可能性があります(Xcodeを更新するたびに同意する必要があります)。 Sudo xcodebuild -license accept
を実行すると、このエラーが解消され、gem install nokogiri
を正常に実行できるようになります。