この質問にはSOを中心にさまざまなバリエーションがありますが、いずれも私の問題を解決する答えを持っているようには見えません。
OSX Lion(10.7.3)を実行しています。最新のXCodeがインストールされます。
Postgresapp.comのPostgres.appパッケージを使用してPostgresをインストールしました。
しかし、pg gemをインストールしようとすると、失敗します。
$ gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_config
Building native extensions. This could take a while...
ERROR: Error installing pg:
ERROR: Failed to build gem native extension.
/Users/disaacs/.rvm/rubies/Ruby-1.9.3-p125/bin/Ruby extconf.rb --with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_config
Using config values from /Applications/Postgres.app/Contents/MacOS/bin/pg_config
checking for libpq-fe.h... *** 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
--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=/Users/disaacs/.rvm/rubies/Ruby-1.9.3-p125/bin/Ruby
--with-pg
--without-pg
--with-pg-dir
--without-pg-dir
--with-pg-include
--without-pg-include=${pg-dir}/include
--with-pg-lib
--without-pg-lib=${pg-dir}/lib
--with-pg-config
/Users/disaacs/.rvm/rubies/Ruby-1.9.3-p125/lib/Ruby/1.9.1/mkmf.rb:381:in `try_do': The compiler failed to generate an executable file. (RuntimeError)
You have to install development tools first.
from /Users/disaacs/.rvm/rubies/Ruby-1.9.3-p125/lib/Ruby/1.9.1/mkmf.rb:506:in `try_cpp'
from /Users/disaacs/.rvm/rubies/Ruby-1.9.3-p125/lib/Ruby/1.9.1/mkmf.rb:970:in `block in find_header'
from /Users/disaacs/.rvm/rubies/Ruby-1.9.3-p125/lib/Ruby/1.9.1/mkmf.rb:790:in `block in checking_for'
from /Users/disaacs/.rvm/rubies/Ruby-1.9.3-p125/lib/Ruby/1.9.1/mkmf.rb:284:in `block (2 levels) in postpone'
from /Users/disaacs/.rvm/rubies/Ruby-1.9.3-p125/lib/Ruby/1.9.1/mkmf.rb:254:in `open'
from /Users/disaacs/.rvm/rubies/Ruby-1.9.3-p125/lib/Ruby/1.9.1/mkmf.rb:284:in `block in postpone'
from /Users/disaacs/.rvm/rubies/Ruby-1.9.3-p125/lib/Ruby/1.9.1/mkmf.rb:254:in `open'
from /Users/disaacs/.rvm/rubies/Ruby-1.9.3-p125/lib/Ruby/1.9.1/mkmf.rb:280:in `postpone'
from /Users/disaacs/.rvm/rubies/Ruby-1.9.3-p125/lib/Ruby/1.9.1/mkmf.rb:789:in `checking_for'
from /Users/disaacs/.rvm/rubies/Ruby-1.9.3-p125/lib/Ruby/1.9.1/mkmf.rb:969:in `find_header'
from extconf.rb:40:in `<main>'
Gem files will remain installed in /Users/disaacs/.rvm/gems/Ruby-1.9.3-p125/gems/pg-0.13.2 for inspection.
Results logged to /Users/disaacs/.rvm/gems/Ruby-1.9.3-p125/gems/pg-0.13.2/ext/gem_make.out
/Applications/Postgres.app/Contents/MacOS/bin/pg_config
コマンドの出力は次のとおりです。
$ /Applications/Postgres.app/Contents/MacOS/bin/pg_config
BINDIR = /Applications/Postgres.app/Contents/MacOS/bin
DOCDIR = /Applications/Postgres.app/Contents/MacOS/share/doc
HTMLDIR = /Applications/Postgres.app/Contents/MacOS/share/doc
INCLUDEDIR = /Applications/Postgres.app/Contents/MacOS/include
PKGINCLUDEDIR = /Applications/Postgres.app/Contents/MacOS/include
INCLUDEDIR-SERVER = /Applications/Postgres.app/Contents/MacOS/include/server
LIBDIR = /Applications/Postgres.app/Contents/MacOS/lib
PKGLIBDIR = /Applications/Postgres.app/Contents/MacOS/lib
LOCALEDIR = /Applications/Postgres.app/Contents/MacOS/share/locale
MANDIR = /Applications/Postgres.app/Contents/MacOS/share/man
SHAREDIR = /Applications/Postgres.app/Contents/MacOS/share
SYSCONFDIR = /Applications/Postgres.app/Contents/MacOS/etc
PGXS = /Applications/Postgres.app/Contents/MacOS/lib/pgxs/src/makefiles/pgxs.mk
CONFIGURE = '--prefix=/Users/mattt/Code/heroku/Postgres/Postgres/Vendor/postgres' '--enable-thread-safety' '--with-openssl' '--with-gssapi' '--with-bonjour' '--with-krb5' '--with-libxml' '--with-libxslt' '--with-ossp-uuid' '--with-Perl' '--with-python'
CC = gcc
CPPFLAGS = -I/usr/include/libxml2
CFLAGS = -O2 -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wformat-security -fno-strict-aliasing -fwrapv
CFLAGS_SL =
LDFLAGS = -Wl,-dead_strip_dylibs
LDFLAGS_EX =
LDFLAGS_SL =
LIBS = -lpgport -lxslt -lxml2 -lssl -lcrypto -lgssapi_krb5 -lz -lreadline -lm
VERSION = PostgreSQL 9.1.3
CONFIGURE変数(他のコンピューターを参照しているようです-私にはmatttという名前のユーザーがいません)を除いて、これらの設定はすべて正しいように見えます。
Mkmf.logファイルの内容は次のとおりです。
"/usr/bin/gcc-4.2 -o conftest -I/Users/disaacs/.rvm/rubies/Ruby-1.9.3-p125/include/Ruby-1.9.1/x86_64-darwin10.8.0 -I/Users/disaacs/.rvm/rubies/Ruby-1.9.3-p125/include/Ruby-1.9.1/Ruby/backward -I/Users/disaacs/.rvm/rubies/Ruby-1.9.3-p125/include/Ruby-1.9.1 -I. -I/Users/disaacs/.rvm/usr/include -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -I/Applications/Postgres.app/Contents/MacOS/include -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wshorten-64-to-32 -Wimplicit-function-declaration -fno-common -pipe conftest.c -L. -L/Users/disaacs/.rvm/rubies/Ruby-1.9.3-p125/lib -L/Users/disaacs/.rvm/usr/lib -L. -L/usr/local/lib -L/Applications/Postgres.app/Contents/MacOS/lib -lruby.1.9.1 -lpthread -ldl -lobjc "
checked program was:
/* begin */
1: #include "Ruby.h"
2:
3: int main() {return 0;}
/* end */
任意の提案をいただければ幸いです。
私はextconf.rbファイルを見ました、そしていくつかのデバッグの後、私はそれがへの呼び出しであることがわかりました
find_header ('libpq-fe.h')
それは失敗しています。 libpq-fe.hが存在しないためではなく、find_header
メソッド自体が失敗しているためです。 irbを使用してfind_headerを実行しようとすると、同じエラーが発生しました。
$ irb
1.9.3-p125 :001 > require 'mkmf'
=> true
1.9.3-p125 :002 > find_header 'libpq-fe.h'
checking for libpq-fe.h... RuntimeError: The compiler failed to generate an executable file.
You have to install development tools first.
編集:
私のコンピューターは、思ったよりもさらに煩わしくなっているはずです。別のプロジェクトでバンドルインストールを行っていたところ、sqlite3 gemのインストールで非常によく似たエラーが発生しました。
checking for sqlite3.h... *** extconf.rb failed ***
私は過去にsqlite3 gemで問題を経験したことがありません。
やっと問題の原因が判明!どのようにしてこの問題が発生したのかはまだわかりませんが。
インストールコマンドが失敗したときに作成されるmkmf.logファイルの内容を確認します(元の投稿を参照)。次のコマンドを実行する試みをログに記録します
/usr/bin/gcc-4.2 ...and so on...
システムに/usr/bin/gcc-4.2
がありません。 gcc
があり、llvm-gcc-4.2
にシンボリックにリンクされています。私の解決策は別のシンボリックリンクを作成することでした
Sudo ln -s llvm-gcc-4.2 gcc-4.2
このリンクを作成した後、gem install pg
コマンドは問題なく動作しました。
この問題の解決策は、Frozen Canuckブログの投稿 Error Installing Ruby Gem with C Extension で見つかりました。バージョンの競合が原因で問題が発生する可能性があると推測しています。 XCodeの。原因が何であれ、私の永遠の感謝!
OS X Mavericksの場合
Sudo ln -s /usr/bin/llvm-gcc /usr/bin/gcc-4.2
動作します。
同様の問題がありました。 同様の問題 に対するbobfet1の回答に従って、私はgemをインストールすることができました:
Sudo env ARCHFLAGS="-Arch x86_64" gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_config
この男のおかげで: http://www.computersnyou.com/2025/
Mavericksでは次を使用します:xcode-select --install
(アプリストアからXcodeをインストールしたと想定)は機能します。
アプリストアからxcodeをインストールするだけでは不十分です。 xcodeのコマンドラインツールも必要です。 https://developer.Apple.com/library/ios/#documentation/DeveloperTools/Conceptual/WhatsNewXcode/Articles/xcode_4_3.html
アプリストアからxcodeをインストールした後、xcodeを開きます。 Xcode-> Open Developer Tool-> More Developer Toolsに移動し、最新のコマンドラインツールをダウンロードしてインストールします。
ターミナルウィンドウを開いて実行:Sudo gem install pg
Mavericks 10.9でも同様の問題があります-しかし、それはXcodeライセンス契約に同意しなかったことが原因でした。ブレッヒ。
Sudo xcodebuild
を実行して、ジャンクに同意します。すべてが期待どおりに動作します。
私もこの問題に遭遇しました。私にとっての答えは、すべてのRVMを更新することでした。
rvm get head
rvm install 1.9.2
私も、@ grilixによって提案された「Sudo ln -s /usr/bin/{llvm-,}gcc-4.2」の他に、Mountain Lionを利用しています。
Sudo ln -s /usr/bin/{llvm-,}g++-4.2
マーベリックスのアップグレード後...
Rubyバージョンを再インストールします。
rvm uninstall 1.9.2-p320
その後
rvm install 1.9.2-p320
またはあなたが持っているRubyのバージョンです。
$ gem install pg
それが失敗した場合:
$ Sudo gem install pg
次に、それが失敗した場合:
$ Sudo find / -name “pg_config”
pg_config
の場所を見つけたら、これを実行して最終的にインストールします。
$ Sudo gem install pg --with-pg-config=/usr/local/Cellar/postgresql/9.5.1/bin/pg_config
もちろん、pg_config
が見つかった場所にパスを変更する必要があります。
次に、gem list
を使用してインストール済みのgemを確認すると、次のように表示されます。
詳細は マイガイド にあります。
私はマウンテンライオンを利用しており、Dave Isaacsの承認された回答が役に立ちました。私もしなければなりませんでした
Sudo ln -s llvm-g++-4.2 g++-4.2
上記のようにRVM自体を更新するのではなく( https://stackoverflow.com/a/10430742/2807795 )、Ruby 2.0.0-成功せずに上記の他のすべての手順を試した後、トリックを行ったp247。
rvm get head
rvm install 2.0.0
出力に以下が含まれる場合:
/Users/disaacs/.rvm/rubies/Ruby-1.9.3-p125/lib/Ruby/1.9.1/mkmf.rb:381:in `try_do': \
The compiler failed to generate an executable file. (RuntimeError)
You have to install development tools first.
次に、コンパイル環境に何か問題があります。特に、失敗が最初のテストである場合、extconf.rb
実行します。
XCodeがインストールされている場合、おそらくXCodeのコマンドラインツールコンポーネントがインストールされていませんか?それらは 最近ではXCode本体から分割されています なので、個別にインストールする必要があります。