ruby-on-rails an error - pg gemをインストールしようとすると 'libpq-fe.h'ヘッダが見つかりません
macOS (以前のMac OS XおよびOS X )では、 Homebrewを使用して適切なヘッダをインストールします。
brew install postgresql
それから走って
gem install pg
うまくいくはずです。
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の正しい場所に置き換えてください
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
を使って、私はそれが既にインストールされているが、リンクされていないことを知ります。
PostgreSQLがインストールされている場所を探して削除し、
次に、
brew install postgresql
再度brew install postgresql
し、brew link postgresql
gem install pg
Ubuntuでは、この問題を解決するために "libpq-dev"をインストールしてください。
sudo apt-get install libpq-dev
私はこれを 'postgresql-common'パッケージをインストールすることで解決しました。 このパッケージはpg_config
バイナリを提供しています。
OS X 10.9 (Mavericks)では、私はbrew-installed postgresql
をrvm reinstall
。そして私はRubyをrvm reinstall
するrvm reinstall
がありました。 今幸せだ :)