pg gemをインストールしようとしたときに「libpq-fe.hヘッダーが見つかりません」


790

Ruby on Rails 3.1以前のバージョンを使用しています。PostgreSQLを使用したいのですが、pggemのインストールに問題があります。次のエラーが表示されます。

$ gem install pg
Building native extensions.  This could take a while...
ERROR:  Error installing pg:
    ERROR: Failed to build gem native extension.

        /home/u/.rvm/rubies/ruby-1.9.2-p0/bin/ruby 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=/home/u/.rvm/rubies/ruby-1.9.2-p0/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 /home/u/.rvm/gems/ruby-1.9.2-p0/gems/pg-0.11.0 for inspection.
Results logged to /home/u/.rvm/gems/ruby-1.9.2-p0/gems/pg-0.11.0/ext/gem_make.out

この問題を解決するにはどうすればよいですか?


pgがインストールされていることを証明できますか?
thenengah

回答:


1247

Ubuntuでは、ヘッダーがlibpq-devパッケージの一部であるように見えます(少なくとも次のUbuntuバージョンでは 11.04(Natty Narwhal)、10.04(Lucid Lynx)、11.10(Oneiric Ocelot)、12.04(Precise Pangolin)、14.04(Trusty Tahr))および18.04(Bionic Beaver)):

...
/usr/include/postgresql/libpq-fe.h
...

だからlibpq-dev、あなたのOSに対応するものをインストールしてみてください:

  • Ubuntu / Debianシステムの場合: sudo apt-get install libpq-dev
  • のRed Hat Linux(RHEL)システム:yum install postgresql-devel
  • Mac Homebrewの場合brew install postgresql
  • Mac MacPorts PostgreSQLの場合:gem install pg -- --with-pg-config=/opt/local/lib/postgresql[version number]/bin/pg_config
  • 以下のためのopenSUSEzypper in postgresql-devel
  • 以下のためのArchLinuxpacman -S postgresql-libs

1
ubuntu 11.04では動作しませんでしたdurrantm@castleLinux2011:~/Dropbox_not_syncd/webs/3/linker$ gem install libpq-dev ERROR: Could not find a valid gem 'libpq-dev' (>= 0) in any repository durrantm@castleLinux2011:~/Dropbox_not_syncd/webs/3/linker$
Michael Durrant '16年

1
その後、JavaScriptライブラリをインストールする必要がある場合... gem install 'execjs'およびgem install 'therubyracer'
Nick Woodhams

@TravisR:更新をありがとう、これをコミュニティウィキに変えて、誰でも簡単に最新の状態に保つことができるようにしました。
muが短すぎる

Ubuntu 12.10を使用していますが、libpq-devのインストール後にpg gemをインストールできません
vedarthk

2
回答を修正してapt-get install postgres-server-dev-{pg.version} 、Ubuntu 14.04のpostgresql 9.4では動作しないようにしてください。参照:stackoverflow.com/a/28837453/75194
Ryan Rauh

169

のMacOS(以前のMac OS XOS X)、使用自作の適切なヘッダをインストールするには:

brew install postgresql

そして実行中

gem install pg

うまくいくはずです。

または、全体をインストールする代わりに、「警告」セクションで説明されているように、正しいものをエクスポートpostgresqlできます。brew install libpqPATHPKG_CONFIG_PATH


5
Postgres.appも使用している場合、問題が発生しますか?
iconoclast 2014年

3
実行後、brew install postgressql私は実行ARCHFLAGS="-arch x86_64" gem install pgして問題なく動作します。
overallduka

5
または、brew install libpqxxMac OSXで実行するだけで十分です
Ricardo Saporta

4
@RicardoSaporta libpqxxpostgresql依存関係としてインストールされるため、基本的にはbrew install postgresql
Troggy

3
全体をインストールする代わりに、「警告」セクションで説明されているように、正しいものをエクスポートpostgresqlできます。brew install libpqPATHPKG_CONFIG_PATH
goetzc

118

私もやってgem install libpq-devみましたが、私はこのエラーを受け取りました:

Can't find the 'libpq-fe.h header
*** extconf.rb failed ***

しかし、私はsudo apt-get(Ruby on Railsでの使用を避けようとする)でのインストールが機能することを発見しました、すなわち

sudo apt-get install libpq-dev
# or
apt-get install postgres-server-dev-{pg.version}
# for postgresql 9.4 on Ubuntu 14.04

それから私はすることができました

gem install pg

問題なく。


