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


159

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は検出されません。

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


使用しようとしている正確なコマンドは表示しないので、答えを出そうとして暗闇の中で撮影します。私はいつもを使用していますがgem install nokogiri、RVMを使用してMac OS Rubyインストールを管理しています。libxmlとlibxsltはiconvとは関係がないので、サポートフォーラムであるNokogiri-talkについて質問することをお勧めします。Nokogiriをインストールするときにiconvの問題があったことを覚えていません。多くのマシンで使用しています。
ティンマン

1
その間、github:github.com/tenderlove/nokogiri/issues/442でチケットを開きました。これには、もう少し情報が含まれています。
polarblau 2011

2
OSX El Capitanで同じ問題を解決するためのリンク、estebantorr.es
blog /

sudo gem install nokogirisudogemのインストールやデフォルトのRubyの変更には使用しないでください。代わりに、rbenvまたはRVMを使用して個別のRubyを管理します。これはスタックオーバーフローで複数回カバーされます。
Tin Man

nokogiriをインストールする前にxzをアンインストールしてみましたか?
lifeisfoo 2016

回答:


237

同じ問題がありました。残念ながら、「Nokogiriのインストール」はIconvの問題をカバーしていません。これが私が問題を解決した方法です。

最初に自作をインストールすると、あなたの生活が楽になります。すでにインストールされている場合は、次のように更新して最新の数式を取得してください。

brew update

:OSX 10.9以降では、libiconvをインストールするためにxCodeコマンドツールをインストールする必要がある場合があります。

xcode-select --install

その後、libiconvの新しいバージョンをインストールします

brew install libiconv

次にあなたの宝石をインストールしてください

gem install nokogiri -- --with-iconv-dir=/usr/local/Cellar/libiconv/1.14

5
「brew install libiconv」と「brew link libiconv」を実行すると、nokogiriを正常にインストールできました。それがbrewによってインストールされたlibiconvの特定のバージョンに強い依存関係がないことを願っています。
Steven Chanin 2012年

87
私がbrew install libiconvそれを吐き出そうとすると、エラー:libiconvに利用可能な公式がありません。AppleはlibiconvをOS Xで配布しています。これは/ usr / libにあります。一部のビルドスクリプトは正しく検出できません。既存の式で解決策を確認してください。
Seth Bro

62
Mavericksを実行している場合は、Xcodeのコマンドラインツールをインストールする必要がある場合がありますxcode-select --install。これで問題が解決しました。
Michael Stalker

34
あなたはまだ取得できない場合brew install libiconv:右の式を取得するには、この使用brew tap homebrew/dupes
jamesdlivesinatree

15
OS X Yosemite(10.10)私は何かをする必要はありませんでしたbrew。ちょうどxcode-select --install私のためにこの問題を修正しました。
bjfletcher 2014年

84

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

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

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

bundle config build.nokogiri --use-system-libraries

5
bundlerを使用している場合-「bundle config build.nokogiri --use-system-libraries」を実行できます
Geoff

1
最後に、「バンドル構成build.nokogiri --use-system-libraries」が機能しました。それが起こるとき私は嫌いです
nils petersohn 2014年

1
Mac OS 10.10 Yosemiteで私のために働いた。
ロイドデウルフ2014

なぜgem installコマンドの途中に余分な「-」が必要なのですか?
レンブラントQ.アインシュタイン

3
10.10.3では失敗しました。Xcode 6.3とlibxml2 version 2.6.21 or later is required!
Rivera

36

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

Mavericks(OSX 10.9以降):

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

xcode-select --install

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

gem install nokogiri

4
ヨセミテで動作します。下にスクロールして、古い回答を使用しなかったことをうれしく思います。
yuяi

このヒントをありがとう!マーベリックスで
アイス

私のソリューションを使ってみましたか?xcodeのインストールは必要ありません。
Filip Kis、

