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





15 Answers

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

brew install postgresql

それから走って

gem install pg

うまくいくはずです。

occurred while installing

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

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




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




CentOS 6.4では、

yum install postgresql-devel
gem install pg

うまくいった!




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

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

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




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から何かをインストールするのは無駄です。




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

そこに行く!




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



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

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

最初。 その後、

bundle install

私のために働いた。




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

うまくいけば、これは誰かがFreeBSDシステム上で "-dev"パッケージを検索するときに頭を少し傷つけるのを避けるのに役立ちます。




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設定を変更する(profile.d設定を変更する)ときはいつでも、 Bashを再ロードする必要があります。




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

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

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

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

  3. brew link postgresql

  4. gem install pg




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

sudo apt-get install libpq-dev



私はこれを 'postgresql-common'パッケージをインストールすることで解決しました。 このパッケージはpg_configバイナリを提供しています。




OS X 10.9 (Mavericks)では、私はbrew-installed postgresqlrvm reinstall 。そして私はRubyをrvm reinstallするrvm reinstallがありました。 今幸せだ :)




Related