web-dev-qa-db-ja.com

Nokogiriのインストール方法Ruby gemで、mkmf.logにlibiconvが見つからないと言っているgemは?

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'
...
29

診断して解決するために、ここで私のために働いたものです。

何が失敗したかを調べるには、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

成功!

61

のこぎりウェブサイトのインストール

「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


Mac OS X

ウェブサイトのアドバイスはOS Xもカバーしています-これは私にとってうまくいきました:
gem update --system xcode-select --install gem install nokogiri


結論

いずれかのプラットフォームでNokogiriの問題が発生した場合は、 ウェブサイトを確認 してください。

10
not a patch

CentOSでは、ここに私がする必要があるものがあります:

gem update --system
yum install libxml2-devel libxslt-devel Ruby-devel
gem install nokogiri -- --use-system-libraries
3
DaShaun

何らかの理由でメイクファイルを作成できませんでした必要なライブラリやヘッダーの欠如

ソースを正しくコンパイルするために-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
1
kenorb

表示される「メイクファイルを作成できませんでした」エラーは、Xcodeライセンスに同意していないことが原因である可能性があります(Xcodeを更新するたびに同意する必要があります)。 Sudo xcodebuild -license acceptを実行すると、このエラーが解消され、gem install nokogiriを正常に実行できるようになります。

0
Bryan Finlayson