web-dev-qa-db-ja.com

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

私はRuby on Rails 3.1以前のバージョンを使っています。私はPostgreSQLを使いたいのですが、問題はpg gemのインストールです。それは私に次のエラーを出します:

$ 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

どうやってこの問題を解決しますか?

698
demonchand

Ubuntuでは、headerは libpq-devパッケージの一部です (少なくとも以下のUbuntuバージョンでは: 11.04 (Natty Narwhal)、 10.04 (Lucid Lynx)、 11.10 (オネイリックオセロット)、 12.04 (プレシザンパンゴリン)、 14.04 (トラストタア)、および 18.04 (バイオニックビーバー):

...
/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の場合 自作brew install postgresql
  • Macの場合 MacPorts PostgreSQLの場合:gem install pg -- --with-pg-config=/opt/local/lib/postgresql[version number]/bin/pg_config
  • OpenSuse :の場合zypper in postgresql-devel
  • ArchLinux :の場合pacman -S postgresql-libs
1117
mu is too short

macOS (以前の Mac OS X および OS X )で、 Homebrew を使用して適切なヘッダーをインストールします。

brew install postgresql

そして実行中

gem install pg

うまくいくはずです。

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

146
iwasrobbed

私は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

問題なく。

115
Michael Durrant

私はこれを別の方法で解決することができました。自分のシステムにライブラリが見つかりませんでした。そのため、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の正しい場所に置き換えてください。

42
David Pelaez

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をインストールするようにbundlerを設定できます(デプロイ環境でbundlerを実行するのに役立ちます)。

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

CentOS 6.4の場合

yum install postgresql-devel
gem install pg

うまくいった!

23
Arivarasan L

記録のためだけに:

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
15
pablomarti

私の場合、それはパッケージpostgresql-server-dev-8.4です(私は Ubuntu 11.04 (Natty Narwhal)、64ビットです)。

12
Johann

Mac OS Xでは、次のように実行してください。

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

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

12
Jiemurat

Postgres.appをお使いのMacユーザーのための正しい答えは、そのパッケージで提供されているlibpqに対して構築することです。たとえば、9.4リリース(これを書いている時点での最新版)では、必要なものは次のとおりです。

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

これはあなたのpg gemをあなたがインストールしたPostgreSQLのバージョンと正確に同期させるでしょう。この場合、自作から何かをインストールするのは無駄です。

11
jelder

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を付けてインストールするための、ばかげたガイド

9
Fab V.

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

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

そこに行きます!

7

Macでは、私はこのコードを使用してそれを解決しました:

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

MacOS の場合PostgreSQLサーバをインストールせずに:

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

私はこの答えを見つけました、そしてそれは私のために働いた唯一のものでした(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...

スタックオーバーフローの質問を参照してください。PostgreSQLクライアントライブラリ(libpq)が見つかりません

4
Cynthia Sanchez

私はMac OSでも同じ問題を抱えていましたが、私はPostgreSQL gemを以下のものを端末で使うことで簡単にインストールしました。

ARCHFLAGS="-Arch x86_64" gem install pg

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

4
rassom

私は最近 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を最新のものに置き換えるためにgem uninstall pgそしてbundle update pgです。 Yosemiteのインストール後にbrew update; brew upgradeを実行して、以前にインストールしたパッケージの最新バージョンを入手しました。

4

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
3
user2086641

私はMac上でPostgres.appを実行しています

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

最初。それから

bundle install

私のために働いた。

3
joh-mue

Ubuntuでは、この問題を解決するために "libpq-dev"をインストールしてください。

Sudo apt-get install libpq-dev
2
Raju

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

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

コンテンツ付き:

pathmunge /usr/pgsql-9.3/bin

ここで注意してください、あなたはあなたのPostgreSQLパスをpg_configファイルで設定するべきです。これは以下のコマンドで見つけることができます。

$ Sudo find / -iname pg_config

ファイルを保存します。

$ Sudo chmod +x /etc/profile.d/Ruby.sh

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

注: Bash configurationを変更するときはいつでも - profile.d構成を変更するとき - Bashをリロードする必要があります。

2
lucianosousa

Debian 7.0、64ビット(Wheezy)、ただ実行する:

Sudo apt-get install libpq-dev

Libpq-devのインストールに成功したら、以下を実行してください。

bundle install
2
Eric Wu

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

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

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

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

updatedbを一度も使ったことがない場合や、PostgreSQLをインストールしてから更新していない場合は、locateを実行する必要があるかもしれません。

2
akbrown

OSXでbrewと[email protected]を実行しているときに、これを実行しました。

私の修正はこれでした:

CONFIGURE_ARGS="with-pg-include=/usr/local/opt/[email protected]/include/" bundle install
2
Nick

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

brew upgrade [email protected]
brew link [email protected] --force
gem install pg
2
mwalsher

私はついにこの問題を解決しましたが、前述の方法は使用しませんでした。

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

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

  2. それからもう一度brew install postgresql

  3. brew link postgresql

  4. gem install pg

2
Chile Yang

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

FreeBSDシステムで "-dev"パッケージを探すときに、ちょっとした頭の引っかき傷を避けるのに役立つことを願っています!

2
Claus Due

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

apt-get install postgresql9.5-devel

私は同様の問題を抱えていた、そしてこれは私のためにそれを修正しました:

gem install do_postgres -- --with-pgsql-server-dir=/Applications/Postgres.app/Contents/MacOS --with-pgsql-server-include=/Applications/Postgres.app/Contents/MacOS/include/server

ソース:

https://Gist.github.com/oisin/6562181

1
dunkles

OS X 10.9 (Mavericks)では、私はbrew-installed postgresqlしてから、私は自分のRubyをrvm reinstallしなければならなかった。今幸せだ :)

1
ether_joe

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

1
Fabrizio Regini

OS Xおよび MacPorts PostgreSQL用の-develパッケージはもう必要ありません。 pg gemをインストールすると、以下のように動作します。

~ > Sudo port install postgresql-devel
...
Error: postgresql-devel has been replaced by postgresql91; please install that port instead
~ > gem install pg -v '0.17.1' -- --with-pg-config=/opt/local/lib/postgresql95/bin/pg_config

この記事 も参照してください。

0
Jens

Asdfを使ってインストールしたpostgresで同じエラーが発生しました。 pg-configソリューションは私にはうまくいきませんでした。代わりに、ファイルを含むpostgresインクルードフォルダを見つけて、--with-pg-includeフラグを付けてコマンドを実行しなければなりませんでした。

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

Arch Linuxでは postgresql-libs をインストールする必要があります。

Sudo pacman -Syu postgresql-libs
0

Mac OS Xの場合は、 https://postgresapp.com/ をインストールして、コマンドラインセクションとRubyの手順に従ってください。

Sudo mkdir -p /etc/paths.d &&
echo /Applications/Postgres.app/Contents/Versions/latest/bin | Sudo tee /etc/paths.d/postgresapp

それから

Sudo ARCHFLAGS="-Arch x86_64" gem install pg

ステップ1)postgressがあなたのシステムにインストールされていることを確認してください(それが既にインストールされていて、あなたがあなたのマシン上でpostgressサーバーを実行できる場合はステップ(2)に移動

apt-get install postgresql postgresql-contrib (sol - fatal error: libpq-fe.h: No such file or directory)
Sudo apt-get install Ruby-dev (required to install postgress below)
Sudo gem install pg
Sudo service postgresql restart

ステップ2)c ++ファイルの中には、libpq-fe.hに直接アクセスしようとしているものが見つかりません。そのため、そのようなファイルをすべて手動で検索し、libpq-fe.hpostgresql/libpq-fe.hに置き換える必要があります。

すべてのdirおよびsubdir内のすべてのlibpq-fe.hを検索するためのコマンドはgrep -rnw ./ -e 'libpq-fe.h'です。

3)ステップ2で実行されたコマンドによってリストされたすべてのファイルに進み、手動でlibpq-fe.hpostgresql/libpq-fe.hに変更します。

0
sapy

Libpq-devをアンインストール(Sudo apt-get purge)して再インストールするだけでした。

0
vasilakisfil

Fedora 30の私のソリューション:

Sudo dnf install /usr/include/libpq-fe.h
0
Aarón Castro