web-dev-qa-db-ja.com

OS X Lion、Nokogiriのインストールを試みています-libxml2がありません

Sudo gem install nokogiri
Building native extensions.  This could take a while...
ERROR:  Error installing nokogiri:
    ERROR: Failed to build gem native extension.

        /Users/sajeev86/.rvm/rubies/Ruby-1.8.7-p352/bin/Ruby extconf.rb
checking for libxml/parser.h... no
-----
libxml2 is missing.  please visit http://nokogiri.org/tutorials/installing_nokogiri.html for help with installing dependencies.
-----
*** 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.

のこぎりをインストールできません。これはしばらくの間私に負担をかけています。 MacPortsとHomebrewを介して依存関係もインストールしました。

適切なディレクトリが相互に参照されていないと感じていますか?しかし、修正方法の手掛かりはありません。

Mavericksで、Homebrewを使用してライブラリをインストールし、gemをインストールする前に_NOKOGIRI_USE_SYSTEM_LIBRARIES=1_を設定するとうまくいきました。

まとめ:

  • 以前にインストールされている場合は、gemをアンインストールします。
    _$ gem uninstall nokogiri_

  • Homebrewを使用して_libxml2_、libxsltおよびlibiconvをインストールします。
    _$ brew install libxml2 libxslt libiconv_

  • リンクするライブラリへのパスを指定して、gemをインストールします。
    $ NOKOGIRI_USE_SYSTEM_LIBRARIES=1 gem install nokogiri -- --use-system-libraries --with-iconv-dir="$(brew --prefix libiconv)" --with-xml2-config="$(brew --prefix libxml2)/bin/xml2-config" --with-xslt-config="$(brew --prefix libxslt)/bin/xslt-config"

43
Eduardo

絶対にnoneここにある他の回答は私にとってうまくいきました。

Mavericksの最新バージョンでは、私に成功した唯一の方法は次のとおりです。

$ brew install libxml2 libxslt libiconv
$ Sudo gem install nokogiri -v '1.6.5' -- --use-system-libraries --with-xml2-include=/usr/include/libxml2 --with-xml2-lib=/usr/lib
32
Crates

Lionでも同じ問題が起こった。何時間も投稿を読んだり、自作やmacportsを試したりしました。これを見つけたとき post で、.rvm/gems/Ruby-1.8.7-p358/gems/nokogiri-1.4.4の内容を読みました。 /ext/nokogiri/mkmf.log、見た:

find_header: checking for libxml/parser.h... -------------------- no

"/usr/bin/gcc-4.2 -E -I. -I/Users/me/.rvm/rubies/Ruby-1.8.7-p358/lib/Ruby/1.8/i686-darwin10.8.0 -I. -I-I-I/opt/local/include -I-I-I/usr/local/include -I-I-I/Users/me/.rvm/rubies/Ruby-1.8.7-p358/include -I-I-I/usr/include -I-I-I/usr/include/libxml2 -I/opt/local/include/libxml2 -I/usr/local/include/libxml2 -I/Users/me/.rvm/rubies/Ruby-1.8.7-p358/include/libxml2 -I-I/opt/local/include -I-I/usr/local/include -I-I/Users/me/.rvm/rubies/Ruby-1.8.7-p358/include -I-I/usr/include -I-I/usr/include/libxml2 -I/opt/local/include -I/usr/local/include -I/Users/me/.rvm/rubies/Ruby-1.8.7-p358/include -I/usr/include -I/usr/include/libxml2  -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE   -g -O2  -fno-common -pipe -fno-common    -g -DXP_UNIX -O3 -Wall -Wcast-qual -Wwrite-strings -Wconversion -Wmissing-noreturn -Winline  conftest.c -o conftest.i"
checked program was:
/* begin */
1: #include <libxml/parser.h>
/* end */

ただし、gcc-4.2は存在しませんでした。

$ ls /usr/bin/gcc*
/usr/bin/gcc

したがって、gcc-4.2をgccへのシンボリックリンクにすることで、問題を解決してnokogiriをインストールすることができました。

Sudo ln -s gcc gcc-4.2
16
Rememberer

私はマーブリックについて同じ問題に遭遇し、解決策は

xcode-select --install

しかし、それはAppleダウンロードページにはそのインストーラが公開されていないため、機能していませんでした。したがって、Mavricksのコマンドラインツールを使用する場合は、有料アカウントが必要です。インストールすると、このNokogiriの問題は発生しなくなります。

10
shinesecret

