web-dev-qa-db-ja.com

Mac OSにNokogiriをインストールすると、libiconvがないために失敗するのはなぜですか?

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は見つかりません。

これらのことをよりよく知っている人は、ノコギリをインストールする方法を知っていますか?

150
polarblau

同じ問題がありました。残念ながら、「 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
230
Cory

システムライブラリを使用してみてください。 OSXには新しいバージョンのlibiconvが付属していますが、デフォルトのインストールスクリプトに問題があるようです

gem install nokogiri -- --use-system-libraries

編集:バンドラーを使用している場合、 Geoff で述べたように、次のことができます:

bundle config build.nokogiri --use-system-libraries
76
Filip Kis

@Coryのソリューションには正しい答えが含まれていますが、Mavericksのソリューションは実際には最上位のソリューションよりもはるかに単純なので、必要な手順だけを再投稿しています。

Mavericks(OSX 10.9+)の場合:

Xcodeコマンドラインツールをインストールします。

xcode-select --install

次に、gemをインストールします。

gem install nokogiri
36

私はついにこの問題を解決することができました。上記の解決策のどれも私のためにそれを完全に修正しませんでした。

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

再び、すべてが順調でした。これが他の人の助けになることを願っています。

19

群衆に私の声を追加するだけですが、mkmf.logはx86_64アーキテクチャのシンボルを見つけることができないということを言っていました。私はこの解決策に出くわしました:

Sudo env ARCHFLAGS="-Arch x86_64" gem install nokogiri -- --use-system-libraries

元の質問者にとって何も解決しないかもしれませんが、これは誰かを助けるかもしれません。

サイドノート:nokogiriはRubyアプリケーションを使用する上で最も高い障壁でした。誰かが異なるバージョンに依存するたびに、そのビルド方法を見つけ出す必要があります。そして、私の問題は毎回異なります。

15
nbering

私は使用しています.. 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
6
Kevin Ng

Yosemite実行中Ruby 2.1.4でこれを解決しました

  1. xCode 6.1がインストールされていることを確認してから、
  2. xcode-select --install、その後
  3. AppStoreでpdatesをクリックし、コマンドラインツールの最新バージョンをインストールします(明らかにxcode-select --installはしない-ため息)
  4. その後、bundle installは正常に機能しました。

私もbrew install libiconvもしましたが、そのステップが必要だとは思いません。

5
Dave Sag

私は多くのことを試しましたが、何もうまくいきませんでした。それから私は最終的に iconv documentation を見つけ、それは私の日を救った!

4
Kamil Sarna

libiconvはHomebrew 0.9から削除されました。libiconvをソースからコンパイルし、nokogiri gemをインストールするときにインストールを参照することをお勧めします。 Nokogiriインストールページ のHomebrew 0.9セクションにあるNokogiriのインストール手順を参照してください。

3
SupaIrish

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、

3

MacPortsでlibxml2とlibxsltをインストールしたと仮定すると、have_func( 'iconv_open'、 'iconv.h')の呼び出しで使用されるインクルードパスとリンクパスの順序が一致しないため、このエラーが引き続き発生する可能性があります。

シンプルな(パッチ)ソリューション:/ usr/local/libのlibiconv。*を削除します

2
Mick West

今日はOS X 10.10 Yosemiteでノコギリとしばらく戦っていました

何らかの理由で私の環境が台無しになりました。

which bundlewhich 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
2
Sam Figueroa
$ 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

繰り返しますが、変更の適用はバージョンによって異なります

これがあなたのお役に立てば幸いです。

クレジット: https://Gist.github.com/1344331

2
RacsO

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がインストールされていることを確認してください

2
Sam Rosen

Gemのビルドディレクトリにあるmkmf.logファイルを確認します(例:/Library/Ruby/Gems/1.8/gems/nokogiri-1.4.4/ext/nokogiri/mkmf.log)。それにはもっと多くの情報があります。私の場合、これを見つけたとき、Nokogiriは/ opt/local/libをライブラリ検索パスに明示的に追加し、GNU Backgammonは互換性のないlibiconvをそこにインストールしていました。

2
scotchi

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インストールを台無しにしないでください!

2
Mike

ホームブリューユーザー

自作を使用している場合、この問題を解決する正しい解決策:

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:

  • Xcodeインストールをアップグレードまたは修復します。
  • 自作libiconvのリンクを解除してください
  • のこぎりを普通にビルドする

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
1
lamont

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

フォルダライブラリのバージョンを再確認する必要があります。

1
Ilake Chang

これは私のために働いた

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

1
Chen Kinnrot

今朝、私はこれに出くわしました...マーベリックスへのアップグレード後。私たちは多くのことをしました。ただし、誰かがこの問題を抱えている場合は、試してみるべきことがいくつかあります。

「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の設定はなくなりました...

これの重要な部分、または順序が重要かどうかは不明ですが、これを機能させるために役割を果たすと思われる部分を再現しようとしました。

0
aaron blythe

アンインストールとインストールを開始する前に従うべき簡単な手順。 CLT(コマンドラインツールがインストールされている)があるかどうかを確認します。

brew config

再インストールの必要がない場合は、ここでCLTバージョンを参照してください。

これは、問題が、Sudoではなくbundler gemのみを再インストールする許可を持つことを意味します。 gem uninstall bundlerを使用してバンドラーをアンインストールしますgem bundlerを再インストールしますgem install bundler

ここで最も重要な点は、Bundler gemをインストールする権限であり、sudoを使用しないでください。

0
Pikachu-go

ドキュメントによると、OSX 10.9およびHomebrew 9.5以降では、おそらく開発ツールが欠落しています。

Nokogiriのインストール

トラブルシューティング

次のような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コンパイラで動作することが確認されています。

0
rexmadden

私は同様の問題があり、受け入れられた答えは私のために働いていました。しかし、この質問のように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
0
skensell

Mac OSをYosemiteにアップグレードしたときにこの問題が発生しました。私はこの問題を解決することができました:

xcode-select --install
brew uninstall libiconv
brew install libiconv
gem install nokogiri
0
Lalu