UbuntuにPostgreSQLのpg gemをインストールする方法


292

Ruby用のPostgreSQLのpg gemをインストールしようとしています。

次のコマンドを発行しました。

gem install pg

RVMを使用してRuby 1.9.2をインストールしました。

上記のコマンドを実行すると、次のエラーが表示されます。

エラーは:

Building native extensions.  This could take a while...

ERROR:  Error installing pg:

ERROR: Failed to build gem native extension.

/home/User/.rvm/rubies/ruby-1.9.2-preview3/bin/ruby extconf.rb

checking for pg_config... yes
checking for libpq-fe.h... yes
checking for libpq/libpq-fs.h... yes
checking for PQconnectdb() in -lpq... no
checking for PQconnectdb() in -llibpq... no
checking for PQconnectdb() in -lms/libpq... no
Can't find the PostgreSQL client library (libpq)

*** 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/User/.rvm/rubies/ruby-1.9.2-preview3/bin/ruby
 --with-pg
 --without-pg
 --with-pg-config
 --without-pg-config
 --with-pg-dir
 --without-pg-dir
 --with-pg-include
 --without-pg-include=${pg-dir}/include
 --with-pg-lib
 --without-pg-lib=${pg-dir}/lib
 --enable-static-build
 --disable-static-build
 --with-pqlib
 --without-pqlib
 --with-libpqlib
 --without-libpqlib
 --with-ms/libpqlib
 --without-ms/libpqlib

Gem files will remain installed in /home/user/.rvm/gems/ruby-1.9.2-preview3/gems/pg-0.9.0 for inspection.

Results logged to /home/user/.rvm/gems/ruby-1.9.2-preview3/gems/pg-0.9.0/ext/gem_make.out

エラーが何なのかわかりません...


1
apt install postgresql-server-dev-allUbuntu 18.04の場合。
Richard Peck

回答:


678

PostgreSQLのヘッダーを含むpostgreSQL開発パッケージをインストールする必要があります

sudo apt-get install libpq-dev

私はあなたの提案に従ってそれをしました...次の取得アーカイブの0Bを取得する必要があります。解凍後、5378kBが解放されます。続けたいですか?[Y / n /?] Y拡張状態情報を書き込んでいます...完了(データベースを読み込んでいます... 166183ファイルとディレクトリが現在インストールされています。)bisonを削除しています... libnss3-devを削除しています... libnspr4-devを削除しています...削除していますlibqt4-core ... libqt4-testの削除... libsqlite3-devの削除... man-dbのトリガーの処理..
palani

3
私と同じようにUbuntuが本当にsudo apt-get install aptitude初めての人ですが、最初は本当に新しい使い方です:)
Haris Krajina

1
あらゆる組み合わせを試してみました。postgresとlibpqを再インストールした後でも。運が悪い..それでも同じ問題
Krishnaprasad Varma

5
Cent / RedHat風味のディストリビューションの場合、必要なパッケージは次のyum install postgresql-devel
とおり

1
Ubuntuのバージョンが原因で、これが一部の人に機能しない可能性があると感じています。13.04のPostgres 9.1を使用した場合、これは失敗します
Rebs

40

2日間読んでスラッシングし、他のメモで見つかった多くのことを試した後、次の1行は、いくつかのMaverickパッケージとRVM(ruby 1.9.2-p290、rvm 1.10.2 ruby​​gems)を組み合わせたUbuntu Lucid 10.04で私にとっての治療法でした1.8.15、レール3.0.1、postgres 8.4.10):

gem install pg  --   --with-pg-lib=/usr/lib   

結果:

Building native extensions.  This could take a while...  
Successfully installed pg-0.13.1  
1 gem installed  
Installing ri documentation for pg-0.13.1...  
Installing RDoc documentation for pg-0.13.1...  

{そう-ついに成功} !! !実行中のpg_configの出力には、Ubuntu / PostresqlインストールのLIBS変数に項目-lpqがないことに注意してください!!

そして、なぜ特定の場所でpqからpgに切り替えるのか-初心者に混乱する??