3
そう、Ruby pg gemはUbuntu / Debian / ... libpq-devパッケージに付属する通常のPostgreSQL Cライブラリをラップしています。
muが短すぎる

46

別の方法でこれを解決できます。システムにライブラリが見つかりませんでした。したがって、PostgreSQLのメインWebサイトからアプリを使用してインストールしました。私の場合(OS X)/Library/PostgreSQL/9.1/include/インストールが終了すると、ファイルが見つかりました。すでにPostgreSQLがインストールされている場合は、システムによっては別の場所にファイルがある場合もあります。

gemのインストールに追加のパスを追加する方法に関するこのリンクのおかげで、次のコマンドを使用して、gemをlibにポイントできます

export CONFIGURE_ARGS="with-pg-include=/Library/PostgreSQL/9.1/include/"
gem install pg

その後、不足しているライブラリの場所を知っているため、機能します。パスをlibpq-fe.hの正しい場所に置き換えるだけです


2
デビッドの解決策は私のために働いた。libpq-fe.hを「/Applications/Postgres.app/Contents/Versions/9.3/include」まで追跡し、上記のパスを指定してエクスポートコマンドを使用し、その後に「gem install pg」とgemが正常にインストールされました。
ライアンスピアーズ

これをありがとう、私のために働いて、使用しました:export CONFIGURE_ARGS="with-pg-include=/usr/local/Cellar/postgresql/9.3.1/include/"
brookr '31

1
CentOS 6でPostgresql 9.3を使用して、pg_*スクリプトを$ PATHにシンボリックリンクすることでこれを解決しましたln -s /usr/pgsql-9.3/bin/p* /usr/local/binyum install http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-redhat93-9.3-1.noarch.rpm && yum install postgresql93 postgresql93-contrib postgresql93-server postgresql93-devel
Postgres

1
次のように書くこともできますgem install pg -- with-pg-include=/Library/PostgreSQL/9.1/include/
lfender6445

さらに良いのは、を使用することexport CONFIGURE_ARGS="with-pg-config=/path/to/postgres/bin/pg_config"です。pg_config実行可能ファイルは、すべての必要なコンパイラとリンカオプションを取得するために呼び出されます-あなた自身がそれらを見るためにそれを実行することができます。
スコジン

29

libpq-fe.hヘッダーが見つかりません

CentOS 7.0.1406で次のコマンドを実行して成功しました。

~ % psql --version # => psql (PostgreSQL) 9.4.1
yum install libpqxx-devel
gem install pg -- --with-pg-config=/usr/pgsql-9.4/bin/pg_config

または、常にpgこれらのオプションを使用してインストールするようにバンドルを構成できます(デプロイ環境でバンドルを実行するのに役立ちます)。

  • bundle config build.pg --with-pg-config=/usr/pgsql-9.4/bin/pg_config

1
とても助かります、ありがとう。バンドル構成に関するメモを追加するだけです...次のバンドルコマンドを実行するユーザーとしてログインして、このコマンドを実行する必要があります。bundler設定は〜/ .bundle / configに保存されるため、rootとしてログインしているときにbundle configを実行しても見つかりませんが、(例えばcapistranoを使用して)bundlerは 'deploy'ユーザーによって実行されています。
Les Nightingill

3
バンドル構成build.pg --with-pg-config = / usr / pgsql-9.4 / bin / pg_config Centos 7で私のためにiを解決する
liloargana

2
バンドル構成build.pg --with-pg-config = / usr / pgsql-10 / bin / pg_config( postgresql10を使用している場合)
Mahesh Neelakanta


17

参考までに:

PostgresAppを使用したOS XのRuby on Rails 4アプリケーション(この場合、0.17.1バージョンが必要-古いプロジェクトの一種):

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

1
素晴らしいPostgres.appを使用している場合はうまく機能します。Postgres 10では、パスを使用しました/Applications/Postgres.app/Contents/Versions/10/bin/pg_config
Master of Ducks

13

Mac OS Xでは、次のように実行します。

gem install pg -- --with-pg-config=***/path/to/pg_config***

***/path/to/pg_config*** pg_configへのパスです


1
賛成。EnterpriseDBのgrapihcalインストーラーを介してPostgresqlをインストールしました。それから私はでPG-config設定のパスを見つける必要がありsudo find / -name "pg_config"、次にやる、gem install pg -- --with-pg-config=/Library/PostgreSQL/9.4/bin/pg_config私はちょうど発見したパスを使用しました。
Yi Zeng 14

12

私の場合、それはパッケージでしたpostgresql-server-dev-8.4(私はUbuntu 11.04(Natty Narwhal)、64ビットを使用しています)。


