[ruby-on-rails] pg gemをインストールしようとすると 'libpq-fe.h'ヘッダが見つかりません



Answers

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

brew install postgresql

それから走って

gem install pg

うまくいくはずです。

Question

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

この問題をどうやって解決するのですか?




Postgres.appを使っているMacユーザーにとって正しい答えは、そのパッケージに付属しているlibpqに対して構築することです。 たとえば、9.4リリース(現在の執筆時点)では、必要なものは次のとおりです。

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

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




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

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

最初。 その後、

bundle install

私のために働いた。




私はこの答えを見つけました。それは私のために働いたのは唯一のものでした(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)が見つかりません




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

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



私は別の方法でこれを解決することができました。 私は自分のシステム上でライブラリを見つけられませんでした。 したがって私はPostgreSQLメイン・ウェブサイトのアプリケーションを使用してインストールしました。 私の場合(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の正しい場所に置き換えてください




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

apt-get install postgresql9.5-devel



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

そこに行く!




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

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



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

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

  1. PostgreSQLがインストールされている場所を探して削除し、

  2. 次に、 brew install postgresql再度brew install postgresqlし、

  3. brew link postgresql

  4. gem install pg




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




私も同様の問題を抱えていました。

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




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

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

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

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

locate使用したことがない場合、またはPostgreSQLのインストール後に更新していない場合は、 updatedbを実行する必要があることに注意してください。




CentOS 6.4では、

yum install postgresql-devel
gem install pg

うまくいった!




Debian 7.0、64-bit(Wheezy)では、以下を実行してください:

sudo apt-get install libpq-dev

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

bundle install



Related