pg gemをインストールできません


217

使ってみましたgem install pgが動かないようです。

gem install pg このエラーを与えます

Temporarily enhancing PATH to include DevKit...
Building native extensions.  This could take a while...
ERROR:  Error installing pg:
        ERROR: Failed to build gem native extension.

C:/Ruby/bin/ruby.exe extconf.rb
checking for pg_config... no
No pg_config... trying anyway. If building fails, please try again with
 --with-pg-config=/path/to/pg_config
checking for libpq-fe.h... no
Can't find the 'libpq-fe.h header
*** 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=C:/Ruby/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
        --without-pg-config
        --with-pg_config
        --without-pg_config


Gem files will remain installed in C:/Ruby/lib/ruby/gems/1.8/gems/pg-0.10.1 for
inspection.
Results logged to C:/Ruby/lib/ruby/gems/1.8/gems/pg-0.10.1/ext/gem_make.out

3
あなたはマックを使っているのであれば、このチュートリアルに従う:matthew.mceachen.us/blog/...
ノアW.スミス

1
@NatchiQリンク切れ?
0112

私の場合、エラーログlibpqが見つからなかったと言ったので、インストールしましたsudo apt install postgresql postgresql-contrib libpq-dev pgadmin3 -y
Raj

回答:



388

私はこの問題を抱えていました、これは私のために働きました:

postgresql-develパッケージをインストールします。これにより、pg_configが見つからないという問題が解決します。

sudo apt-get install libpq-dev

139
によって私のために働きましたapt-get install libpq-dev。ヒントをありがとう。
Ryanmt、2011

5
確認、pg gem Wikiホームページから:「Ubuntuでは、/ usr / bin / pg_configはlibpq-devパッケージによって提供されます。」
Mark Berry、

17
Macはどうですか?
Fivell

23
@Fivell答えはここまでですが、Homebrewがインストールされているbrew install postgresql場合は、必要なパッケージを入手できます。
Alex LaFroscia、2014

19
@Fivell brew install postgresqlはMacで試してみる
Mahattam

91

問題は宝石の依存関係なので、pgをインストールする前に、「libpq-dev」がインストールされていることを確認してください

Ubuntuシステム:

sudo apt-get install libpq-dev

RHELシステム:

yum install postgresql-devel

マック:

brew install postgresql


7
Macの答えは本当です。これは、マシンにPostgreSQLをインストールしていないためです。
Hoang Le

yum install postgresql-develCentos 7 では、 'pg' .gemをインストールするためのpg_configに関連するエラーを解決しました。ちなみに、私はリリースされたばかりのPostgreSQL 10を使用することを選択しました
Arthur

62

gem install pg -- --with-pg-config=/usr/pgsql-9.1/bin/pg_config


