OS XへのPG Gemのインストール-ネイティブ拡張のビルドに失敗しました


183

他の多くの人がpg gemのインストールに問題を抱えているようです。他人のために提案された解決策のどれも私のために働いていません。

pg gemとpostgres.appをインストールしようとしました。pg gemはインストールされません。私が得る最初のエラーは:

pg(0.17.0)のインストール中にエラーが発生し、Bundlerは続行できません。gem install pg -v '0.17.0'バンドルする前に成功することを確認してください。

私のgemインストールをpgの構成にポイントすることに関するインストールアドバイスは、次のエラーメッセージ(このフォーラムの他の多くの人が遭遇したもの)で失敗します。

Failed to build native extensions... Results logged to /Users/melanie/.rvm/gems/ruby-1.9.3-p448/gems/pg-0.17.0/ext/gem_make.out

このログファイルを検索またはアクセスして、さらに手がかりを検索する方法がわかりません。

また、sudo apt-get installコマンドを使用しようとすると、エラーメッセージ(コマンドが見つかりません)が表示されます。私は過去6時間このフォーラムを精査し、pgが私のRailsプロジェクトで機能するように各アドバイスを試みました。

パスを変更する方法、具体的にはどのような変更が必要かについてのアドバイスが見つかりません。私which pg_configはファイルソースを返します。私はその設定を使用してpgをインストールするコマンドでそれを使用しました。それは失敗します。

これに悩んでいる人はたくさんいます。多くの回答が自作を示唆しています。他の問題が発生したため、削除する必要がありました。


1
ねえ、将来の助けとなるいくつかの質問:-あなたはMacを使っていますよね?自作で間違えたの?(ps、ご指摘のとおり、apt-getはUbuntu(およびそのDebianベースのいとこ)専用です)-どのpostgresバージョンをお持ちですか?psql -vシェルで実行してみてください。-どのRubyバージョンを実行していますか?1.9.3のように見えruby -vますが、何が得られますか?
rmosolgo 2013年

私のpsqlが/Applications/Postgres-1.app/Contents/MacOS/bin/psqlに追加されていることを追加する必要があります。出口; psql(9.3.0)ですが、どのpsqlが返すか:usr / bin / psql
Mel

こんにちは、これを見ていただきありがとうございます。私のpsqlはv 9.3.0、rubyはv 1.9.3
Mel

1
Postgres.appに対する@paninapressの回答を参照してください。それは私にとってはうまくいき、Postgresの別のインスタンスをインストールする必要はありません。
Jamon Holmgren 2014

回答:


442

OS X 10.9(Mavericks)をダウンロードするまで、私と同じエラーが発生しました。ため息、別のOSアップグレードの頭痛の種。

ここに私がそれを修正した方法があります(自作で):

  • Xcodeツールの別のビルドをインストールします(brew updateターミナルに入力すると、Xcodeビルドツールを更新するように求められます)
  • brew update
  • brew install postgresql

その後gem install pg私のために働いた。


7
Mavericksのアップグレードに続いて2日間の頭痛の種でRailsのdbを修正しようとしたところ、修正されました。
デボラ

4
これは私にとってもうまくいきました-Mavericksの新規インストールで。ありがとう!
marcamillion 2013

1
私の正気を救ってくれてありがとう!
ジム

1
まだ働いています。古いバージョンのアプリをサポートするために、プロジェクトはRuby 2.2.0上にありますが、すべて同じです。
TristanZimmerman、2015

1
1. brew update2. brew install postgresql3. gem install pg4.bundle install
kai_onthereal

223

Ubuntuを使用している場合は、次のlibファイルをインストールしてください

sudo apt-get install libpq-dev

その後

gem install pg

私のために働いた。


4
私も働いた。ubuntu 13.10を使用しています。
rafaelkin 2013年

4
正しく入力してください。ないlibpg-dev; そのQはPではありません!難しい方法を理解するのに10分かかりました。
tir38 2014年

1
Amazon Linuxの場合yum install postgres-devel
andrewtweber 14

1
Ubuntu 14で私のために働いた!!
18バイト

6
CentOSの場合yum install postgresql-devel
septerr 2014

49

OS X Mavericks(バージョン10.9)を使用しています

上記を実行すると、次のメッセージが表示されました。PostgreSQL9のビルドが失敗し、バージョン8.xがインストールされている場合。

そこで、次のコマンドを実行します。

ARCHFLAGS="-arch x86_64" gem install pg

これは私にとってうまくいきました、これが誰かを助けることを願っています:)


2
+1、私は他のものを試しましたが、最終的に私はこのソリューションでgemによってpgをインストールしました。
BMWの

1
+1、同様に、これは私にとっても解決策でした。私のpostgresqlはすでにbrewでインストールされています。ジョンに投稿してくれてありがとう。
Jason Hoekstra、2014

