web-dev-qa-db-ja.com

pg gemのインストールに失敗すると、「mkmf.rbはRubyのヘッダーファイルを見つけることができません」(Mac OSX 10.6.5)

Rails 3にアップグレードしたところ、MacPorts、gem、データベースを少し混乱させて整理しました。すべてのgemを捨てて、新しくインストールしました。それ以外はすべて問題ないようです。 pggemの要件。

PostgreSQL用に準備された新しいRails 3プロジェクトを作成した後、サーバーは起動せず、pg gemがないことを訴えました。_bundle install_を実行すると、しばらくの間動きました。もちろん、pggemでは失敗します。

_Installing pg (0.10.0) with native extensions /Library/Ruby/Site/1.8/rubygems/installer.rb:483:in `build_extensions': ERROR: Failed to build gem native extension. (Gem::Installer::ExtensionBuildError)

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/Ruby extconf.rb 
mkmf.rb can't find header files for Ruby at /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/Ruby/ruby.h


Gem files will remain installed in /Library/Ruby/Gems/1.8/gems/pg-0.10.0 for inspection.
Results logged to /Library/Ruby/Gems/1.8/gems/pg-0.10.0/ext/gem_make.out
    from /Library/Ruby/Site/1.8/rubygems/installer.rb:446:in `each'
    from /Library/Ruby/Site/1.8/rubygems/installer.rb:446:in `build_extensions'
    from /Library/Ruby/Site/1.8/rubygems/installer.rb:198:in `install'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/source.rb:95:in `install'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/installer.rb:55:in `run'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/spec_set.rb:12:in `each'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/spec_set.rb:12:in `each'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/installer.rb:44:in `run'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/installer.rb:8:in `install'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/cli.rb:225:in `install'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/vendor/thor/task.rb:22:in `send'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/vendor/thor/task.rb:22:in `run'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/vendor/thor/invocation.rb:118:in `invoke_task'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/vendor/thor.rb:246:in `dispatch'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/vendor/thor/base.rb:389:in `start'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/bin/bundle:13
    from /usr/bin/bundle:19:in `load'
    from /usr/bin/bundle:19
_

フォーラムやブログで私が見つけた最も一般的な提案は、XCode開発者ツールを(再)インストールすることです。それらはすでにそこにありましたが、とにかくそれらを再インストールしました。上記より良い結果はありませんでした。

手がかりがあれば、_which Ruby_は_/usr/bin/Ruby_と言い、_Ruby -v_はRuby 1.8.7 (2009-06-12 patchlevel 174) [universal-darwin10.0]と言います。

ポインタは大歓迎です。これを理解するのに役立つ不足している情報があれば、喜んで迅速に提供します!


DVD版が壊れていると言われ、しばらくの間状況が良くなったので、XCodeをダウンロードしました。 _bundle install_は代わりに「アーチフラグ」について話し始めたので、私はこうしました:

_Sudo env ARCHFLAGS="-Arch i386" bundle install
_

そして、Rails barfedが始まるまで、物事はうまくいったようでした。

_/Library/Ruby/Gems/1.8/gems/pg-0.10.0/lib/pg_ext.bundle: dlopen(/Library/Ruby/Gems/1.8/gems/pg-0.10.0/lib/pg_ext.bundle, 9): no suitable image found.  Did find: (LoadError)
    /Library/Ruby/Gems/1.8/gems/pg-0.10.0/lib/pg_ext.bundle: mach-o, but wrong architecture - /Library/Ruby/Gems/1.8/gems/pg-0.10.0/lib/pg_ext.bundle
_

何かに取り組んで、アーチフラグを_bundle install_に設定して_-Arch x86_64_を試しましたが、うまくいきませんでした。

_*** Your PostgreSQL installation doesn't seem to have an architecture in common with the running Ruby interpreter ([] vs. ["x86_64"])
I'll continue anyway, but if it fails, try setting ARCHFLAGS.
[...]
Can't find the PostgreSQL client library (libpq)
*** extconf.rb failed ***
_

Libpqは、いくつかのフラグを介してパスを提供する必要があるものですか?それとも私は完全に昼食に出かけていますか?

21
npup

通常、Postgresのgemバンドルは、pg_configがどこに隠れているかを知りたいので、Postgresのインストールについて尋ねることができます。

locate pg_configを使用して、Macが隠れている場所を認識しているかどうかを確認します。

mappstack を使用してPostgresのコピーをインストールしたので、Macは次の場所にコピーがあると言っています。

/Applications/mappstack-1.2-3/postgresql/bin/pg_config

と別ので:

/Library/PostgreSQL/9.0/bin/pg_config

/Library/PostgreSQL/9.0にインストールしたことを覚えていないので、Snow Leopardによってプレインストールされている可能性があります。または、 のPostgresインストーラーを使用して、作業が多すぎる場合にインストールしました。 )EnterpriseDB

pg_configの場所を見つけたら、そのディレクトリをPATHの先頭に追加して、gemインストールを再実行してみてください。または使用:

export SQL_PATH=/Library/PostgreSQL/9.0
gem install pg -- --with-pg-config=$SQL_PATH/bin/pg_config

インストールしてみてください。これらの作業のいずれかが完了した場合。さもないと...

インストーラーが次に必要とするのはPostgresヘッダーへのアクセスなので、binディレクトリの親を調べて、includeディレクトリが見つかるかどうかを確認します。

その後、そのディレクトリでlibディレクトリを探します。これらの場所がわかれば、インストーラーを完了するために環境変数を設定するために必要なすべてが揃っているはずです。インストーラーのREADMEまたはINSTALLファイルを読んで、何を設定する必要があるかを確認する必要があります。構成します:

export include_dir=$SQL_PATH/include/
export     lib_dir=$SQL_PATH/lib/
gem install pg -- --with-pgsql-include-dir=$include_dir --with-pgsql-lib-dir=$lib_dir

うまくいけば、それがすべて役立つでしょう。私はRails 3で、mappstack PostgresとEnterpriseDBバージョンを使用してPostgresを正常に実行しているので、上記の情報でそこに到達するはずです。

11
the Tin Man

CentOS6.3にgemでRailsをインストールしようとしたときに、このエラーが発生しました。

少しグーグルした後、私は簡単な修正を見つけました:Ruby-develパッケージをインストールします。

Sudo yum install Ruby-devel

その後、すべてが正常に機能しました。

32
Yuta

これは、ソースコードからPostgreSQL9.0.1がインストールされたOSX10.6.6で機能しました。

export PATH=/usr/local/psql/bin:$PATH
export ARCHFLAGS='-Arch x86_64'
gem install pg

Postgresのインストール場所に一致するようにそのPATHを編集する必要があるでしょう。

10
Paul Cantrell

Macports経由でpostgres1.9.0をインストールしました。 OS X 10.5 PPC

これは私のために働いた:

gem install pg -- --with-pg-lib=/opt/local/lib/postgresql90 --with-pg-include=/opt/local/include/postgresql90

幸運を!

4
Josh

一般に、Postgresのgemバンドルは、pg_configが隠れている場所を知りたいと考えています。 。 。

そうです-これがトリックかもしれません。 PostgreSQLをインストールしてパスに追加し、古いシェルで「バンドルインストール」を実行した場合、pg_configを見つけることができません。その場合は、新しいシェルを入手して再試行してください。それ以外の場合は、上記の手順に従って検索し、バンドラーに表示してもらいます。

Postgresql83用のmacportsインストールは正常に動作し、Rails箱から出してすぐにうまく機能します-これは、別の方法です。

3
Steve

今夜これを機能させるのにかなりの時間を費やしました。私はこれと同様のエラーを見ました:

Can't find the PostgreSQL client library (libpq)
*** extconf.rb failed ***

さまざまなgemインストールのバリエーションを試しました:

gem install pg -- --with-pg-config=/Library/PostgreSQL/9.1/bin/ --with-pg-lib=/Library/PostgreSQL/9.1/lib/ --with-pg-include=/Library/PostgreSQL/9.1/include/

しかし、最終的に私のために働いたのは:

gem install pg -- --with-pg-dir=/Library/PostgreSQL/9.1/

また、その前にrvm(rvm get head)を更新し、再インストールしましたRuby(rvm --force install 1.9.2)。これが役に立ったかどうかはわかりませんが、試してみる価値があるかもしれません。あなたはまだ問題にぶつかる

3
Sean Bachelder

Postgresをインストールするために homebrew を試してみることをお勧めします(brew install postgres)および Ruby Version Manager インストールおよび保守用RubyおよびRuby gems。

デフォルトバージョン(OSXとともにインストール)はそのままで、柔軟性が向上します。たとえば、Rails 2または3with Rails 1.8.7および1.9.2を使用するRubyアプリを使用できます。すべて同じシステムに問題なくインストールされています。

2
markquezada

これは私のために働いた:

Sudo env ARCHFLAGS="-Arch x86_64" gem install pg
1
ethiyo

CentOS 6.6で以下を実行するまで、こことWebに関するすべての提案は私にとって不完全でした。

wget -c ftp://mirror.switch.ch/pool/4/mirror/scientificlinux/6.3/x86_64/updates/security/kernel-devel-2.6.32-504.1.3.el6.x86_64.rpm && Sudo yum install kernel-devel-2.6.32-504.1.3.el6.x86_64.rpm
wget -c ftp://mirror.switch.ch/pool/4/mirror/scientificlinux/6.6/x86_64/updates/security/kernel-headers-2.6.32-504.30.3.el6.x86_64.rpm && Sudo yum install kernel-headers-2.6.32-504.30.3.el6.x86_64.rpm
Sudo yum groupinstall "Development Tools" "Development Libraries" 
Sudo yum -y install gcc gcc-c++ git Ruby ruby-devel rubygems libvirt-devel mysql-devel postgresql-devel openssl-devel libxml2-devel sqlite-devel libxslt-devel zlib-devel readline-devel tar make automake autoconf curl-devel openssl-devel zlib-devel httpd-devel apr-devel apr-util-devel sqlite-devel Ruby193-Ruby-doc Ruby193-Ruby-devel Ruby193-build
curl -L get.rvm.io | bash -s stable && source $HOME/.rvm/scripts/rvm && rvm requirements
0
iammyr

Postgres.appをインストールします。

http://postgresapp.com/

インストールされているバージョンを確認します。

$ ls /Library/PostgreSQL/
# 9.4

SQL_PATHをエクスポートします:

export SQL_PATH=/Library/PostgreSQL/9.4

インストールpg

gem install pg -- --with-pg-config=$SQL_PATH/bin/pg_config
0
monteirobrena