これはNokogiriドキュメント(nokogiri.org/tutorials/installing_nokogiri.html#mac_os_x)の公式ソリューションであり、El Capitanで動作した唯一のソリューションです。受け入れられた解決策はそこで機能しませんでした。
ヨハネス

エルキャピタンで私のために働いたので、とても腹立たしい。Nokogiri docs @Johannesへのリンクをありがとう-本当に便利です。だれもが「システムライブラリを使用する」と言っているソリューションは避けてください。
Polsonby 2016

19

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

gem install nokogiriOSX Lion 10.7.2で試したところ、このエラーが発生しました。まず、このエラーは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

今、私は別のエラーを受け取りました!それはまだエラーでしたが、少なくともそれは異なっていました。makeプロセスが失敗しました:

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 -建築/

どうやら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

再び、すべてが順調でした。これが他の誰かの役に立つことを願っています。


同じ問題がありましたが、opt / local / libからlibz.dylibとlibz.1.dylibのファイルを削除し、これらの残りの手順に従うとうまくいきました。
2011

1
/ opt / localはMacPortsインストールを意味すると思います。HomebrewとMacportsを実行している場合、あなたは(あなたの場合に見られるように)いくつかのファンキーさで終わるでしょう。最良の解決策は、Macportsをアンインストールし、パッケージマネージャーに自作を使用することです。
コリー

以下に、Mavericks(OSX 10.9+)用の新しいシンプルなソリューションを追加しました。
Micah Winkelspecht 2014

17

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

sudo env ARCHFLAGS="-arch x86_64" gem install nokogiri -- --use-system-libraries

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

補足:nokogiriはルビーアプリケーションを使用する上での私の最大の障壁でした。誰かが別のバージョンに依存するたびに、それを構築する方法を見つけなければなりません。そして、私の問題は毎回異なります。


1
のこぎりの感情に同意します。すべて。シングル。時間。
jbnunn

この形ではARCHFLAGS="-arch x86_64" sudo gem install nokogiri -- --use-system-libraries
うまくいき

これは私にとっても機能し、はるかに簡単な解決策でした。ARCHFLAGSを使用せず、sudo gem install nokogiri---use-system-libraries
ryudice

8

gem install nokogiri -v '1.6.6.2' -- --use-system-libraries --with-xml2-include=$(brew --prefix libxml2)/include/libxml2

これはmacosで私のために働いた。バージョンにも対応1.6.6.4


--with-xml2-includeカタリナで私のオプションなしで働いた... gem install nokogiri --version=1.6.6.2 -- --use-system-libraries
ryanc

6

使用しています。OS X 10.9.4 Homebrew 0.9.4

これは、このスレッドからnokogiriを正常にインストールし、不足しているlibiconvを修正するための私の要約です。

Homebrew http://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

5

私はYosemite走るRuby 2.1.4ことでこれを解決しました

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

私もそうしましたbrew install libiconvが、そのステップが必要であると私は確信していません。


brew install libiconvは必要だとは思いません-適切なパッケージを見つけることに煩わされることはなく、これは私にとってはうまくいきました。確かに、以前ルビー2.1.1でnokogiriをインストールしたときから私のマシンにあった可能性があります。
jmstone617 2014年

「AppStoreで更新をクリックして、最新バージョンのコマンドラインツールをインストールします(明らかにxcode-select --installは実行できません-ため息)」–利用可能な更新はありません。Xcodeからコマンドラインツールを更新するにはどうすればよいですか?これらは、環境設定ペインの「ダウンロード」セクションには表示されません。
chadoh 2014年

これはアプリストアに行かなくてもうまくいきました。コマンドラインツールとOSを(Yosemiteに)更新xcode-select --installして実行したところ、Nokogiriをインストールできました。
鋼、

私はしなければなりませんでした:xcode-select --install .. brew install libxml2 .. bundle config build.nokogiri --use-system-libraries .. bundle install
Zack Burt


3

mkmfファイルを見ると、nokogiri(またはgem、わかりません)が/ op / local /で依存関係を見つけようとしているようです。私にとって、それらを検索するための正しい道ではありません。

nokogiriが適切な場所でライブラリを検索するように強制する(私は自作を使用しています)と、私にとってはうまくいきました。

$ 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

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


今日、私は$ brew install libiconvを実行でき、libiconv-1.14.tar.gzをダウンロードしてインストールしました
Evolve

2

gemのビルドディレクトリのmkmf.logファイルを確認します(例:/ライブラリ/Ruby/Gems/1.8/gems/nokogiri-1.4.4/ext/nokogiri/mkmf.log)。それにはもっと多くの情報があります。私がこれにぶつかったとき、それはNokogiriが特に/ opt / local / libをライブラリ検索パスに追加し、GNUバックギャモンが互換性のないlibiconvをそこにインストールしたということでした。


2

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

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


MacPortsでlibxml2とlibxsltをインストールしましたが、/ usr / local / libにlibiconv。*ファイルがありません
Valerio Schiavoni 14年

2
$ gem install nokogiri -- --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.26 --with-xml2-dir=/usr/local/Cellar/libxml2/2.7.8/

上記と同じ、これは自作とgem installを使用するためのソリューションです(変更は適用するバージョンによって異なります)。

ただし、Gemfileとbundle installを使用する場合は、インストールする前にbundle configを適用する必要があります。ここではコード

$ 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

マウンテンライオンでも同様の問題がありました。以前に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 installsをいじる必要はありません!


2

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


同じソリューションが10.7.5でも機能します:gem install nokogiri---use-system-libraries = true --with-xml2-include = / Applications / Xcode.app / Contents / Developer / Platforms / MacOSX.platform / Developer /SDKs/MacOSX10.7.sdk/usr/include/libxml2
tolginho

2

今日はしばらくの間、X X 10.10 YosemiteでNokogiriと戦っていました

どういうわけか私の環境はめちゃくちゃになりました。

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. 行ったルビーバージョンを新しく(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

1
後から(常に20/20です)、おそらくrbenvを最初に追加するようにPATH env-variableを調整しただけかもしれません。
Sam Figueroa 2014年

1

あなたは自作を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は物事を壊します。いくつかの理由で樽のみです。保守しやすい方法があるため、醸造式を使用します。 brew create http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz && brew install libiconv

1

HOMEBREWユーザー

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

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のコマンドラインツールを手動でダウンロードする必要があります。https://developer.apple.com/downloads/index.actionから、それをインストールします。

次に、自作のlibiconvをリンク解除する必要があります。これは必要ありません。そして、clangは実際に/usr/include/iconv.hよりも/usr/local/include/iconv.hを取得し、libiconv_openに#define iconv_openを行いますが、libiconv_openを持たない/usr/lib/libiconv.dylibに対してリンクします。 mkmfがlibiconvを見つけられない原因です。あなたがする必要があるのは、nokogiriがそれを見つけられないように、iconv.hのリンクを削除することです。

その後、通常どおりにこぎりをビルドします。

新規ユーザーの場合、必要なのはxcodeをxcode-selectでインストールしてnokogiriをインストールすることだけですが、この質問が見つかった場合は、インストールが失敗しており、Mavericksを新規インストールしていない可能性があります。

ここでの他の回答のいくつかは間違いなく正しくありません。それらのほとんどは、完全に不要な自作のlibiconvを使用しようとします。brew link libiconv実際にclangが混乱し、自作のヘッダーファイルを読み取ってシステムライブラリにリンクしようとする問題を引き起こしている答え。--use-system-librariesnokogiriは、バンドルされているlibxml2およびlibxsltライブラリーにリンクする必要があるため、これらのライブラリーの他のバージョンは互換性がないため、示唆する答えは不十分です。ソースからコンパイルしてほしい答えは、どうしようもなく複雑すぎます。

TL; DR:

  • Xcodeインストールをアップグレードまたは修復する
  • 問題を引き起こすだけの使用を試みているため、自作のlibiconvのリンクを解除します
  • 通常のこぎりを構築する

RVMユーザー

古いRVMインストールでは、システムライブラリと競合している場所のどこかに、rvmディレクトリにlibiconvが隠れている場合があります。詳細については、https://stackoverflow.com/a/11809261/506908を参照してください

MacPortsユーザー

/opt/local/lib/libiconv.dylibがある場合、nokogiriは検索するディレクトリのリストにそのパスを追加し、homebrew libiconvを取得してシステムライブラリと競合する方法と同様のMacPortsインストールを見つけます。あなたが試すことができます:

sudo port uninstall libiconv

依存関係が原因で失敗する場合は、MacPortsのバージョンに対して直接リンクしてみてください(テストされていません)。

gem install nokogiri -- --with-iconv-dir=/opt/local

gem install nokogiri -- --with-iconv-dir=/opt/localMacPortsがlibiconvインストールされている場合の確認は
正常に機能する

1

これは私のために働いた

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


--use-system-librariesと--with-iconv-dirの
組み合わせ

0

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

「xcode-select --install」を実行してから、コマンドラインツールをインストールしました(これはOSアップグレードで更新されなかったので驚いた)。「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の設定がなくなりました...

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


コマンドはgem install nokogiri成功しますか?「すでにインストールされています」というメッセージが表示されるか、インストールが成功したか
Spundun 2014

はい。Macでバックアップを作成するときに、rvmとoh-my-zshを再インストールしました。私が理解できなかったのは、nokogiriをrvm gemsetにインストールする方法です。「rvm use system」に戻すと、OS X ruby​​ 2.0.0p451に付属する1.5.6の上にnokogiri 1.6.3.1をインストールできます。
アーロンブライス2014

最終的に私にとってそれは、stackoverflow.com / questions
19643153 /…

0

ドキュメントによると、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

これは、xcodeのclangコンパイラを含むOSX 10.9で動作することが確認されています。


0

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

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

0

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

何かをアンインストールおよびインストールする前に実行する簡単な手順。CLT(コマンドラインツールがインストールされている)があるかどうかを確認します。

brew config

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

これは、問題が、sudoではなくbundler gemのみを再インストールする許可を得ていることを意味します。gem uninstall bundler gem bundlerを再 インストールしてbundleをアンインストールします gem install bundler

ここで最も重要な点は、bundle gemがインストールされる許可であり、sudoされるべきではありません。


-1

まず、nokogiriのインストールガイドに従ってください:http ://nokogiri.org/tutorials/installing_nokogiri.html

ガイドに従った後も、この問題が発生しました。これは私がそれを解決した方法です:

まず、homebrewを使用してiconvをインストールしました:brew install iconv

次に、Rubyをアンインストールしました。幸い、これはrvmを使用すると非常に簡単です。

rvm uninstall 1.9.2        

次に、次のオプションを使用してrubyを再インストールする必要がありました。

CC=gcc-4.2 rvm install 1.9.2-p290 --with-iconv-dir=/usr/local/Cellar/libiconv/1.13.1

次に、新しいRubyバージョンでgemsetを作成します。

rvm use 1.9.2@coolproject

次に、最終的にこのようにnokogiriをインストールできます。

gem install nokogiri -v=1.4.4 -- --with-xml2-include=/usr/local/Cellar/libxml2/2.7.8/include/libxml2 --with-xml2-lib=/usr/local/Cellar/libxml2/2.7.8/lib --with-xslt-dir=/usr/local/Cellar/libxslt/1.1.26

-1

私の場合、(scotchiと同様に)/ opt / local / libに互換性のないiconvライブラリがあるため、ビルドが失敗しました。デフォルトでは、Nokogiriビルドプロセスは/ opt / localを最初に調べます。別のインストールディレクトリ、たとえば/ usr / localを使用するように強制するには、次のようにします。

gem install nokogiri -- --with-xml2-lib=/usr/local/lib --with-xml2-include=/usr/local/include/libxml2 --with-xslt-lib=/usr/local/lib --with-xslt-include=/usr/local/include

-1

このブログ投稿は、libiconvを手動でインストールすることを提案しています。

その後、いくつかのスイッチを使用してnokogiriをインストールし、libiconvの検索場所を指定できます(ブログ投稿を参照)。

余談ですが、nokogiriをインストールした後、なんとかgollumをインストールできました(iconvが見つからなかったため、インストールも失敗しました)。gollumを起動すると、Pythonがクラッシュするため、今でも問題は解決していません。


-1
$ gem install iconv # works but it is missing an iconv.so file in ruby 2.0.0-p247

$ ls -1 2.0.0-p0/lib/ruby/gems/2.0.0/gems/iconv-1.0.3/*/*/*.so
2.0.0-p0/lib/ruby/gems/2.0.0/gems/iconv-1.0.3/ext/iconv/iconv.so*
2.0.0-p0/lib/ruby/gems/2.0.0/gems/iconv-1.0.3/lib/iconv/iconv.so*

$ ls -1 2.0.0-p247/lib/ruby/gems/2.0.0/gems/iconv-1.0.3/*/*/*.so
2.0.0-p247/lib/ruby/gems/2.0.0/gems/iconv-1.0.3/ext/iconv/iconv.so*

2.0.0-p0 gemsインストールに存在する2.0.0-p247の不足している/lib/iconv/iconv.soファイルに注意してください。

$ rbenv version
2.0.0-p247 (set by /home/XXX/tmp/.ruby-version)
$ rbenv which gem
/home/XXX/.rbenv/versions/2.0.0-p247/bin/gem
$ gem --version
1.8.25

$ rbenv which pry
/home/XXX/.rbenv/versions/2.0.0-p247/bin/pry
$ pry
[1] pry(main)> require 'iconv'
LoadError: cannot load such file -- iconv/iconv.so
from /home/XXX/.rbenv/versions/2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/custom_require.rb:36:in `require'

ファイルをコピーします

$ pushd ~/.rbenv/versions/
$ cp 2.0.0-p247/lib/ruby/gems/2.0.0/gems/iconv-1.0.3/ext/iconv/iconv.so 2.0.0-p247/lib/ruby/gems/2.0.0/gems/iconv-1.0.3/lib/iconv/

今すぐ機能します!

$ pry
[1] pry(main)> require 'iconv'
=> true

注:私はrbenvで作業していますが、この問題はgemのインストールに固有であり、上流で修正する必要があります!
Darren Weber

この答えは、nokogiriのビルドが依存するC libiconvライブラリとは関係ありません。答えは本当に削除されるべきです。
ラモント

-1

実行する前に最初にgccをインストールする必要がありました ./configure --prefix=/usr/local/Cellar/libiconv/1.13.1

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.