私は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
どうやってこの問題を解決しますか?
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にインストールしてみてください。
Sudo apt-get install libpq-dev
yum install postgresql-devel
brew install postgresql
gem install pg -- --with-pg-config=/opt/local/lib/postgresql[version number]/bin/pg_config
zypper in postgresql-devel
pacman -S postgresql-libs
macOS (以前の Mac OS X および OS X )で、 Homebrew を使用して適切なヘッダーをインストールします。
brew install postgresql
そして実行中
gem install pg
うまくいくはずです。
あるいは、postgresql
全体をインストールする代わりに、brew install libpq
を実行して、「警告」セクションで説明されているように正しいPATH
とPKG_CONFIG_PATH
をエクスポートすることもできます。
私は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
問題なく。
私はこれを別の方法で解決することができました。自分のシステムにライブラリが見つかりませんでした。そのため、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の正しい場所に置き換えてください。
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
記録のためだけに:
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
私の場合、それはパッケージpostgresql-server-dev-8.4
です(私は Ubuntu 11.04 (Natty Narwhal)、64ビットです)。
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
これはあなたのpg
gemをあなたがインストールしたPostgreSQLのバージョンと正確に同期させるでしょう。この場合、自作から何かをインストールするのは無駄です。
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を付けてインストールするための、ばかげたガイド
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
そこに行きます!
Macでは、私はこのコードを使用してそれを解決しました:
gem install pg -v '0.18.4' -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.4/bin/pg_config
MacOS の場合PostgreSQLサーバをインストールせずに:
brew install libpq
gem install pg -- --with-pg-config="/usr/local/Cellar/libpq/9.6.6/bin/pg_config"
私はこの答えを見つけました、そしてそれは私のために働いた唯一のものでした(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 OSでも同じ問題を抱えていましたが、私はPostgreSQL gemを以下のものを端末で使うことで簡単にインストールしました。
ARCHFLAGS="-Arch x86_64" gem install pg
(私は最初にPostgreSQLをbrew install postgresql
でインストールしました。)
私は最近 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
を実行して、以前にインストールしたパッケージの最新バージョンを入手しました。
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
私はMac上でPostgres.appを実行しています
export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.4/bin
最初。それから
bundle install
私のために働いた。
Ubuntuでは、この問題を解決するために "libpq-dev"をインストールしてください。
Sudo apt-get install libpq-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 configurationを変更するときはいつでも - profile.d構成を変更するとき - Bashをリロードする必要があります。
Debian 7.0、64ビット(Wheezy)、ただ実行する:
Sudo apt-get install libpq-dev
Libpq-devのインストールに成功したら、以下を実行してください。
bundle install
libpq-fe.h
の場所は、PostgreSQLのインストール場所によって異なります(インストール方法によって異なります)。あなたのマシン上でlibpq-fe.h
ファイルを見つけるためにlocate
( http://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
を実行する必要があるかもしれません。
OSXでbrewと[email protected]
を実行しているときに、これを実行しました。
私の修正はこれでした:
CONFIGURE_ARGS="with-pg-include=/usr/local/opt/[email protected]/include/" bundle install
私はPostgresql 9.6でこの問題を抱えていました。私はそれを修正することができました:
brew upgrade [email protected]
brew link [email protected] --force
gem install pg
私はついにこの問題を解決しましたが、前述の方法は使用しませんでした。
brew install postgresql
を使用して、私はそれがすでにインストールされていたがリンクされていなかったことを知ります。
PostgreSQLがインストールされている場所を見つけて削除します。
それからもう一度brew install postgresql
、
brew link postgresql
gem install pg
FreeBSD(9.1)では、必要なパッケージは/ usr/ports/database/postgresql-server *です。これをインストールすると、必要なヘッダファイルもインストールされ、 "pg"のgemインストールが失敗します。この答えはここで私が解決策を見つけるのを助けましたが、パッケージ名の違いは少し検索を必要としました。
FreeBSDシステムで "-dev"パッケージを探すときに、ちょっとした頭の引っかき傷を避けるのに役立つことを願っています!
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
ソース:
OS X 10.9 (Mavericks)では、私はbrew-installed postgresql
してから、私は自分のRubyをrvm reinstall
しなければならなかった。今幸せだ :)
私は 'postgresql-common'パッケージをインストールすることでこれを解決しました。このパッケージはあなたが見逃していたものである可能性が最も高いpg_config
バイナリを提供します。
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
この記事 も参照してください。
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
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.h
をpostgresql/libpq-fe.h
に置き換える必要があります。
すべてのdirおよびsubdir内のすべてのlibpq-fe.h
を検索するためのコマンドはgrep -rnw ./ -e 'libpq-fe.h'
です。
3)ステップ2で実行されたコマンドによってリストされたすべてのファイルに進み、手動でlibpq-fe.h
をpostgresql/libpq-fe.h
に変更します。
Libpq-devをアンインストール(Sudo apt-get purge)して再インストールするだけでした。
Fedora 30の私のソリューション:
Sudo dnf install /usr/include/libpq-fe.h