私がまだ理解していないのは-と--with(optionの二重セットですが、とにかく私の深さをはるかに超えています


2
'-'は、最初のコマンドのパラメーターを2番目のコマンドから分離するために一般的に使用されます。この場合、extmodの構成スクリプト
Timothy Meade

1
ありがとうございました。あなたの解決策は完璧でした。
シド

このソリューションを共有してくれてありがとう。一日これにこだわっていました。この投稿に出会えてよかった。
whizcreed 2012

30

私はUbuntu 12.10で次のコマンドを実行しています:

apt-get install libpq-dev

私を助けました-その後、gem install pg -v "0.14.1"を実行しました。



25

Ubuntuではこれは私にとってうまくいきます、あなたが助けてくれることを願っています:

sudo apt-get install libpq-dev

そして

gem install pg  --   --with-pg-lib=/usr/lib 

24

libpq-devをインストールしてもうまくいきませんでした。ビルド必須のインストールも必要でした

sudo apt-get install libpq-dev build-essential

16

Ubuntuユーザー向けのシンプルなソリューション...

最初にすべてのpostgresパッケージをアンインストールしてから、これらのコマンドを実行します...

sudo apt-get install postgresql
sudo apt-get install postgresql-client libpq5 libpq-dev

# for rvm (single user)
mv ~/.rvm/usr/lib ~/.rvm/usr/lib_rvm 

# for rvm (multi-user)
mv /usr/local/rvm/usr/lib /usr/local/rvm/usr/lib_rvm

gem install pg  --   --with-pg-lib=/usr/lib

次に、「バンドルインストール」を実行します。何もかも良くなるだろう。良い一日を過ごしてください!


1
すべてのpostgresパッケージを削除する方法に興味がある場合は、sudo apt-get remove --purge postgresql postgresql-9.3(またはお手持ちのpostgresのバージョン)を使用してください。
Tommyixi 2015

9

.RVMユーザーにとっては、より良いでしょう:

rvmsudo gem install pg -- --with-pg-lib=/usr/lib 

それは私のために働いた(私がjdupontバージョンを見た後)


7

libpq-devをインストールしても問題が解決しない場合は、OpenSSLのlibsslと友達のバージョンの競合が原因である可能性があります-/ usr / libのUbuntuシステムバージョン(libpqのビルド対象)と、$にインストールされている2番目のバージョンのRVM HOME / .rvm / usr / lib(または、システムインストールの場合は/ usr / local / rvm / usr / lib)。これを確認するには、一時的に$ HOME / .rvm / usr / libの名前を変更し、「gem install pg」が機能するかどうかを確認します。

この問題を解決するには、システムのOpenSSLライブラリを使用してrvmを再構築します(libssl。*およびlibcrypto。*をrvm / usr / lib dirから手動で削除する必要がある場合があります)。

rvm reinstall 1.9.3 --with-openssl-dir=/usr

これで、Ubunto 12.04で問題が解決しました。


この回答ありがとうございます!Ubuntuが新しいほど、またRubyビルドが古いほど、OpenSSLの不一致が発生する可能性が高くなります。
mikeycgto

これ以外は何もうまくいきませんでした!@ mike-blackwell、どうもありがとうございました。あなたが助けに来る前に、私はほとんど希望をあきらめていました。
varagrawal 2017


5

これにより、Ubuntu 12.04でのすべての提案が失敗した後の問題が解決されました。

rvmsudo gem install pg -v '0.12.2' -- --with-pg-lib=/usr/include/postgresql

私の解決策はほとんど同じでした。私はrbenvを使用していて、うまくいったのは次のとおりです。 `gem install pg---with-pg-lib = / usr / lib / postgresql / --with-pg-include = / usr / include / postgresql /`; バージョンを指定する必要はありませんでした。
Dan Tenenbaum

3

新しくインストールしたUbuntu 16.04でRailsプロジェクトをセットアップしようとしていました。バンドルの実行中に同じ問題が発生しました。ランニング

sudo apt-get install aptitude

に続く

sudo apt-get install libpq-dev

私のためにそれを解決しました。


3

このページのすべての回答を試しても問題が解決しない場合は、次のことが(ついに)機能しました。

sudo apt-get install libgmp3-dev
gem install pg

これは後でした、このページで言及されている他のすべて行っです。

postgresql 9.5.8
Ubuntu 16.10


これは、Ubuntu 18.04で必要なものでした
Weston Ganger、

1

私は同じ問題を抱えており、さまざまなバリエーションをたくさん試しました。何度か試した後、私はできるようになりましたsudo gem installが、それでもsudoなしでインストールするのに問題があります。
最後に私は決定を見つけました-rvmの再インストールは私を助けました。おそらくそれは誰か他の人の時間を節約することができます。


1

この問題の別の解決策は、Homebrew / linuxbrewを使用してPostgreSQLをインストールすることです。

brew install postgresql

習慣の問題として、私は必要がない限りsudoを使いたくありません。


HomebrewはMac専用です。
IIllIIll 2016年

2
Linuxフォークがあります。
echristopherson 2017

あなたは完全なPostgreSQLをインストールしたくない場合は、以下が私の仕事:brew install libpq && brew link libpq --force
アンドリュー

1

Redmineをインストールしようとしている人のために、私は逃した sudo apt-get install ruby-all-dev、上記のすべてを試し後た。

初期エラーmkmf.rb can't find header files for ruby at /usr/lib/ruby/include/ruby.hです。



0

別のオプションは、LinuxとmacOSで動作するHomebrewを使用して、サポートライブラリのみをインストールすることです。

brew install libpq

その後

brew link libpq --force

--forcepostgresの式と競合するため、オプションが必要です。)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.