10

Postgres.appを使用するMacユーザーにとって正しい答えlibpqは、そのパッケージで提供されているものに対してビルドすることです。たとえば、9.4リリース(このドキュメントの執筆時点で最新)の場合、必要なものは次のとおりです。

export CONFIGURE_ARGS="with-pg-include=/Applications/Postgres.app/Contents/Versions/9.4/include"
gem install pg

これにより、pggemはインストールしたPostgreSQLのバージョンと正確に同期します。この場合、Homebrewから何かをインストールするのは無駄です。


9

Amazon Linuxでも同じ問題が発生しました。ヘッダーは見つかりましたlibpq-fe.hが、どういうわけか機能しませんでした。

これは、マシンのさまざまなユーザーを介してインストールされたパッケージのさまざまなバージョンからのものです。PostgreSQL 9.2およびPostgreSQL 9.3がインストールされました。したがって、ライブラリを含める前に、PostgreSQLのバージョンを確認してください。

私にとって、魔法のコマンドラインは:

sudo yum install postgresql93 postgresql93-server postgresql93-libs postgresql93-contrib postgresql93-devel

出典:PostgreSQL 9.3、PostGIS 2.1、およびpgRoutingをYumでインストールするためのほとんど馬鹿なガイド


ライブラリをインストールした後...クリーンアップを行います:「make distclean」、「make clean」、「./ configure」、そしてコンパイルを開始します!
mzalazar 2017

8

Debianベースのディストリビューション(Ubuntuを含む)のより一般的な答えは次のとおりです。まず、apt-filerootとして実行しているパッケージをインストールします。

apt-get install apt-file

これにより、ファイルを含むパッケージを検索できます。次に、そのデータベースを使用して更新します

apt-file update

(これは通常のユーザーとして実行できます)。次に、次を使用して欠落しているヘッダーを探します。

apt-file search libpq-fe.h

私のマシンでは、これは次のようになります:

libpq-dev: /usr/include/postgresql/libpq-fe.h
postgres-xc-server-dev: /usr/include/postgres-xc/server/gtm/libpq-fe.h

よし!


「libpq-dev:/usr/include/postgresql/libpq-fe.h」は存在しますが、「postgres-xc-server-dev:/usr/include/postgres-xc/server/gtm/libpq-fe.h」は存在します現在ではない ?何が欠けていますか?
furiabhavesh 14

ファイルの内容が変更された可能性があります。これは、postgres -...パッケージにlibpq-fe.hのプライベートコピーがあったようです。いずれにせよ、libXXX-devは、物事をコンパイルしたい場合に探しているものです。
Vincent Fourmond 2014

7

PostgreSQLサーバーをインストールしないMacOSの場合:

brew install libpq
gem install pg -- --with-pg-config="/usr/local/Cellar/libpq/9.6.6/bin/pg_config"

5

Macでは、次のコードを使用して解決しました。

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

4

MacでPostgres.appを実行していて、

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

最初。その後

bundle install

私のために働いた。


4

Mac OSでも同じ問題が発生しましたが、ターミナルで次のコマンドを使用して簡単にPostgreSQL gemをインストールしました。

ARCHFLAGS="-arch x86_64" gem install pg

(最初にPostgreSQLをインストールしましたbrew install postgresql。)


4

私はこの答えを見つけました、そして私のために働いたのはそれだけでした(Mac OS)-約2日間調査した後:

$ sudo su

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

Building native extensions.  This could take a while...
Successfully installed pg-0.11.0
1 gem installed
Installing ri documentation for pg-0.11.0...
Installing RDoc documentation for pg-0.11.0...

Stack Overflowの質問PostgreSQLクライアントライブラリ(libpq)が見つかりませんを参照してください。


4

最近Mac OS X v10.10(Yosemite)にアップグレードしましたが、pg gemの。

報告されたエラーは典型的なものでした:

Using config values from /usr/local/bin/pg_config
checking for libpq-fe.h... *** extconf.rb failed ***

私のソリューションは、にしgem uninstall pgた後、bundle update pg最新の宝石を交換します。brew update; brew upgradeYosemiteのインストール後に実行して、以前にインストールしたパッケージの最新バージョンを取得しました。


4

Ubuntuでは、この問題を取り除くために「libpq-dev」をインストールします。

sudo apt-get install libpq-dev

sudo apt-get install postgresqllibpq-dev
それでも

3

CentOSでは、libpq-dev package以下のコマンドでインストールしました

yum install postgresql-devel