5
(何らかの理由で)ルートとしてインストールする場合はNB、sudoは行く前に、変数:sudo ARCHFLAGS="-arch x86_64" gem install pg
Noach Magedman

実は、私はこれは私が実行するたびに必要なbundle install、私は内側にそれを入れているので、~/.bash_profile:)輸出として
ジャック・

42

わかりました私にもこの問題があり(psqlはv 9.3.0で、rubyはv 2.1.2)、私のために働いた解決策はまずバンドル構成設定を設定することでした:

bundle config build.pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config

この答えはついに私がそれを理解するのに役立ちました:https : //stackoverflow.com/a/9235107/3546680


6
この方法は、postgres.appを使用する場合に推奨されます。自作を使用すると、ネイティブ拡張の問題を解決することがありますが、2つのPostgresのアプリケーションを有する(ポート割り当てのような)競合がでもSayanees'答えを参照してください作成しますstackoverflow.com/questions/19569031/...
Epigene

4
これは間違いなくPostgres.appの正しい答えです。
Jamon Holmgren 2014

Mojaveでうまく機能し、数分前に成功しました。
microspino

23

私は何時間もすべて試しましたが、次のようにして最終的に修正しました(私はOS X 10.9.4を使用しています):

  1. Xcodeコマンドラインツールをインストールする(Apple Developerサイト)
  2. brewアンインストールpostgresql
  3. brew install postgresql
  4. ARCHFLAGS = "-arch x86_64" gem install pg

ありがとうございました。ステップ4にsudoを使用しましたが、それは悪いことですか?どうすれば回避できますか?
Roy

@Roy-助けてくれてうれしい:)-大丈夫です、おそらくすべてのユーザーにインストールされると思うので、おそらくsudoの使用を避けたいですが、あなたがシステムで唯一のユーザーである場合は、おそらくそれほど大きな問題ではありません。
Ali Yazdani、

brew uninstall postgresqlそしてbrew install postgresqlOS X 10.10と10.11に必要な手順はありません。ただ、gem uninstall pg(およびすべてのバージョンを削除します)必ず行い、その後、bundleまたはgem install pgもう一度、およびネイティブ拡張は、このOS Xバージョン用の新しいコマンドラインツールを使用して再構築されます。
Olivier Lacan


6

同様に、Mavericksをインストールした後 bundle update、pg gemでエラーが発生しました。これは、本番環境でのみ使用され、ローカルでは使用されません。

Brewを使用してパッケージを管理し、postgresqlが既にインストールされていますが、それでも「no pg_config」エラーが発生しました。

修正はbrew uninstall postgresqlそれだけでしたbrew install postgresql。その後、すぐにうまく走ることができましたbundle update


6

私は「正しい」答えは次のようにを追加することによって、Postgres.appため、正しく最初のconfigure PATHになると考えている~/.profile.zshrcまたは~/.zprofileZSHを使用している場合):

export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/latest/bin

次に、ターミナルで新しいタブまたはウィンドウを開いて、pggemを次のようにインストールします。

ARCHFLAGS="-arch x86_64" gem install pg

ここに文書化:


5

/アプリケーションにPostgresがインストールされているOSXでは、次のコマンドを実行するだけです(バージョンに応じて0.209.4を変更してください)。

gem install pg -v '0.20' -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.4/bin/pg_config

あなたは持っているべきです:

'--with-pg-config = / Applications / Postgres.app / Contents / Versions / 9.4 / bin / pg_config'を使用してネイティブ拡張をビルドしています。これには時間がかかる場合があります... pg-0.20を正常にインストールしました。


引数が実際に提供される前にハイフン2を余分に使用しなければならなかった理由を説明できますか?
Akash Agarwal

3

私はこれに一日を費やしました、そしてここに私がそれを修正した方法があります:

build.pgのグローバル値が次のように設定されていることがわかりました。 /opt/local/lib/postgresql91/bin/pg_config ていることが。それはpostgresがインストールされた場所ではありませんでした。

私はそれをbuild.pgの値を置き換えることに修正しました: bundle config build.pg --with-pg-config=/usr/local/Cellar/postgresql/9.4.4/bin/pg_config これが私のpostgresqlインストールがある場所です。



0

解決しました!システム上にPostgreSQLのライブラリが不足していることがわかりました。たった2つのステップで解決しました。

brew install postgresql

次に実行します

gem install pg


0

使いたくない方にbrew

  1. PostgreSQLアプリケーションをダウンロードします。
  2. macOSのデフォルトの指示に従ってインストールします。
  3. 実行することをお勧めします PostgreSQl
  4. 走る gem install pg -- --with-pg-config= /パス/に/はpostgress /中/あなた/アプリケーション/フォルダ/ `
    • たとえば、私のマシンでは /Applications/Postgres.app/Contents/Versions/12/bin/pg_config
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.