extconf.rb:161から:
block in process_recipe'
from extconf.rb:154:in
タップで 'extconf.rb:154から:
process_recipe'
from extconf.rb:423:in
OS X10.6.6でRuby1.8.7(RVMを介して)を実行しています。 bundlerを使用してnokogiri1.4.4をインストールしようとすると、常に次のエラーが発生します。
Installing nokogiri (1.4.4) with native extensions /Users/administrator/.rvm/rubies/ruby-1.8.7-p302/lib/ruby/site_ruby/1.8/rubygems/installer.rb:533:in `build_extensions': ERROR: Failed to build gem native extension. (Gem::Installer::ExtensionBuildError)
/Users/administrator/.rvm/rubies/ruby-1.8.7-p302/bin/ruby extconf.rb
checking for libxml/parser.h... yes
checking for libxslt/xslt.h... yes
checking for libexslt/exslt.h... yes
checking for iconv_open() in iconv.h... no
checking for iconv_open() in -liconv... no
-----
libiconv is missing. please visit http://nokogiri.org/tutorials/installing_nokogiri.html for help with installing dependencies.
-----
*** extconf.rb failed ***
[…]
ここのウィキとネットの指示に従って、MacPortsを使用してlibxml2
とlibxslt
をインストールしました。これにより、次のような状況になります。
sudo port install libxml2 libxslt
Password:
Error: Cannot install libxml2 for the arch(s) 'x86_64' because
Error: its dependency libiconv is only installed for the archs 'i386 ppc'.
Error: Unable to execute port: architecture mismatch
ソースからlibxml2
とlibxslt
をビルドし、MacPortsのフラグとwikiで説明されているビルド、およびオンラインで見つかったいくつかのバリエーションを使用してgemをインストールしようとしました。 —結果は同じままです。 gemをダウンロードし、 https ://github.com/tenderlove/nokogiri/issues#issue/381で提案されているようにextconf.rb
を変更し、ローカルでコンパイルしましたが、最終的な結果は同じです。
何が欠けていますか? 私たちはこの状況でかなり立ち往生しています。
私はこれと同じ質問をしました、そしてこの応答を与えられました:
MacPortsをインストールします:http: //www.macports.org
/ opt / local / binをPATH(bashrcまたはzshrc、または使用するもの)に追加します。
sudo portinstalllibxml2およびsudoportinstall libxslt
次に、sudo gem install nokogiri--no-rdoc--no-riが問題なく実行されるはずです。 システムruby(OSX 10.6では1.8.7)とrvm経由の1.9.2に対して私がしなければならなかったのはこれだけです。
10.6でも同じ問題が発生していました。 MacPortsを再インストールし、libxml2とlibxsltをポートインストールしましたが、これらの問題は発生しなくなりました。
MacPortsでlibxml2とlibxsltをインストールしたとすると、have_func('iconv_open'、'iconv.h')の呼び出しで使用されるインクルードパスとリンクパスの順序が一致しないため、このエラーが発生する可能性があります。
単純な(パッチ)ソリューション:/ usr / local/libのlibiconv。*を削除します
提案:extconf.rbに、実際にインストールされているiconvライブラリの少し高度なチェックを実行させ、ユーザーにより良い手がかりを提供します。 この場合、libiconvは欠落していません。 実際には2つのlibiconvがあり、正しいヘッダーがコンパイルされ、古いライブラリがリンクされていました。 インストールファイルのエラーメッセージがもう少し役立つ可能性がある非常に一般的な問題のようです。
そして、これはmkmfとそれがライブラリパスを処理する方法の問題かもしれないと思いますか? 私にとって失敗したコンパイルチェックは次のとおりでした:
`` `" gcc -o conftest -I .-I / usr / local / lib / ruby / 1.8 / i686-darwin10.3.0 -I .-III / opt / local / include -III / usr / local / include -III / usr / local / include -III / usr / include -III / usr / include / libxml2 -I / opt / local / include / libxml2 -I / usr / local / include / libxml2 -I / usr / local / include / libxml2 -II / opt / local / include -II / usr / local / include -II / usr / local / include -II / usr / include -II / usr / include / libxml2 -I / opt / local / include -I / usr / local / include -I / usr / local / include -I / usr / include -I / usr / include / libxml2 -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -D_XOPEN_SOURCE = 1 -fno-common -pipe -fno-common -g -DXP_UNIX -O3 -Wall -Wcast-qual -Wwrite-strings -Wconversion -Wmissing-noreturn -Winline conftest.c -L. -L / usr / local / lib -L / opt / local / lib -L / usr / local / lib -L / usr/lib-L。-lruby-static-lpthread-ldl-lobjc "
アーキテクチャx86_64の未定義のシンボル:
「_libiconv_open」、参照元:
Note the compile stage starts with /opt/local/include, but the link stage starts with /usr/local/lib, which is where the old version was
私はライオンと自作を使用しています。 私にとって、これはトリックをしました:
brew install libiconv
brew link libiconv
私の場合(OS X Lionへの移行)、問題を解決するために、macportsをクリーンアップしました:
port -qv installed > myports.txt
sudo port -fp uninstall --follow-dependents installed
sudo port clean all
詳細: http ://trac.macports.org/wiki/Migration
jfahrenkrugが言ったことに+1。 http://nokogiri.org/tutorials/installing_nokogiri.htmlのインストールガイド、自作セクションはおそらく更新する必要があります。
brew install libxml2 libxslt
brew link libxml2 libxslt
に
brew install libxml2 libxslt libiconv
brew link libxml2 libxslt libiconv
jfahrenkrugの修正も私のために働いた
+1は私のために働きます
brewからlibxml2とlibxsltをビルドするための指示に従いました。 のこぎりが作れません。
'brew install libiconv'を実行しようとすると、エラーが発生します。
$ brew install libiconv
エラー:libiconvに使用できる式がありません
AppleはlibiconvをOSXで配布しています。これは/usr/libにあります。
一部のビルドスクリプトは正しく検出できません。既存のものを確認してください
ソリューションの公式。
SnowLeopardを新たにインストールしています。 MacPortsは使いたくない。
助けてください。
@jseigler brew 0.8.1を実行していて、libiconvを問題なくインストールできます。 brewをアップグレードしてみませんか?
@jseiglerと同じ問題がありました。 OSX10.7.3でbrew0.9を実行しています。
libiconvのダウンロードと手動でのコンパイルは機能しました。
http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz
brew 0.9ライブラリに対してNokogiriをインストールする方法がわかった場合は、お知らせください。インストールドキュメントを更新します。 それまでの間、主にLinuxのユーザーとして、私はあまり役に立たないのではないかと心配しています。
@tenderlove 、何かアイデアはありますか? あなたは3マック未満です。 :) :) :)
OSX10.7.3でbrew0.9を使用すると、以下が機能しました。
brew install libxml2 libxslt
brew link libxml2 libxslt
ソースからlibiconvをインストールします。
wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz
tar xvfz libiconv-1.13.1.tar.gz
cdlibiconv-1.13.1
./configure --prefix = / usr / local / Cellar / libiconv / 1.13.1
作る
sudo make install
次に、nokogiriをインストールします。
gem install nokogiri --- 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 --with-iconv-include = / usr / local / Cellar / libiconv / 1.13.1 / include --with-iconv-lib = / usr / local / Cellar / libiconv / 1.13.1 / lib
@ brennenf
よくやった。 それは私にとってもそれでした。
nokogiri.orgに投稿された手順:
http://nokogiri.org/tutorials/installing_nokogiri.html#homebrew_09
みなさん、ありがとうございます。
@brennenfこの行をありがとう
gem install nokogiri --- 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 --with-iconv-include = / usr / local / Cellar / libiconv / 1.13.1 / include --with-iconv-lib = / usr / local / Cellar / libiconv / 1.13.1 / lib
@brennenf修正すると、「nokogiri-1.5.2が正常にインストールされました」と表示されますが、Railsアプリでbundle installを実行すると、「nokogiri(1.5.2)のインストール中にエラーが発生し、Bundlerを続行できません。
バンドルする前に、 gem install nokogiri -v '1.5.2'
が成功することを確認してください。」「geminstall nokogiri -v '1.5.2」も失敗することに注意してください。他にこれを実行している人はいますか?
@ttringas -nokogiri-talkにメールしてください。 この問題はnokogiri1.4.4に関するものであり、数か月間クローズされています。
こんにちはマウンテンライオンの更新はありますか?
インストールが完了しません。
nokogiriのインストールページに記載されているパスを更新しました:
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
これは私がお返しにしたものです: https ://gist.github.com/3186643
@polarblau今問題を抱えている人を見てください:D(私)
それは役立つかもしれませんが、RVMの「エコシステム」はマウンテンライオンにアップデートした後はバグがあるようです。 .rvmを削除し、http://unfiniti.com/software/mac/jewelrybox/を使用してrvmをインストールすると、機能しますが、次のような警告が表示されます。
WARNING: Nokogiri was built against LibXML version 2.8.0, but has dynamically loaded 2.7.8
ここでも同じですが、rubyを再インストールすることでうまくいきました(私はそれほど驚いていません-それはかなり一般的な落とし穴です)
@pietia ;)etal。 SO、FYIでいくつかのアイデア—http ://stackoverflow.com/questions/5528839/installing-nokogiri-fails-libiconv-missing 。
@polarblau 、遅くまで! 私はすでにそれを読みました;)
新しくアップグレードしたMountainLionでインストールを機能させるには、以前にインストールしたrvmパッケージ($ rvm_path / usrにあります)を削除し、ruby 1.9.3を再構築してから、geminstallnokogiriが成功しました。 https://rvm.io/packages/を参照してください
私はマウンテンライオンにいます。 Rubyの再インストールは私のために働いた。
libxml2がありません。
Mac OS X 10.8 MountainLionのHomebrew0.9で上記を解決するには、追加の手順が1つ必要であることがわかりました。これは、「/ usr / bin/gcc-4.2」リンクを作成することです。
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
cdlibiconv-1.13.1
./configure --prefix = / usr / local / Cellar / libiconv / 1.13.1
作る
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.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
brax4444どうもありがとう、あなたは命の恩人です! エラーのため、最後のコマンドにsudoを追加すると完全に機能しました。
エラー:gemの実行中に...(Errno :: EPERM)
操作は許可されていません-〜/ .rvm / gems / ruby-1.9.3-p194 / gems / nokogiri-1.5.5 / .autotest
brax4444は男です! ありがとう
誰かが初心者を助けることができるかどうか疑問に思います:
ランニングマウンテンライオン10.8.2w/自作。
nokogiri1.5.2から始めました-典型的なlibiconvが欠落していました。
このスレッド、特にBrax4444とnokogiriのインストールチュートリアルの間: http ://nokogiri.org/tutorials/installing_nokogiri.html forHomebrew.9次のFUBARが残っています。
Railsが1.5.2を探しているnokogiri1.5.5があります。
数え切れないほどの時間にもかかわらず、まだlibiconvの問題を修正することができませんでした。
gemがないため、railsコマンドを実行できなくなりました> nokogiri:1.5.2
gem(1.5.5)またはrails new(この時点で何かを試しています...今すぐ次のエラーが表示されます:ERROR:gemの実行中...(Errno :: EPERM))をインストールしてみてください
操作は許可されていません-/usr/local/rvm/gems/ruby-1.9.3-p194/gems/nokogiri-1.5.5/.autotest
誰かが私を救うことができますか? 明日までにアプリを提出する必要があります。
こんにちは!
この質問をしてくれてありがとう! のこぎりを使った支援のお願いは無回答ではありません!
ただし、この問題は解決されており、NokogiriのGithubの問題は、バグの報告やパッチの送信のために予約されています。 メーリングリストで質問すると、チームノコギリは誰かがタイムリーに答えを提供することを約束します。
このポリシーに関するチームノコギリの論理的根拠を知りたい場合は、 http://bit.ly/nokohelpにアクセスしてください。
何卒ご理解賜りますようお願い申し上げます。 そして、のこぎりをご利用いただきありがとうございます。
brax4444、どうもありがとうございました。pggemのインストールに関する同様の問題を解決するのに役立ちました。
http://nokogiri.org/tutorials/installing_nokogiri.htmlページの手順は、新しいバージョン(現在、2.9.0のlibxml2と1.1.28のlibxslt)をバンドルインストールしているため、古くなっています。
@ウィンストンズ
コメントありがとうございますが、この問題はかなり前からクローズされています。
nokogiriインストールドキュメントの更新がある場合は、プルリクエストを次の宛先に送信できます。
https://github.com/sparklemotion/nokogiri.org-tutorials
または、新しい問題で問題と解決策(バンドル担当者がlibxml2またはlibxsltをインストールしない... brew?またはmacポート?または...?)をより明確に述べることができます。可能な場合は対処します。独自に確認します。
のこぎりをご利用いただきありがとうございます!
@flavorjonesごめんなさい! フォークします。
Nokogiriを共同執筆していただきありがとうございます。
また、これを機能させるには、実際にXCodeをインストールする必要がありました。
コマンドライン開発者ツールをインストールする必要がありました。
@dentargおかげで、同じ問題が発生しました。Macを復元した後、コマンドライン開発者ツールがインストールされませんでした。
このコマンドで実行します'xcode-select--install'
https://github.com/Homebrew/homebrew-dupes/blob/master/libiconv.rbを使用してください
brewタブhomebrew/dupes
brew install libiconv
そして多分これ:
バンドル構成build.nokogiri--use-system-libraries
しかし、これがうまくいくかどうかはわかりません
@ brax4444に感謝します、あなたのアドバイスは私にも役立ちました!
ネイティブiconvを使用しました。 libxml2/libxsltをリンクする必要はありません。
brew install libxml2 libxslt
gem install nokogiri -- \
--with-xml2-lib=/usr/local/Cellar/libxml2/2.7.8/lib \
--with-xslt-dir=/usr/local/Cellar/libxslt/1.1.26 \
--with-iconv-lib=/usr/lib \
--with-iconv-include=/usr/local/include
@patrickserenoに感謝します。
バンドル構成build.nokogiri--use-system-libraries
これは私のために働いた
ありがとう、brax4444! その1行(gccリンク)も私のためにそれを行いました!
更新された手順を参照してください: https ://github.com/sparklemotion/nokogiri/issues/442#issuecomment -53793550
注:これらすべての投稿を1つずつ確認してすべてを試している場合は、間違っています。 'brew link'へのアドバイス(それらの投稿を含む)はすべて悪いアドバイスです。 「--use-system-libraries」へのアドバイスもすべて悪いアドバイスです。 STAAAHHHHP。 最後までスキップします。
私はこれが私のために働いたと信じています:
brew tap homebrew/dupes
brew install libiconv
brew link libiconv --force
gem install nokogiri -v 1.6.3.1 -- --with-iconv-dir=/usr/local
ここで重要な点は、libiconvを/ usr / local/includeに「brewlink」する必要があるということです。 'dupes'タップを使用すると、システムライブラリをオーバーライドすることに悩まされるので、 --force
する必要があります。 次に、nokogiriに/usr/local
を検索して、ビルド時に埋め込みlibxml2に渡すiconvパスを探すように指示する必要があります。 --use-system-libraries
を使用することにより、人々が行っていることは、このライブラリを内部libxml2ビルドに渡すためにこのライブラリを見つける必要性を回避することです。
これを修正する1つの方法は、homebrewにlibiconvのpkg-config構成を追加させることです。それ以降、nokogiriextconf.rbがそれを見つけることができます。
別の方法は、ここで検索パスとして/usr/local/include
をハードコーディングすることです。
私はrubyのmkmfのパスから/usr/ local / includeを抽出する方法を理解しようとしましたが、その方法を理解できるかどうかを確認しました。 mkmfの間接参照のレイヤーが深すぎます。 mkmfのfind_header()メソッドは確かにiconv.hを見つけることができますが、それがどのパスで見つかるかについての情報を抽出する方法がわかりません。これは、実際には、でヘッダーファイルを見つけるためのnokogiriの正しい修正です。 mkmfがヘッダーファイルを見つけるのと同じ方法です。
nokogiriが/usr/ local / includeで、外部のpkg-configを必要とせずに単純なヘッダーファイルを見つけることができないという事実は壊れているようです。 パスのハードコーディングがいかに醜いかはわかりますが、find_headerがヘッダーを検索しているディレクトリをmkmfに尋ねる方法がわかりません...
また、dir_config()が2つのパスの配列ではなく':'で区切られたパスの配列を返す可能性があるというバグがあるようですが、この問題の修正には何の関係もないようです。
@ lamont-グランキストのすばらしい説明、タブをタップに変更するとさらに良い:-)
@ericbrooke lol、私は前のポスターからそれをコピーパスタしました...今修正されました...
私はこの投稿で言及されているすべてのコマンドを試しましたが、それでもこれに遭遇したと思います:
sudo 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-lib=/usr/lib --with-iconv-include=/usr/local/include/
Building native extensions with: '--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-lib=/usr/lib --with-iconv-include=/usr/local/include/'
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.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-lib=/usr/lib --with-iconv-include=/usr/local/include/
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
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.
iconv.h
が検出された理由はわかりませんが、 iconv_open()
$は検出されません(そのファイルで定義されています)。 最近誰かがまったく同じ問題に遭遇したのを見ました-http://stackoverflow.com/questions/24735534/nokogiri-install-fails-iconv-doesnt-work-osx
誰かがこの問題を見たことがありますか?
更新された手順を参照してください: https ://github.com/sparklemotion/nokogiri/issues/442#issuecomment -53793550
@Reinmarは私が提案したことを試していただけますか。 特に:
brew link libiconv --force
次に、 ls -la /usr/local/include/iconv.h
が存在することを検証しますls -la /usr/local/lib/libiconv.dylib
が存在することも検証しますgem install nokogiri -- --with-iconv-dir=/usr/local
homebrewの「Cellar」の奥深くにあるバージョン管理されたディレクトリに使用しているすべてのパスは、ひどくもろく、正しく機能していないことにそれほど驚いていません。
これらの手順http://nokogiri.org/tutorials/installing_nokogiri.htmlを使用したので、パスは似ています(バージョンが異なります)。
piotrus<strong i="7">@macus</strong> ~> brew link libiconv --force
Warning: Already linked: /usr/local/Cellar/libiconv/1.14
To relink: brew unlink libiconv && brew link libiconv
piotrus<strong i="8">@macus</strong> ~> ls -la /usr/local/include/iconv.h
lrwxr-xr-x 1 piotrus admin 39 Jul 29 19:47 /usr/local/include/iconv.h -> ../Cellar/libiconv/1.14/include/iconv.h
piotrus<strong i="9">@macus</strong> ~> ls -la /usr/local/lib/libiconv.dylib
lrwxr-xr-x 1 piotrus admin 42 Jul 29 19:47 /usr/local/lib/libiconv.dylib -> ../Cellar/libiconv/1.14/lib/libiconv.dylib
piotrus<strong i="10">@macus</strong> ~> gem install nokogiri -- --with-iconv-dir=/usr/local
ERROR: While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.
piotrus<strong i="11">@macus</strong> ~> sudo gem install nokogiri -- --with-iconv-dir=/usr/local
Password:
Building native extensions with: '--with-iconv-dir=/usr/local'
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-iconv-dir=/usr/local
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
たぶん私はRuby/gemを更新しようとします...:| しかし、それは盲目的な推測です。
わかりました... gem
を更新しても効果はありません。 次に、rvmをインストールした後(ただし、Rubyを2.0.0から2.1。*に更新する前)、ターミナルを再起動することにしました。誤ってiterm
から標準ターミナルに切り替えて、...nokogiriのインストールは以前は機能しなかった同じコマンド。 そのため、ターミナルを再起動する必要がありました(以前は、itermでmaanyタブを使用していましたが)、またはxtermが原因で問題が発生しました。 わかりませんが、誰かを助けるかもしれません。
@ lamont-granquistの回答に加えて、バンドルを使用して実行している場合は、gemのインストールをスキップできます。
bundle config build.nokogiri --use-system-libraries
bundle install
@ lamont-granquistの指示に従った後:
brew tap homebrew/dupes
brew install libiconv
brew link libiconv --force
gem install nokogiri -v 1.6.3.1 -- --with-iconv-dir=/usr/local
そして、 @ Reinmarと同じ問題に遭遇し、 StackOverflowで提案を見つけ、それをこのあたりの他の提案と組み合わせて、次の結果になりました。
NOKOGIRI_USE_SYSTEM_LIBRARIES=1 sudo gem install nokogiri -- --use-system-libraries --with-iconv-dir="$(brew --prefix libiconv)" --with-xml2-include=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/libxml2
それは最終的に私のために働きました、うまくいけばそれは@Reinmarを助けるでしょう。 それが機能する理由は私を超えています、_[ここでAppleの閉鎖生態系についての抑制されたコメント]_。 メソッドを共有していただきありがとうございます。
私は自家醸造を引き裂かなければならなかった、そしてすべての醸造はそれを最初から再インストールし、そしてそれはうまくいった
@doublerebel xcodeを再インストールするか、xcode-selectを使用する必要があると思います。 あなたがしたことはとにかくあらゆる種類の混乱です...
自作の現在のバージョンでは、@lamont-granquistが思いついたもののわずかに簡略化されたバージョンでやり遂げることができたようです:
brew tap homebrew/dupes
brew install libiconv
gem install nokogiri -v 1.6.3.1 -- --with-iconv-dir=/usr/local/opt/libiconv
いいえbrew link --force libiconv
..。
@jacobvosmaerは理にかなっていますが、それを使用するようにドキュメントを更新する必要があります。
(ただし、おそらく-v 1.6.3.1を削除します)
ドキュメントを更新しますが、他のコーディングに気を取られています...
この問題に丸一日取り組んだ後、上記の@doublerebelソリューションが最初に機能することを言及する価値があります
更新された手順を参照してください: https ://github.com/sparklemotion/nokogiri/issues/442#issuecomment -53793550
これは、Xcode5.1.1を使用しているユーザーに役立つ可能性があります。
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
更新された手順を参照してください: https ://github.com/sparklemotion/nokogiri/issues/442#issuecomment -53793550
また、Xcode 5.1.1がインストールされていること(および/または再インストール)を確認してから、 https ://developer.apple.com/downloads/にある「Xcodeのコマンドラインツール」を再インストールすることをお勧めします。
次に、次のことを行います。
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer
brew tap homebrew/dupes
brew uninstall libiconv
brew install libiconv
gem install nokogiri -- --with-iconv-dir=/usr/local/opt/libiconv
Mac OSXのアップデートと復元は、何らかの理由でXcodeと自作を台無しにしているようです。 また、/ usr / local / includeに強制的にリンクするよりも、/ usr / local / opt/libiconvにポイントする方が好きです。
@lamont-granquistソリューションをありがとう。 私は一つ一つを適用しました、そしてあなたのものは私のために最終的に働くものです。
「brewuninstalllibxml2libxslt」を実行してから、「sudo geminstallnokogiri」を実行すると修正されました
RVMを使用して新しいgemセットを作成するときは、次のことを行う必要がありました。
brew uninstall libiconv
brew install libiconv
gem install nokogiri -- --with-iconv-dir=/usr/local/opt/libiconv
@lamont-granquist修正してくれてありがとう。 私のために働いた。
@lamont-granquist@ ericbrookeありがとうございます。 それはそれを殺した。
編集:簡単な手順でも: https ://github.com/sparklemotion/nokogiri/issues/442#issuecomment -54091434
したがって、この回答のスタックオーバーフローの質問からの良い部分をマージします:
これを実行して、最新のXcodeおよびXcodeコマンドラインツールをインストールします(ダイアログボックスから[Get Xcode]を選択します)。
sudo xcode-select --install
次に、自作でlibiconvを更新します。
brew tap homebrew/dupes
brew update
brew uninstall libiconv
brew install libiconv
nokogiriインストールを実行します。
gem install nokogiri -- --with-iconv-dir=/usr/local/opt/libiconv
それは10.9+自作のすべての人のために働くはずです
^^^に関するフィードバックをお待ちしています
私のために働いた、ありがとう!
-クリス
2014年8月28日木曜日午後4時40分、lamont- granquistnotifications @ github.com
書きました:
^^^に関するフィードバックをお待ちしています
—
このメールに直接返信するか、GitHubで表示してください
https://github.com/sparklemotion/nokogiri/issues/442#issuecomment -53794057
。
好奇心から、 brew uninstall libiconv
は何のためにありますか? どういうわけか、すでにlibiconvがインストールされていることを意味しますか?
@knuはい、Mac OsXを使用していて、MacPortsではなくHomebrew経由でlibiconvをインストールしていることを意味します。 これらは両方ともパッケージマネージャーです。 brewがインストールされているかどうかわからない場合は、ターミナルにbrewと入力するだけで、次の応答が返されます。
Example usage:
brew [info | home | options ] [FORMULA...]
brew install FORMULA...
brew uninstall FORMULA...
brew search [foo]
brew list [FORMULA...]
brew update
brew upgrade [FORMULA...]
brew pin/unpin [FORMULA...]
Troubleshooting:
brew doctor
brew install -vd FORMULA
brew [--env | config]
Brewing:
brew create [URL [--no-fetch]]
brew edit [FORMULA...]
open https://github.com/Homebrew/homebrew/wiki/Formula-Cookbook
Further help:
man brew
brew home
あなたは自作がインストールされていることを知っています。
brew list
libiconvを含むインストールしたすべてのパッケージが表示されます
@ericbrookeつまり、 brew tap homebrew/dupes
#$の直後にbrew uninstall libiconv
を実行する意味がわかりませんでした。これは、標準のリポジトリにないため、重複をタップした後にのみlibiconvが検出される場合です。 自作のインストールが何らかの理由で壊れたときのように、念のためにありますか?
また、「dupes」にlibiconvが存在することからわかるように、iconvはOS X + Xcodeの一部であり、brewを介して追加する必要はありません。
私はHomebrewを使用していませんが、Homebrewは/ usr / {include、lib}の下にあるものに触れてはいけませんね。 または、brewを介してlibiconvを再インストールすると、壊れたものを回復しようとしますか?
バニラマウンテンライオン+Xcode+コマンドラインツールがインストールされた新しいMacBookProでは、/ usr / include /iconv.hと/usr/lib/libconv.soが表示されるので、これらが不足している原因は何でしょうか。ファイルは可能性があります。
@lamont-グランキストありがとう。
私はあなたがリストしたことをしました。 私は許可の問題に遭遇しました:
/Library/Ruby/Gems/2.0.0ディレクトリへの書き込み権限がありません。
どうやら私はrvmを修正する必要があり、次の手順の後、rvmがインストールされ、バンドルのインストールプロセスを続行します。
rvm install 2.1.2
rvmは2.1.2を使用します
gem update --system
@knuええ、O / Sをアップグレードしたり、タイムマシンから復元したりするたびに、自作が台無しになり、すべてを再インストールする必要があります。 これらの指示は、可能な限り悲観的です。 誰かが正常なクリーンなxcodeをインストールしていて、libiconvがhomebrewに正しくインストールされている場合は、最後のgeminstallコマンドで十分です。
したがって、/ usr / local / include /iconv.hはiconv_openをlibiconv_openに#defineし、何らかの理由でclangは/ usr/includeよりも/usr/ local/includeにある自作ヘッダーファイルを取得してリンクを試みます。 /usr/lib/libiconv.dylibに対して。 秘訣は、libiconvを強制的にリンクすることによって作成されたiconv.hヘッダーファイルを削除することです。
TL; DR:この問題(私のものを含む)を「修正」する方法に関する事前の指示は、すべてを悪化させます。
したがって、Macのインストールを修復する方法に関する最新の手順は次のとおりです。
Xcodeとコマンドラインユーティリティが正しくインストールされていることを確認してください。 これにより、/ usr / include/iconv.hヘッダーファイルがない場合の問題が修正されます。 ダイアログボックスから[Xcodeを取得]を選択します。
sudo xcode-select --install
自作とlibiconvが古くなった場合(そして自作のlibiconvがずっと前にインストールされた場合)に更新することをお勧めします。 これはおそらく完全にオプションです。これは、自作のlibiconvとはまったくリンクしないためです。
brew update
brew tap homebrew/dupes
brew uninstall libiconv
brew install libiconv
libiconvをリンクしないでください。これにより、システムlibiconvがオーバーライドされません(これにより、「そのような樽がない」場合は、他のエラーが発生し、おそらく戻って自作とlibiconvをアップグレードする必要があります):
brew unlink libiconv
nokogiriを構築する:
gem install nokogiri
@lamont-granquistどうもありがとうございました!!
@ lamont-granquist Dunnoなぜですか、しかしあなたの最後のコメントでは、 gem install nokogiri
は私にはうまくいきませんでした。
代わりに、次のようなすべての手順を実行した後:
brew update
brew tap homebrew/dupes
brew uninstall libiconv
brew install libiconv
brew unlink libiconv
gem install nokogiri -- --with-iconv-dir=/usr/local/opt/libiconv
は私のために働いた。
これが役立つ場合は、rvmを使用して10.9を使用しています。
@ lamont-granquistすばらしい調査をありがとう! 問題を再現して、これに対する「修正」を考えてみようと思います。
@SeanWangDevどこかに、最初に取得されて使用される別のiconv.hがあります。 HomebrewではなくMacPortsの可能性があります。
はい、そう思います。 に1つあります
/usr/local/Cellar/libiconv/1.14/include/iconv.h
もう1つ
/usr/include/iconv.h
後者は前のバージョンです。
ありがとう@lamont-granquist
/usr/include/iconv.hは問題ありません。これはXcodeの一部であり、前者は自作のものであり、「セラー」に隠されています。これも問題ありません。 / opt / local / includeなどに何もない場合、/ usr / lib / libiconv.dylibが何らかの形で破損していると思いますか?
@lamont-granquistこれは私の深さから少し外れています。 libiconv.dylibが破損していることをどうやって知ることができますか?
ls -al /usr/lib/libiconv*
を実行すると、結果は次のようになります
xxxx 1 xxx xxx 16 10 5 2013 /usr/lib/libiconv.2.4.0.dylib -> libiconv.2.dylib
xxxx 1 xxx xxx 2088992 10 5 2013 /usr/lib/libiconv.2.dylib
xxxx 1 xxx xxx 20 10 5 2013 /usr/lib/libiconv.dylib -> libiconv.2.4.0.dylib
ええ、それはうまく見えます、これは私のものです:
% ls -al /usr/lib/libiconv*
lrwxr-xr-x 1 root wheel 16 Feb 26 2014 /usr/lib/libiconv.2.4.0.dylib@ -> libiconv.2.dylib
-r-xr-xr-x 1 root wheel 2088992 Feb 26 2014 /usr/lib/libiconv.2.dylib*
lrwxr-xr-x 1 root wheel 20 Feb 26 2014 /usr/lib/libiconv.dylib@ -> libiconv.2.4.0.dylib
/opt/local/lib/libiconv.dylib
または/opt/local/include/iconv.h
どうですか? これらのいずれかが問題を引き起こす可能性があります。
@ lamont-granquist
いいえ、/opt/ディレクトリがありません。 これらは私たちが探しているものですか?
-r--r--r--+ 1 User admin 1052128 9 4 11:30 /usr/local/Cellar/libiconv/1.14/lib/libiconv.2.dylib
-rw-r--r--+ 1 User admin 1658 9 4 11:22 /usr/local/Library/Taps/homebrew/homebrew-dupes/libiconv.rb
-r-xr-xr-x 1 root wheel 2088992 10 5 2013 /usr/lib/libiconv.2.dylib
iconv.hファイルは次の2つだけです。
/usr/local/Cellar/libiconv/1.14/include/iconv.h
/usr/include/iconv.h
いいえ、それはすべてクールです。 私が見る限り、他の引数なしで「geminstallnokogiri」を実行できるはずです。
gem install nokogiri -v 1.6.3.1 -- --with-iconv-dir=/usr/local
が私にとってうまく機能したことを追加したかっただけです。 バンドラーを使用するとき、私はbundle config build.nokogiril --with-iconv-dir=/usr/local
をしなければなりませんでした
@ lamont-granquistはい、 gem install nokogiri
は現在正常に動作しています。 しかし、この条件は異なります。 今回のnokogiriは、以前に'gem install nokogiri --- with-iconv-dir = / usr / local / opt/libiconv'によって既にインストールされています。 以前、nokogiriをインストールしていなかった場合、「geminstallnokogiri」は機能しません。
'gem install nokogiri --- with-iconv-dir = / usr / local / opt / libiconv'を実行すると、ファイルが変更されたり、 libiconv.dylib
やiconv.h
などのファイルが追加されたりする可能性はありますか?
@SeanWangDev :+1:
OSX10.9.4マーベリックス。
みんな助けてください。 私は上記のすべての方法を試しました。 それらのどれも私のために働いていません。 引数あり/なしでgeminstallnokogiriをスタックしましたが、まだエラーが発生します:
$ gem install nokogiri
ネイティブ拡張機能の構築。 これにはしばらく時間がかかる場合があります...
パッケージ化されたライブラリを使用してnokogiriを構築します。
エラー:nokogiriのインストール中にエラーが発生しました:
エラー:gemネイティブ拡張のビルドに失敗しました。
/usr/local/rvm/rubies/ruby-2.0.0-p353/bin/ruby extconf.rb
パッケージ化されたライブラリを使用してnokogiriを構築します。
iconv.hをチェックしています... *extconf.rbが失敗しました*
何らかの理由でMakefileを作成できませんでした。おそらく、必要性が不足しています。
ライブラリおよび/またはヘッダー。 詳細については、mkmf.logファイルを確認してください。 してもいいです
構成オプションが必要です。
提供される構成オプション:
--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 = / usr / local / rvm / rubies / ruby-2.0.0-p353 / bin / ruby
- ヘルプ
- 綺麗
--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
/usr/local/rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/mkmf.rb:434:in try_do': The compiler failed to generate an executable file. (RuntimeError)
You have to install development tools first.
from /usr/local/rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/mkmf.rb:565:in
try_cpp '
/usr/local/rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/mkmf.rb:1044:in block in have_header'
from /usr/local/rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/mkmf.rb:895:in
ブロックのchecking_for '
/usr/local/rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/mkmf.rb:340:in block (2 levels) in postpone'
from /usr/local/rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/mkmf.rb:310:in
open '
/usr/local/rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/mkmf.rb:340:in block in postpone'
from /usr/local/rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/mkmf.rb:310:in
open '
postpone'
from /usr/local/rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/mkmf.rb:894:in
'から
/usr/local/rvm/rubies/ruby-2.0.0-p353/lib/ruby/2.0.0/mkmf.rb:1043:in have_header'
from extconf.rb:103:in
have_iconv? '
extconf.rb:148:in block (2 levels) in iconv_prefix'
from extconf.rb:90:in
preserving_globals '
extconf.rb:143から:in block in iconv_prefix'
from extconf.rb:120:in
each_iconv_idir '
extconf.rb:137:in iconv_prefix'
from extconf.rb:428:in
ブロックから
extconf.rb:161から: block in process_recipe'
from extconf.rb:154:in
タップで '
extconf.rb:154から: process_recipe'
from extconf.rb:423:in
Gemファイルは、検査のために/usr/local/rvm/gems/ruby-2.0.0-p353/gems/nokogiri-1.6.3.1にインストールされたままになります。
結果は/usr/local/rvm/gems/ruby-2.0.0-p353/gems/nokogiri-1.6.3.1/ext/nokogiri/gem_make.outに記録されました
これらのファイルがあることを確認します。
% ls -la /usr/include/iconv.h
-rw-r--r-- 1 root wheel 7981 Jul 29 15:32 /usr/include/iconv.h
% ls -la /usr/lib/libiconv.*
lrwxr-xr-x 1 root wheel 16 Feb 26 2014 /usr/lib/libiconv.2.4.0.dylib@ -> libiconv.2.dylib
-r-xr-xr-x 1 root wheel 2088992 Feb 26 2014 /usr/lib/libiconv.2.dylib*
lrwxr-xr-x 1 root wheel 20 Feb 26 2014 /usr/lib/libiconv.dylib@ -> libiconv.2.4.0.dylib
そうでない場合は、 sudo xcode-select --install
を使用するか、アップルデベロッパダウンロードサイトにアクセスして、xcodeおよびxcodeコマンドラインユーティリティを手動でアンインストールして再インストールし、それらのファイルがインストールされるようにします。
次に、自作を使用する場合は、自作とunlink
を更新します。
brew update
brew tap homebrew/dupes
brew uninstall libiconv
brew unlink libiconv
brew install libiconv
/usr/local/include/iconv.hがないことを確認します。
% ls -la /usr/local/include/iconv.h
ls: /usr/local/include/iconv.h: No such file or directory
また、/ opt / local / include/iconv.hがないことを検証します
% ls -la /opt/local/include/iconv.h
ls: /opt/local/include/iconv.h: No such file or directory
そのファイルがある場合は、macportsからiconvがインストールされています。理想的には、これを取り除くことができます。
次に試してください:
gem install nokogiri
gem install nokogiri -- --with-iconv-dir=/usr
gem install nokogiri -- --with-iconv-dir=/usr/local/opt/libiconv
gem install nokogiri -- --with-iconv-dir=/opt/local
(機能するものが見つかったら停止します)
他のすべてが失敗した場合:
brew link --force libiconv
gem install nokogiri -- --with-iconv-dir=/usr/local
そこにある何かが機能するはずです。
@ lamont-granquist:+1:
@ lamont-granquistご指導ありがとうございます。何が起こっているのかを把握し、修正作業を開始しました。 ただし、どのMacでも問題を再現できないため、修正が機能するかどうかを確認する方法はありません。 複製の手順を教えていただけますか?
ええと、私はこのMBPを3年間持っていて、2つのOSアップグレードと少なくとも3つのTM復元の後、私の/usr/include/iconv.hはどういうわけか消えていました。 そのため、そのファイルを削除すると問題が発生する可能性があります。 解決策は、xcodeとコマンドラインツールを正しく再インストールすることです。
また、これをデバッグする際に人々が提案することの1つは、「brew link libiconv --force」を実行して、/ usr / local / include/iconv.hにインストールされるようにすることです。 'および'brewlinklibiconv'これは悪い考えです。 問題は、システム/usr/lib/libiconv.dylibを取得しているときにそのiconv.hを取得でき、iconv_open()とlibiconv_open()ですぐに競合が発生し、それらが異なるためにコンパイルに失敗することです。バージョン。
そのような場合に修正するものがあるかどうかはわかりません。 問題は、実際にはオペレーティングシステムを操作し、より元の状態に戻す必要があることです。
私が理解していないことが1つあります。それは、nokogiriのビルドシステムがMacPortsにインストールされた/opt/local/include/iconv.hファイルを検出する理由です。 私はMacPortsを使用していないのでデバッグしていませんが、homebrewでiconv.hが/ usr / local/includeに直接リンクされている場合と同様の問題が発生します。 nokogiriにそれをやめさせることができれば、MacPortsからlibiconvをインストールしている人たちに役立つでしょう。
$ ls -la /usr/include/iconv.h
-rw-r--r--1ルートホイール79819月11日11:32/usr/include/iconv.h
ls -la /usr/lib/libiconv.*
lrwxr-xr-x1ルートホイール169月11日01:03/usr/lib/libiconv.2.4.0.dylib->libiconv.2.dylib
-r-xr-xr-x1ルートホイール20889929月11日01:02/usr/lib/libiconv.2.dylib
lrwxr-xr-x1ルートホイール209月11日01:03/usr/lib/libiconv.dylib->libiconv.2.4.0.dylib
醸造の更新
Homebrewを45e07c0eからe0dee399に更新しました。
==>更新された数式
android-ndk go lockrun pazpar2
apache-spark h2 mpd pktanon
ギアマンjuju-クイックスタートossp-uuid
$ brew tap homebrew / dupes
警告:すでにタップされています!
$brewアンインストールlibiconv
/usr/local/Cellar/libiconv/1.13.1..をアンインストールします。
エラー:アクセスが拒否されました-/usr/local/Cellar/libiconv/1.13.1/bin/iconv
そのステップでパーミッションエラーが発生します
/ usr/localの下にあるすべての権限を修正する必要があります
ログインが何であれ、ルートが/ usr/localの下に自作ファイルを所有しないようにpermsを修正する必要があります。
私のユーザー名は「lamont」で、 id
コマンドで見つけることができます。
% id -nu
lamont
パーマを修正するには、次のようにします。
% sudo chown -R lamont /usr/local
ただし、そのコマンドには細心の注意を払い、すべてのスペルが正しく、正しいユーザー名を取得していることを再確認する必要があります。
@ lamont-granquist Homebrewのlibiconvパッケージは、/usr/local/include/iconv.hを配置するときに/usr/local/lib/libiconv.dylibをインストールしませんか? 私が理解していないのは、/ usr / local / include / iconv.hがピックアップされた場合、リンク時に/usr/local/lib/libiconv.dylibがピックアップされない理由です。 通常、-I / usr / local / includeがCPPFLAGSにある場合、-L / usr / local/libはLDFLAGSにある必要があります。
環境の破損に関しては、OS Xに/usr/include/iconv.hがない場合、Nokogiriは少なくともコマンドラインツールの(再)インストールを提案できます。
brew unlink libiconv
エラー:そのような樽はありません:/ usr / local / Cellar / libiconv
メッセージを無視して次の手順に従いました。 失敗
@knuええ、私はそれを調べました、そして私はmkmf.rbの曲がりくねった迷路で迷子になったと思います。
@Ilovebarca rm -f /usr/local/include/iconv.h
が役立つかもしれません
@ lamont-granquist
いいえ、助けにはなりませんでした。 ところで、私を助けようとしてくれてありがとう。
それはクレイジーです、私はマックで新しく、私はそれを嫌い始めています:))
iconv検出プロセスにいくつかの変更を加え、OSXで/usr/include/iconv.hが欠落していないかどうかのチェックをextconf.rbに追加します。 これが進行中の作業です。テスターは大歓迎です。
私はgithubの問題、スタック交換、グーグルなどを経験してきましたが、これまでに機能したのは@lamont-granquistの提案だけです。 使用するセットアップ:
OSX 10.9.5
rbenv
どういうわけかOSX環境が壊れてしまい、気づかない人も多いと思います。 1つの問題はXcodeコマンドラインツールがないことであり、もう1つはHomebrewです。 nokogiriの次のリリースでは、ビルドに入る前にそのような破損を検出し、ユーザーに警告しようとします。
ご協力ありがとうございました!
@ lamont-granquistに感謝します。私はこの問題に一週間苦労してきましたが、ついにlibiconvを再インストールするというあなたの解決策が機能します...それは安心です!!!
@jomzはosx10.10で動作します。 ありがとう:+1:
xcode-select --install
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew doctor
brew install ruby
source /etc/profile
gem install nokogiri
これにより、rubyバージョン2.1.5p273とnokogiri1.6.4.1がインストールされました。 おそらく、homebrewとrubygemsを介してこれらのバージョンのインストールを強制することができます。
brew install libxml2 libxslt
gem install nokogiri -- --use-system-libraries
libxml2やlibxsltを再/インストールする必要があるかどうかはわかりませんが、これでうまくいきました。
これは、更新されたインストールチュートリアルでキャプチャされたと思います。
そうでない場合は、お知らせください。再開します。
チュートリアルリンクをありがとう! 「非標準のlibxml2/libxsltインストールの使用」で説明されているように、ファイルパスを指定したときに機能しました。 (OSX10.6.8の/usr/ binは、システムライブラリの非標準の場所と見なされているようです。)
ファイルパスを見つけるために、ターミナルコマンドwhich xml2-config
とwhich xslt-config
を使用しました。 たぶん、これを行うことを提案するためにチュートリアルを更新しますか?