エラーメッセージ(http://nokogiri.org/tutorials/installing_nokogiri.html)に示されているURLを確認します。問題は、使用しているHomebrewのバージョンですか。

brew -v

0.8+に更新します

brew update
brew upgrade

そして、もう一度インストールを試みます。

brew install libxml2 libxslt
brew link libxml2 libxslt
gem install nokogiri
9
ahmeij
brew install libxml2 libxslt 
gem install nokogiri -v '1.6.5' -- --use-system-libraries
6
zires

私に関しては、それは役立ちます:

brew install libxml2 libxslt

許可が拒否された場合Sudo chown -R $USER /Library/Caches/Homebrew/

Sudo env ARCHFLAGS="-Arch x86_64"

export NOKOGIRI_USE_SYSTEM_LIBRARIES=1

NOKOGIRI_USE_SYSTEM_LIBRARIES=1 gem install nokogiri
6
shilovk

ヨセミテでは私が使用しました:

brew install libxml2 libxslt
Sudo gem install nokogiri -v '1.6.5' -- --use-system-libraries --with-xml2-include=/usr/include/libxml2 --with-xml2-lib=/usr/lib

上記のコマンドのいくつかに非常に近いがlibconvなし

パーティーには遅れますが、MacPortsの使用中に誰かがこの問題をまだ抱えている場合に備えて:

/ include dirを.profileファイルのPATHに追加して、nokogiriがそれを見つける場所を認識できるようにします。

例えば.

MacPortsは.profileファイルに書き込み、デフォルトで次の行を追加します。

export PATH=/opt/local/bin:/opt/local/sbin:$PATH

まず、/ includeパスを次のように追加します。

export PATH=/opt/local/bin:/opt/local/sbin:/opt/local/include/:$PATH

次に、同じターミナルウィンドウからこれを実行します。

source ~/.profile

(これにより、変更がないか.profileファイルを再確認するように端末に指示します)

最後に、同じターミナルウィンドウからgemをインストールしてみます。

Sudo gem install nokogiri
3
user1136698

上記の問題に遭遇した、やや古いシステムについては、具体的には:

FENG-SHUI:demo Eric$ brew install libxml2
==> Downloading ftp://xmlsoft.org/libxml2/libxml2-2.9.0.tar.gz
######################################################################## 100.0%
==> Downloading patches
######################################################################## 100.0%
######################################################################## 100.0%
==> Patching patching file threads.c patching file xpath.c
==> ./configure --prefix=/usr/local/Cellar/libxml2/2.9.0 --without-python
==> make
==> make install
==> Caveats This formula is keg-only: so it was not symlinked into /usr/local.

Mac OS X already provides this software and installing another version in parallel can cause all kinds of trouble.

Generally there are no consequences of this for you. If you build your own software and it requires this formula, you'll need to add to your build variables:

    LDFLAGS:  -L/usr/local/opt/libxml2/lib
    CPPFLAGS: -I/usr/local/opt/libxml2/include

Error: Failed to create: /usr/local/opt/libxml2 
Things that depend on libxml2 will probably not build.
    ==> Summary /usr/local/Cellar/libxml2/2.9.0: 273 files, 11M, built in 2.0 minutes 

FENG-SHUI:demo Eric$ brew install libxml2 libxslt 
Error: libxml2-2.9.0 already installed 
Error: /usr/local/opt/libxml2 not present or broken Please reinstall libxml2. Sorry :(

これはlibxml2とlibxsltをうまく実行するための魔法の公式でした:

# latest version 2.9.0
brew install libxml2

# installing libxslt from source code
# get latest libxslt from ftp://xmlsoft.org/libxml2/libxslt-git-snapshot.tar.gz..
# then
./configure --prefix=/usr/local/Cellar/libxslt/1.1.28 --with-libxml-prefix=/usr/local/Cellar/libxml2/2.9.0
make
Sudo make install

# installing nokogiri with this new compiled libs
gem install nokogiri -- --with-xml2-include=/usr/local/Cellar/libxml2/2.9.0/include/libxml2 --with-xml2-lib=/usr/local/Cellar/libxml2/2.9.0/lib --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.28

この男のおかげで: https://Gist.github.com/fabioyamate/44316

これが誰かを助けることを願っています!

2
ericpeters0n

これを機能させるには、次のコマンドを使用する必要がありました。

Sudo gem install nokogiri -- --with-xml2-include=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/libxml2 --use-system-libraries

(ソース: http://www.virtlab.cx/Ruby-fix-error-install-nokogiri-yosemite/ 、作者に感謝)

1
dulgan

これはOSXで私にとってうまくいきました-@remebererの答えと同じですが、完全なパスがあります。

Sudo ln -s/usr/bin/gcc /usr/bin/gcc-4.2

1
Ziad Sawalha

コマンドに--with-xml2-include=/opt/local/include/libxml2 --with-xml2-lib=/opt/local/libを追加してみてください。MacPortslibxml2がある場所を想定しています。

1
noodl

私はこのブログポストが見つかるまで何時間もこれに苦労しました: http://www.markhneedham.com/blog/2010/07/08/installing-Ruby-1-9-2-with-rvm-on-雪ヒョウ

コマンドを実行する

ファイル/usr/local/lib/libxml2.2.dylib

返されたターミナルで

/usr/local/lib/libxml2.2.dylib:Mach-O動的にリンクされた共有ライブラリi386

つまり、私のlibxml2.2は32ビットシステム用にコンパイルされたので、64ビットOS(ライオン)用にlibxml2を再コンパイルする必要がありました。

まず、LATEST_LIBXML2を ftp://xmlsoft.org/libxml2 からダウンロードし、次のコマンドを実行しました。

tar xzvf LATEST_LIBXML2

cd libxml2-2.8.0

./configure --with-python =/System/Library/Frameworks/Python.framework/Versions/2.3 /

make

次に、同じサイトからLATEST_LIBXSLTをダウンロードして、次のコマンドを実行しました。

tar xzvf LATEST_LIBXSLT

cd libxslt-1.1.26

。/構成、設定

make

Sudo make install

ランニング

ファイル/usr/local/lib/libxml2.2.dylib

再び戻った

/usr/local/lib/libxml2.2.dylib:Mach-O 64ビット動的リンク共有ライブラリx86_64

そしてようやくのこぎりをインストールできました!

1
Ste

私にとっては、私は単に次のことをしました

xcode-select --install
gem install nokogiri

より詳細なトラブルシューティングについては、チェックアウト Nokogiriのインストール

0
iGbanam

古いバージョンのNokogiri、つまり1.6より前のバージョンをインストールしている場合、これが役立つ場合があります。

Nokogiriインストールガイド で、彼らは次のように述べています:

Nokogiriはコンパイルしてlibxml2とlibxsltの両方に対して動的にリンクする必要があるため、インストールが複雑であるという評判を得ています。

Nokogiri 1.6以降、libxml2およびlibxsltソースコードはNokogiriにバンドルされ、gem-install-timeでコンパイルされます。このドキュメントは、すべてのバージョン1.6.4以降で機能します。

(Nokogiriの以前のバージョンのインストールのサポートが必要な場合は、このドキュメントのgit履歴を確認することをお勧めします。)

確かに、インストールは難しいですが、方法はあります。私はreadmeの履歴を詳しく調べて、よく書かれたコミットメッセージでこれを決定しました。

" 自作、私はあなたが嫌い​​です。 "

そのメッセージとここの他の回答から、私はNokogiriをインストールするときにlibxml2のlib、dir、includeディレクトリについて非常に具体的にする必要があることを知りました。以下は私にとってはうまくいきましたが、libxml2ソフトウェアのバージョンに一致するように更新してください(私のものは2.9.2そして私はノコギリをインストールしていた1.5.0):

NOKOGIRI_USE_SYSTEM_LIBRARIES=1 gem install nokogiri -v '1.5.0' -- 
    --use-system-libraries 
    --with-xml2-lib=/usr/local/Cellar/libxml2/2.9.2/lib 
    --with-xml2-config="$(brew --prefix libxml2)/bin/xml2-config" 
    --with-xslt-config="$(brew --prefix libxslt)/bin/xslt-config" 
    --with-xml2-dir=/usr/local/Cellar/libxml2/2.9.2/ 
    --with-xml2-include=/usr/local/Cellar/libxml2/2.9.2/include/libxml2
0
Danny

makeコマンドが/ usr/local/opt/Apple-gcc42/binでgcc-4.2を探していたことを除いて、Mountain Lionで同様のインストール問題に遭遇しました

これで問題は解決しました。 libxml2またはlibxsltをbrewでインストールしたり、-withオプションを追加したりする必要はありません。

mkdir -p /usr/local/opt/Apple-gcc42/bin
ln -s /usr/bin/gcc /usr/local/opt/Apple-gcc42/bin/gcc-4.2
0
dan_nl