実行gem install pgすると " No pg_config... trying anyway. If building fails, please try again with --with-pg-config=/path/to/pg_config" と同じエラーが返されました。

以下のようにgemをインストールすると問題が解決しました

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

2

FreeBSD(9.1)では、必要なパッケージは/ usr / ports / database / postgresql-server *であり、これをインストールすると、必要なヘッダーファイルもインストールされ、「pg」のgemインストールが失敗します。ここでのこの回答は解決策を見つけるのに役立ちましたが、パッケージ名の違いにより少し検索が必要でした。

うまくいけば、これがFreeBSDシステムで「-dev」パッケージを検索するときに誰かが少し頭を悩ませるのを防ぐのに役立ちます!


2

のDebian 7.0、64ビット(Wheezyに)、単に実行します。

sudo apt-get install libpq-dev

libpq-devを正常にインストールしたら、次を実行します。

bundle install

2

CentOS 6.5(Squeeze)でファイルを作成しました:

$ sudo touch /etc/profile.d/psql.sh

内容:

pathmunge /usr/pgsql-9.3/bin

ここで、pg_configファイルを使用してPostgreSQLパスを設定する必要があることに注意してください。次のコマンドで確認できます。

$ sudo find / -iname pg_config

ファイルを保存します。

$ sudo chmod +x /etc/profile.d/ruby.sh

コマンドをもう一度実行してみてください。

注:Bash構成を変更するときはいつでも(profile.d構成を変更して)、Bashを再ロードする必要があります。


どのようにpostgresをインストールしましたか?pg_*スクリプトを次のようにパスにシンボリックリンクしましたln -s /usr/pgsql-9.3/bin/p* /usr/local/bin。その後は、追加のスクリプトや環境変数は必要ありませんでした。
JoePasq 2015年

2

の場所はlibpq-fe.h、PostgreSQLのインストール場所によって異なります(インストール方法によって異なります)。locatehttp://en.wikipedia.org/wiki/Locate_%28Unix%29)を使用libpq-fe.hして、マシン上のファイルを検索します。存在する場合includeは、PostgreSQLインストールのディレクトリにあります。

$ locate libpq-fe.h
/Library/PostgreSQL/9.1/include/libpq-fe.h

bin含まれているディレクトリには、pg_config、と同じディレクトリになりますincludeディレクトリ。エラーが示すように、-with-pg-configオプションを使用してgemをインストールします。

$ gem install pg --with-pg-config="/Library/PostgreSQL/9.1/bin/pg_config"

updatedb使用したlocateことがない場合、またはPostgreSQLをインストールしてから更新していない場合は、実行する必要がある場合があります。


--前にせずに、--with-pg-config=...私はエラーを受け取ります:エラー:gemの実行中に...(OptionParser :: InvalidOption)無効なオプション:--with-pg-config = / usr / bin / pg_config)
Alexis Wilke

2

最終的にこの問題を解決しましたが、前述の方法は使用していません。

を使用してbrew install postgresql、すでにインストールされているがリンクされていないことがわかりました。

  1. PostgreSQLがインストールされている場所を見つけて削除します。

  2. そしてbrew install postgresqlまた

  3. brew link postgresql

  4. gem install pg


「brew link --force postgresql」は私にとってはうまくいきましたが、その前に 'export PATH = "/ usr/local/opt/postgresql@9.4/bin:$ PATH"'を実行する必要があります>> >>
//。bash_profile

2

私はOSXでこれを実行しました postgres@9.4

私の修正はこれでした:

CONFIGURE_ARGS="with-pg-include=/usr/local/opt/postgresql@9.4/include/" bundle install

2

Postgresql 9.6でこの問題が発生しました。私はそれを修正することができました:

brew upgrade postgresql@9.6
brew link postgresql@9.6 --force
gem install pg

2

asdfからインストールしたpostgresでも同じエラーが発生しました。pg-configソリューションが機能しませんでした。代わりに、ファイルを含むpostgresインクルードフォルダーを見つけて、--with-pg-includeフラグを指定してコマンドを実行する必要がありました。

gem install pg -- --with-pg-include=/<path>/.asdf/installs/postgres/<version>/include

1

以下のためAltLinuxのパッケージpostgresqlx.x-devel(私の場合postgresql9.5-devel)をインストールする必要があります。

apt-get install postgresql9.5-devel

yumを使用して特定のバージョンをインストールすることもできます
-yum

1

'postgresql-common'パッケージのインストールでこれを解決しました。このパッケージは、pg_configあなたが欠けていた可能性が高いバイナリを提供します。

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