3
これは私を助けました(
Centos

14
OS Xで動作しましたが、/ Applications / Postgres.app / Contents / MacOS / bin / pg_configへのパスを使用しました(スタンドアロンのPostgres.appがあります)
Matt

10
gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.4/bin/pg_config Postgresアプリでヨセミテに
twmulloy

働いた。けれどもMacでは、前env ARCHFLAGS="-arch x86_64"は私にとってゲームチェンジャーでした。
Janusz Lenar 2016年

2
gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/latest/bin/pg_configはOSX 10.12で使用しました
Tim Krins、

37

@ウィンフィールドはそれを言った

pg gemには、バインドするpostgresqlクライアントライブラリが必要です。このエラーは通常、Postgresライブラリが見つからないことを意味します。それらをインストールしていないか--with-pg-dir=、gemインストールに渡す必要があるかもしれません。

それ以上に、あなたは--with-pg-config=それをインストールする必要があるだけです。

Macの場合

万が一、MacのWebサイトバンドルからpostgresもインストールした場合、次のような場所になります。 /Applications/Postgres.app/Contents/Versions/9.3/bin

したがって、gem installで渡すか、

gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config

それとも、あなたは適切にPATHを設定します。それは多すぎるかもしれないので、一時的にPATHを設定するには:

export PATH=%PATH:/Applications/Postgres.app/Contents/Versions/9.3/bin/

2
特定のバージョンの場合:gem install pg -v '0.17.1' -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config
Dan Sandland 2015年

latestPostgres.appコンテンツフォルダー内に呼び出されるsymlinkフォルダーがあり、9.3が出荷されなくなった場合に役立ちます。 gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/latest/bin/pg_config
Stephen Silber

24

postgresqlをインストールしていなかったので、

sudo apt-get install postgresql postgresql-server-dev-9.1

Ubuntu 12.04。

これで解決しました。


更新:

最新バージョンを使用:

sudo apt-get install postgresql-9.3 postgresql-server-dev-9.3

私のために問題を修正しましたが、(自作付き)Mac上で私は、このコマンドを実行する必要がありました:brew install postgresql
gMale

19

これは私の場合にはうまくいきました:

sudo apt-get install libpq-dev

私が使用した:

  • Ubuntu 14.04.2 LTS
  • Ruby 2.2.2
  • Rails 4.2.1

12

Postgres.appを使用している場合Macでを、この問題を次のように一度に解決できます。

最初にgem uninstall pg、次に~/.bash_profileまたは~/.zshrcファイルまたは同等のものを編集して追加します:

# PostgreSQL bin path
export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.4/bin

その後bundle installgem install pg両方が期待どおりに動作するはずです。


おかげで、それはbrewでインストールされたpostgreSQLを使用しても機能します#PostgreSQL bin path export PATH = $ PATH:/usr/local/Cellar/postgresql/9.5.0/bin/
Benoit

9
$ PATH=$PATH:/Library/PostgreSQL/9.1/bin sudo gem install pg

システムにインストールされているバージョンの9.1を置き換えます。


1
これはMacで私を助けました、誰でもデフォルトのパスが何であるか、そしてそれをどのように変更するのか知っていますか?
スティーブ

OS X Mavericで動作
Marek Kirejczyk


3

pg gemには、バインドするpostgresqlクライアントライブラリが必要です。このエラーは通常、Postgresライブラリが見つからないことを意味します。それらがインストールされていないか、-with-pg-dir =をgemインストールに渡す必要がある場合があります。



3

ARCHフラグと一緒に使用します。

sudo env ARCHFLAGS="-arch x86_64" gem install pg

これにより、同じ問題が解決されました。


2

私はLinux Mint(Maya)13でこの問題を抱えていましたが、postgresqlとpostgresql-serverをインストールすることで修正しました。

apt-get install postgresql-9.1 

sudo apt-get install postgresql-server-dev-9.1

2

実行しているOSに関係なく、のログファイルを見て、何を実行"Makefile"しているのかをブラインドインストールするのではなく、何が起こっているのかを確認します。

私の場合、MAC OSのログファイルは次のとおりです。

/Users/za/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/extensions/x86_64-darwin-15/2.3.0-static/pg-1.0.0/mkmf.log

ログには、次の理由でメイクファイルを作成できなかったことが示されています。

Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers

mkmf.log内に、ビルドを完了するために必要なライブラリが見つからなかったことがわかります。

checking for pg_config... no
Can't find the 'libpq-fe.h header
blah blah

を実行すると"brew install postgresql"、必要なすべてのライブラリがそこにあることがわかります。

za:myapp za$ cat /Users/za/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/extensions/x86_64-darwin-15/2.3.0-static/pg-1.0.0/mkmf.log | grep yes
find_executable: checking for pg_config... -------------------- yes
find_header: checking for libpq-fe.h... -------------------- yes
find_header: checking for libpq/libpq-fs.h... -------------------- yes
find_header: checking for pg_config_manual.h... -------------------- yes
have_library: checking for PQconnectdb() in -lpq... -------------------- yes
have_func: checking for PQsetSingleRowMode()... -------------------- yes
have_func: checking for PQconninfo()... -------------------- yes
have_func: checking for PQsslAttribute()... -------------------- yes
have_func: checking for PQencryptPasswordConn()... -------------------- yes
have_const: checking for PG_DIAG_TABLE_NAME in libpq-fe.h... -------------------- yes
have_header: checking for unistd.h... -------------------- yes
have_header: checking for inttypes.h... -------------------- yes
checking for C99 variable length arrays... -------------------- yes

2

私は何年もこのPGの厄介な問題を経験しています。私は助けるためにこの要旨を作成しました。

次のコマンドは常に私のために働きます。

# Substitute Postgres.app/Contents/Versions/9.5 with appropriate version number
sudo ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.5/bin/pg_config

gist:https : //gist.github.com/sharnie/5588340cf023fb177c8d


1

CentOS 5.8でこれを実行する必要がありました。bundle install特定のPGバージョンを使用するように強制できなかったため、実行すると問題が発生し続けました。

yum erase postgresql postgresql-devel依存関係の問題のため、私もできません(php、httpなどが削除されます)

ソリューション?$ PATHを一時的に変更して、デフォルトのpgsqlではなく更新pgsqlを優先します。

export PATH=/usr/pgsql-9.2/bin:$PATH
bundle install

基本的には、上記のコマンドを使用すると/usr/pgsql-9.2/bin/pg_config/usr/bin/pg_config


1

Rubyの代わりにjrubyを使用している場合、pg gemのインストール時に同様の問題が発生します。代わりに、アダプターをインストールする必要があります。

gem 'activerecord-jdbcpostgresql-adapter'


0

ここに行くだけに、pgバージョンがWin32プラットフォームをサポートしているかどうかを確認し、次のコマンドを使用してインストールします。

gem install pg -v 0.14.1 --platform = x86-mingw32

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