Mac OS 10.9.3にNokogiriをインストールしようとしましたが、何をしようとしても、インストールは最終的に次のエラーメッセージで失敗します。
$ Sudo gem install nokogiri -- --with-xml2-include=/usr/local/Cellar/libxml2/2.9.1/include/libxml2 --with-xml2-lib=/usr/local/Cellar/libxml2/2.9.1/lib --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.28 --with-iconv-include=/usr/local/Cellar/libiconv/1.14/include --with-iconv-lib=/usr/local/Cellar/libiconv/1.14/lib
Building native extensions with: '--with-xml2-include=/usr/local/Cellar/libxml2/2.9.1/include/libxml2 --with-xml2-lib=/usr/local/Cellar/libxml2/2.9.1/lib --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.28 --with-iconv-include=/usr/local/Cellar/libiconv/1.14/include --with-iconv-lib=/usr/local/Cellar/libiconv/1.14/lib'
This could take a while...
Building nokogiri using packaged libraries.
ERROR: Error installing nokogiri:
ERROR: Failed to build gem native extension.
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/Ruby extconf.rb --with-xml2-include=/usr/local/Cellar/libxml2/2.9.1/include/libxml2 --with-xml2-lib=/usr/local/Cellar/libxml2/2.9.1/lib --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.28 --with-iconv-include=/usr/local/Cellar/libiconv/1.14/include --with-iconv-lib=/usr/local/Cellar/libiconv/1.14/lib
Building nokogiri using packaged libraries.
checking for iconv.h... yes
checking for iconv_open() in iconv.h... no
checking for iconv_open() in -liconv... no
checking for libiconv_open() in iconv.h... no
checking for libiconv_open() in -liconv... no
-----
libiconv 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.
Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--Ruby=/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/Ruby
--help
--clean
--use-system-libraries
--enable-static
--disable-static
--with-zlib-dir
--without-zlib-dir
--with-zlib-include
--without-zlib-include=${zlib-dir}/include
--with-zlib-lib
--without-zlib-lib=${zlib-dir}/lib
--enable-cross-build
--disable-cross-build
Gem files will remain installed in /Library/Ruby/Gems/2.0.0/gems/nokogiri-1.6.2.1 for inspection.
Results logged to /Library/Ruby/Gems/2.0.0/gems/nokogiri-1.6.2.1/ext/nokogiri/gem_make.out
Brewを使用したlibxml2とlibxsltのビルドとインストール、ソースからのlibiconvのビルド(「 Nokogiriのインストール 」を参照)を含む、Webで見つかった多くのヘルプに従っても、エラーは同じままです。
Nokogiriのインストールを実行しようとすると、libxml2とlibxsltは問題なく見つかりますが、libiconvは見つかりません。
これらのことをよりよく知っている人は、ノコギリをインストールする方法を知っていますか?
同じ問題がありました。残念ながら、「 Installing Nokogiri 」はIconvの問題をカバーしていません。問題を解決した方法は次のとおりです。
最初に homebrew をインストールすると、作業が楽になります。既にインストールされている場合は、次のように更新して最新の数式を取得してください。
brew update
注:OSX 10.9+では、libiconvをインストールできるようにxCodeコマンドツールをインストールする必要がある場合があります。
xcode-select --install
その後、新しいバージョンのlibiconvをインストールします
brew install libiconv
次に、新しいiconvライブラリをリンクします。
brew link libiconv
次に、gemをインストールします
gem install nokogiri -- --with-iconv-dir=/usr/local/Cellar/libiconv/1.14
システムライブラリを使用してみてください。 OSXには新しいバージョンのlibiconvが付属していますが、デフォルトのインストールスクリプトに問題があるようです
gem install nokogiri -- --use-system-libraries
編集:バンドラーを使用している場合、 Geoff で述べたように、次のことができます:
bundle config build.nokogiri --use-system-libraries
@Coryのソリューションには正しい答えが含まれていますが、Mavericksのソリューションは実際には最上位のソリューションよりもはるかに単純なので、必要な手順だけを再投稿しています。
Mavericks(OSX 10.9+)の場合:
Xcodeコマンドラインツールをインストールします。
xcode-select --install
次に、gemをインストールします。
gem install nokogiri
私はついにこの問題を解決することができました。上記の解決策のどれも私のためにそれを完全に修正しませんでした。
OSX Lion 10.7.2でgem install nokogiri
を実行しようとすると、このエラーが発生しました。まず第一に、このエラーはlibiconvが欠落していると言うことで本当の問題を隠します。なぜなら、nokogiriがlibxsltまたはlibxml2を見つけることができなくても同じエラーを受け取るからです。
そこで、Homebrewセクションの下の http://nokogiri.org/tutorials/installing_nokogiri.html の指示に従いました(libxml2の最新バージョンに対応するために少し変更しました)。
brew install libxml2
brew link libxml2
# install libxslt from source
wget ftp://xmlsoft.org/libxml2/libxslt-1.1.26.tar.gz
tar -zxvf libxslt-1.1.26.tar.gz
cd libxslt-1.1.26
./configure --prefix=/usr/local/Cellar/libxslt/1.1.26 --with-libxml-prefix=/usr/local/Cellar/libxml2/2.7.8
make
Sudo make install
この時点で、ノコギリのサイトの指示に従って、
gem install nokogiri -- --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.26
ただし、ソースからlibxsltをビルドすると、/include
フォルダーがファンキーな場所にインストールされるため、これはまだ失敗しました。したがって、次のようにlib
およびinclude
フォルダーを個別に指定する必要があります。
gem install nokogiri -- --with-xslt-lib=/usr/local/Cellar/libxslt/1.1.26/lib --with-xslt-include=/usr/local/Cellar/libxslt/1.1.26/include/libxslt
これはまだ機能しませんでした(同じlibiconvエラー)ので、必要な3つのライブラリ(libxslt、libxml2、libiconv)をすべて指定しようとしました。
gem install nokogiri -- --with-xslt-lib=/usr/local/Cellar/libxslt/1.1.26/lib --with-xslt-include=/usr/local/Cellar/libxslt/1.1.26/include/libxslt --with-iconv-dir=/usr/local/Cellar/libiconv/1.14 --with-xml2-dir=/usr/local/Cellar/libxml2/2.7.8
今、私は別のエラーを受け取りました!まだエラーでしたが、少なくとも異なっていました。メイクプロセスが失敗しました:
in /opt/local/lib/libz.1.dylib, file was built for unsupported file format which is not the architecture being linked (x86_64) for architecture x86_64
えっ、何?多くのグーグル検索の後、私はこの奇跡の投稿に出会いました: http://www.refresherate.com/2010/01/08/fixing-ld-warning-in-usrlocalliblibz-dylib-file-is-not -of-required-architecture /
どうやらOSX Lionにはlibzライブラリの一部の不良バージョン(libz.dylib, libz.1.dylib, libz.1.2.4.dylib
)が同梱されており、Xcode SDKの最新バージョンに置き換える必要があります。この記事は、私ができる以上にそれを説明しているので、具体的な指示については上記のリンクを読んでください。
これらが交換されたら、私は走った
gem install nokogiri -- --with-xslt-lib=/usr/local/Cellar/libxslt/1.1.26/lib --with-xslt-include=/usr/local/Cellar/libxslt/1.1.26/include/libxslt --with-iconv-dir=/usr/local/Cellar/libiconv/1.14 --with-xml2-dir=/usr/local/Cellar/libxml2/2.7.8
再び、すべてが順調でした。これが他の人の助けになることを願っています。
群衆に私の声を追加するだけですが、mkmf.logはx86_64アーキテクチャのシンボルを見つけることができないということを言っていました。私はこの解決策に出くわしました:
Sudo env ARCHFLAGS="-Arch x86_64" gem install nokogiri -- --use-system-libraries
元の質問者にとって何も解決しないかもしれませんが、これは誰かを助けるかもしれません。
サイドノート:nokogiriはRubyアプリケーションを使用する上で最も高い障壁でした。誰かが異なるバージョンに依存するたびに、そのビルド方法を見つけ出す必要があります。そして、私の問題は毎回異なります。
私は使用しています.. OS X 10.9.4 Homebrew 0.9.4
Nokogiriを正常にインストールし、欠落しているlibiconvを修正するこのスレッドからの私の夏です。
インストール Homebrewhttp://brew.sh/ または、以下のコマンドを使用して最新に更新します
brew update
Libxml2 libxsltをインストールします
brew install libxml2 libxslt
Libxml2とlibxsltの両方をリンクします
brew link libxml2 libxslt
--forceを使用するように警告が表示された場合は、以下のコマンドを使用してください
brew link --force libxml2 libxslt
XCodeコマンドツールをインストールして、libiconvをインストールできるようにします
xcode-select --install
Libiconvをインストールする
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz
tar xvfz libiconv-1.13.1.tar.gz
cd libiconv-1.13.1
./configure --prefix=/usr/local/Cellar/libiconv/1.13.1
make
Sudo make install
最後のステップ、のこぎりをインストールします!
gem install nokogiri -- --with-xml2-include=/usr/local/Cellar/libxml2/2.8.0/include/libxml2 --with-xml2-lib=/usr/local/Cellar/libxml2/2.8.0/lib --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.26 --with-iconv-include=/usr/local/Cellar/libiconv/1.13.1/include --with-iconv-lib=/usr/local/Cellar/libiconv/1.13.1/lib
Yosemite
実行中Ruby 2.1.4
でこれを解決しました
xcode-select --install
、その後xcode-select --install
はしない-ため息)bundle install
は正常に機能しました。私もbrew install libiconv
もしましたが、そのステップが必要だとは思いません。
私は多くのことを試しましたが、何もうまくいきませんでした。それから私は最終的に iconv documentation を見つけ、それは私の日を救った!
libiconvはHomebrew 0.9から削除されました。libiconvをソースからコンパイルし、nokogiri gemをインストールするときにインストールを参照することをお勧めします。 Nokogiriインストールページ のHomebrew 0.9セクションにあるNokogiriのインストール手順を参照してください。
Mkmfファイルを見ると、nokogiri(またはgem、私は知りません)が/ op/local /で依存関係を見つけようとしていることがわかります。私にとっては、彼らを探すのは正しい道ではありません。
Nokogiriに適切な場所(homebrewを使用)でlibsを見つけるように強制することは、私にトリックをしました:
$ gem install nokogiri -- --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.26 --with-xml2-dir=/usr/local/Cellar/libxml2/2.7.8/
ノコギリには修正すべきことがあるかもしれません...
HTH、
MacPortsでlibxml2とlibxsltをインストールしたと仮定すると、have_func( 'iconv_open'、 'iconv.h')の呼び出しで使用されるインクルードパスとリンクパスの順序が一致しないため、このエラーが引き続き発生する可能性があります。
シンプルな(パッチ)ソリューション:/ usr/local/libのlibiconv。*を削除します
今日はOS X 10.10 Yosemiteでノコギリとしばらく戦っていました
何らかの理由で私の環境が台無しになりました。
which bundle
とwhich gem
は、/usr/bin/bundle
の代わりに/usr/bin/gem
と~/.rbenv/shims/gem
を提供してくれました
修正に役立ったのはSudo rm -i /usr/bin/gem /usr/bin/bundle
でした
その後:1.プロジェクトディレクトリに戻りました2.依存ライブラリをアンインストールしました3.依存ライブラリを(再)インストールしました:brew install libxml2 libiconv libxslt
をインストールしました4. Rubyバージョンをインストールしました( rbenv)5. gem install bundler
6.およびbundle install
は問題なく実行されました。
Nokogiri
はその後大丈夫でした。
参考のため:
╰─% cat .bundle/config
---
BUNDLE_PATH: vendor/bundle
BUNDLE_DISABLE_SHARED_GEMS: '1'
BUNDLE_JOBS: 4
╰─% which Ruby bundle gem
~/.rbenv/shims/Ruby
~/.rbenv/shims/bundle
~/.rbenv/shims/gem
$ gem install nokogiri -- --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.26 --with-xml2-dir=/usr/local/Cellar/libxml2/2.7.8/
上記と同じ、これはhomebrewとgemインストールを使用するためのソリューションです(変更はバージョンによって異なります)
ただし、Gemfileとバンドルインストールを使用する場合は、インストールする前にバンドル構成を適用する必要があります。ここではコード
$ bundle config build.nokogiri --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.26 --with-xml2-dir=/usr/local/Cellar/libxml2/2.7.8/ --with-iconv-dir=/usr/local/Cellar/libiconv/1.14
繰り返しますが、変更の適用はバージョンによって異なります
これがあなたのお役に立てば幸いです。
Mavericksでこれを行うこともできます。
gem install nokogiri---use-system-libraries = true --with-xml2-include =/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/libxml2
Xcodeがインストールされていることを確認してください
Gemのビルドディレクトリにあるmkmf.logファイルを確認します(例:/Library/Ruby/Gems/1.8/gems/nokogiri-1.4.4/ext/nokogiri/mkmf.log)。それにはもっと多くの情報があります。私の場合、これを見つけたとき、Nokogiriは/ opt/local/libをライブラリ検索パスに明示的に追加し、GNU Backgammonは互換性のないlibiconvをそこにインストールしていました。
Mountain Lionでも同様のトラブルがありました。以前はrvmパッケージを介してlibiconvをインストールしていたため、Ruby 1.9.3/Mountain Lion/nokogiriにはこれは不要です。
https://rvm.io/packages/ のアドバイスに従って、$ rvm_path/usrディレクトリを削除し、Ruby 1.9.3を再構築しました。その後、nokogiriのインストールは簡単なgemインストールでした。 brew/macports/manual sourceインストールを台無しにしないでください!
ホームブリューユーザー
自作を使用している場合、この問題を解決する正しい解決策:
xcode-select --install
ダイアログボックスから[Xcodeの取得]を選択します。
brew unlink libiconv
gem install nokogiri
Xcode-selectステップは、XcodeインストールとXcode Command Line Utilsインストールを修正します。 O/Sのアップグレードまたはバックアップからの復元に何らかの問題があるため、/ usr/include/iconv.hがないことがわかりました。 xcode-selectを実行した後にそのヘッダーファイルと/usr/lib/libconv.dylibがない場合は、Xcodeをアプリケーションフォルダーからゴミ箱にドラッグして再インストールし、Xcodeのコマンドラインツールを手動でダウンロードする必要があります。 from https://developer.Apple.com/downloads/index.action からインストールします。
次に、libiconvをhomebrewからリンク解除する必要があります。これは必要ありません。そして、clangは実際に/usr/include/iconv.hより/usr/local/include/iconv.hを選択し、#define iconv_openをlibiconv_openに定義しますが、libiconv_openを持たない/usr/lib/libiconv.dylibに対してリンクします。 mkmfの失敗がlibiconvを見つける原因となります。必要なのは、ikov.hのリンクを削除して、nokogiriがそれを見つけられないようにすることです。
その後、通常通りnokogiriをビルドします。
新規ユーザーの場合、xcode-selectを使用してxcodeをインストールし、nokogiriをインストールするだけでよいのですが、この質問を見つけた場合は、Mavericksの新規インストールではなく、失敗したインストールになっていると思われます。
ここの他の答えのいくつかは間違いなく間違いです。それらのほとんどは、完全に不要な自作のlibiconvを使用しようとします。 brew link libiconv
という答えは、実際にclangが混乱し、homebrewヘッダーファイルを読み取ってシステムライブラリにリンクしようとするという問題を引き起こしています。 --use-system-libraries
を示唆する答えは、nokogiriがバンドルされたlibxml2およびlibxsltライブラリとリンクする必要があるため、これらのライブラリの他のバージョンは互換性がないため、貧弱です。あなたがソースからコンパイルすることを望む答えは、絶望的に過度に複雑です。
TL; DR:
RVMユーザー
古いRVMインストールでは、システムライブラリと競合しているrvmディレクトリにlibiconvが隠れている場合があります。詳細については、 https://stackoverflow.com/a/11809261/506908 を参照してください。
MacPorts USERS
/opt/local/lib/libiconv.dylibがある場合、nokogiriは検索するディレクトリのリストにそのパスを追加し、homebrew libiconvを選択してシステムライブラリと競合するのと同様のMacPortsインストールを見つけます。あなたが試すことができます:
Sudo port uninstall libiconv
依存関係が原因で失敗する場合は、MacPortsバージョンに直接リンクしてみてください(テストされていません):
gem install nokogiri -- --with-iconv-dir=/opt/local
Homebrewを0.9にアップグレードする必要があります
次に、これらの手順に従います
brew install libxml2 libxslt
brew link libxml2 libxslt
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz
tar xvfz libiconv-1.13.1.tar.gz
cd libiconv-1.13.1
./configure --prefix=/usr/local/Cellar/libiconv/1.13.1
make
Sudo make install
Sudo ln -s /usr/bin/gcc /usr/bin/gcc-4.2
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 --with-iconv-include=/usr/local/Cellar/libiconv/1.13.1/include --with-iconv-lib=/usr/local/Cellar/libiconv/1.13.1/lib
フォルダライブラリのバージョンを再確認する必要があります。
これは私のために働いた
Sudo env ARCHFLAGS = "-Arch x86_64" gem install nokogiri:1.6.6.2---use-system-libraries --with-xml =/usr/local/Cellar/libxml2/2.9.3/--with-iconv- dir =/usr/local/Cellar/libiconv/1.14
今朝、私はこれに出くわしました...マーベリックスへのアップグレード後。私たちは多くのことをしました。ただし、誰かがこの問題を抱えている場合は、試してみるべきことがいくつかあります。
「xcode-select --install」を実行し、コマンドラインツールをインストールしました(これは、OSのugradeでは更新されませんでした)。 「rvm implode」を実行しました(後でバックアップします)。
2つのエラー出力ファイルをまとめました。
〜/ .vagrant.d/gems/gems/nokogiri-1.6.3.1/ext/nokogiri/gem_make.out
〜/ .vagrant.d/gems/gems/nokogiri-1.6.3.1/ext/nokogiri/tmp/x86_64-Apple-darwin12.5.0/ports/libxml2/2.8.0/configure.log
これは、cコンパイラが驚くべき設定を使用していたことを示しているようです。
「env」を実行しました
含まれる出力:
...
CXX=/usr/local/opt/Apple-gcc42/bin/g++-4.2
...
CC=/usr/local/opt/Apple-gcc42/bin/gcc-4.2
...
これらのファイルはファイルシステムに存在しませんでした...
これらの変更がすべて新しいターミナルウィンドウに移動した後(すべてが新鮮になりました)。 vagrant-berkshelf(nokogiriをインストールする)のインストールは正常に機能しました。
注:新しいウィンドウで「env」を実行すると、CCまたはCXXの設定はなくなりました...
これの重要な部分、または順序が重要かどうかは不明ですが、これを機能させるために役割を果たすと思われる部分を再現しようとしました。
アンインストールとインストールを開始する前に従うべき簡単な手順。 CLT(コマンドラインツールがインストールされている)があるかどうかを確認します。
brew config
再インストールの必要がない場合は、ここでCLTバージョンを参照してください。
これは、問題が、Sudoではなくbundler gemのみを再インストールする許可を持つことを意味します。 gem uninstall bundler
を使用してバンドラーをアンインストールしますgem bundlerを再インストールしますgem install bundler
ここで最も重要な点は、Bundler gemをインストールする権限であり、sudoを使用しないでください。
ドキュメントによると、OSX 10.9およびHomebrew 9.5以降では、おそらく開発ツールが欠落しています。
次のようなlibiconvが見つからないという問題がある場合:
Installing nokogiri (1.6.2.1) Building nokogiri using packaged libraries.
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.
/usr/local/rvm/rubies/Ruby-2.0.0-p0/bin/Ruby extconf.rb
Building nokogiri using packaged libraries.
checking for iconv.h... yes
checking for iconv_open() in iconv.h... no
checking for iconv_open() in -liconv... no
checking for libiconv_open() in iconv.h... no
checking for libiconv_open() in -liconv... no
-----
libiconv is missing. please visit http://nokogiri.org/tutorials/installing_nokogiri.html for help with installing dependencies.
-----
*** extconf.rb failed ***
次に、適切な開発者ツールが不足している可能性があります。これは本当に簡単な修正です。
brew unlink gcc-4.2 # you might not need this step
gem uninstall nokogiri
xcode-select --install
gem install nokogiri
これは、OS X 10.9 xcodeのclangコンパイラで動作することが確認されています。
私は同様の問題があり、受け入れられた答えは私のために働いていました。しかし、この質問のようにgmkdir
コマンドが欠落している新しいエラーメッセージが表示されています。
gem install nokogiri -v '1.5.11'はmakeのために失敗しました:/ usr/local/bin/gmkdir:そのようなファイルまたはディレクトリはありません
私のために働いたのは、最初のちょっとした整理でした:
brew uninstall libiconv
brew uninstall libxml2
brew uninstall libxslt
そして、brew unlink libiconv
およびリンクを解除する必要があるものはすべて(brew doctor
で確認してください)。次に、魔法の2行(リンクされた回答からコピー):
brew install coreutils
gem install nokogiri
Mac OSをYosemiteにアップグレードしたときにこの問題が発生しました。私はこの問題を解決することができました:
xcode-select --install
brew uninstall libiconv
brew install libiconv
gem install nokogiri