web-dev-qa-db-ja.com

PostgreSQLクライアントライブラリ(libpq)が見つかりません

Mac OS X 10.6でRailsにPostgreSQLをインストールしようとしています。最初にMacPortsのインストールを試みましたが、うまくいかなかったので、ワンクリックでDMGをインストールしました。うまくいったようです。

PostgreSQL開発パッケージをインストールする必要があると思いますが、OS Xでそれを行う方法がわかりません。

Sudo gem install pgを実行しようとすると、次のようになります。

$ Sudo gem install pg
Building native extensions.  This could take a while...
ERROR:  Error installing pg:
    ERROR: Failed to build gem native extension.

        /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/Ruby extconf.rb
checking for pg_config... yes
Using config values from /Library/PostgreSQL/8.3/bin/pg_config
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=/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/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
    --with-pqlib
    --without-pqlib
    --with-libpqlib
    --without-libpqlib
    --with-ms/libpqlib
    --without-ms/libpqlib


Gem files will remain installed in /Library/Ruby/Gems/1.8/gems/pg-0.11.0 for inspection.
Results logged to /Library/Ruby/Gems/1.8/gems/pg-0.11.0/ext/gem_make.out
146
Jason Swett

解決策:PostgreSQLをHomebrewで再インストールしました。

18
Jason Swett
$ 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...

働いた!

346

私はここで最高の回答を試しました:

env ARCHFLAGS="-Arch x86_64" gem install pg

しかし、再度バンドルインストールを実行しようとすると、同じエラーが発生しました。次に、ARCHFLAGSを使用してバンドル全体をインストールしてみました。

ARCHFLAGS="-Arch x86_64" bundle install

私のために働いた!使用しているアーキテクチャに応じて、x86_64をi386に置き換えてください。

78
Christine Loh

EnterpiseDB .dmgを使用すると、この問題が発生していました。それがあなたが使用したのと同じだと思うなら、私は正しいアーキテクチャを指定することで動作するようにしました:

Sudo env ARCHFLAGS="-Arch i386" gem install pg

Webには、異なるアーキテクチャ(MacPortsを使用している人向けの「-Arch x86_64」など)を指定するように言ったチュートリアルがありますが、単一ファイルインストールを使用したため、機能しませんでした。

31
bobfet1

Yosemiteを使用している場合:

brew install postgres

次に:

ARCHFLAGS="-Arch x86_64" gem install pg

そして(optional)最後に、autovacuumを起動したい場合...

postgres -D /usr/local/var/postgres
24
etusm

たぶん、あなたはこれを試すことができます:

ARCHFLAGS="-Arch i386 -Arch x86_64" gem install pg

ライブラリのアーキテクチャを知るために使用できます

file /usr/local/lib/libpq.dylib 

私の場合は1つのアーキテクチャしか提供していません(homebrew経由でインストール):

/usr/local/lib/libpq.dylib: Mach-O 64-bit dynamically linked shared library x86_64
21
ybart

適切な環境変数のプレフィックスを付けて、gemを偽造します。 MacPortsからインストールする場合、次の手順を実行できるはずです。

% /opt/local/lib/postgresql91/bin/pg_config
BINDIR = /opt/local/lib/postgresql91/bin
DOCDIR = /opt/local/share/doc/postgresql
HTMLDIR = /opt/local/share/doc/postgresql
INCLUDEDIR = /opt/local/include/postgresql91
PKGINCLUDEDIR = /opt/local/include/postgresql91
INCLUDEDIR-SERVER = /opt/local/include/postgresql91/server
LIBDIR = /opt/local/lib/postgresql91
PKGLIBDIR = /opt/local/lib/postgresql91
LOCALEDIR = /opt/local/share/locale
MANDIR = /opt/local/share/man
SHAREDIR = /opt/local/share/postgresql91
SYSCONFDIR = /opt/local/etc/postgresql91
PGXS = /opt/local/lib/postgresql91/pgxs/src/makefiles/pgxs.mk
CONFIGURE = '--prefix=/opt/local' '--sysconfdir=/opt/local/etc/postgresql91' '--bindir=/opt/local/lib/postgresql91/bin' '--libdir=/opt/local/lib/postgresql91' '--includedir=/opt/local/include/postgresql91' '--datadir=/opt/local/share/postgresql91' '--mandir=/opt/local/share/man' '--with-includes=/opt/local/include' '--with-libraries=/opt/local/lib' '--with-openssl' '--with-bonjour' '--with-readline' '--with-zlib' '--with-libxml' '--with-libxslt' '--enable-thread-safety' '--enable-integer-datetimes' '--with-ossp-uuid' 'CC=/usr/bin/gcc-4.2' 'CFLAGS=-pipe -O2 -Arch x86_64' 'LDFLAGS=-L/opt/local/lib -Arch x86_64' 'CPPFLAGS=-I/opt/local/include -I/opt/local/include/ossp'
CC = /usr/bin/gcc-4.2
CPPFLAGS = -I/opt/local/include -I/opt/local/include/ossp -I/opt/local/include/libxml2 -I/opt/local/include
CFLAGS = -pipe -O2 -Arch x86_64 -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wformat-security -fno-strict-aliasing -fwrapv
CFLAGS_SL = 
LDFLAGS = -L/opt/local/lib -Arch x86_64 -L/opt/local/lib -L/opt/local/lib -Wl,-dead_strip_dylibs
LDFLAGS_EX = 
LDFLAGS_SL = 
LIBS = -lpgport -lxslt -lxml2 -lssl -lcrypto -lz -lreadline -lm 
VERSION = PostgreSQL 9.1beta1

そこから、LIBDIRINCLUDEDIRCPPFLAGSLIBS、およびLDFLAGS(私があなたを走らせると思うのはLIBDIR、 しかしながら)。次に実行します:

setenv PATH /opt/local/lib/postgresql91/bin:${PATH}
Sudo env LDFLAGS=-L`pg_config --libdir` CPPFLAGS=`pg_config --cppflags` gem install pg

それはあなたのためにそれを行う必要があります。そうでない場合は教えてください。

6
Sean

私たちが抱えていた問題はかなり奇妙でした。

Ruby -v # was ok (rbenv)
gem -v # was ok (rbenv)

しかし、実際にバンドルインストールを行ったとき、rbenvによってインストールされたRubyのバージョンに対してbundlerはインストールされなかったため、bundle installと入力すると、システムのbundlerが使用されました。

したがって、バンドルインストールを実行する前に、次を実行してバンドラーをインストールしてください。

gem install bundler
5
Tibastral

Postgres開発ファイルは必要ないと思います。必要なものはすべてインストーラーに含まれているはずです。インストール先のパスが環境パスにない可能性が高いため、pgをコンパイルしようとしたときにgemがそれらを見つけることができません。

gem install pgをルートとして実行する必要はありません。実際に実行する場合、PATH(Sudoで実行する場合はルートのPATH)に必要な情報が含まれていない可能性があります。

以下は通常私のために働く:

# Might be different depending on where your installer installed postgres 8.3
export PATH=$PATH:/Library/PostgreSQL/8.3/include/
export ARCHFLAGS='-Arch x86_64'
gem install pg
3
Brett Bender

これは最終的に私のためにやったことです(他の投稿と一緒に以前に提供された複数のソリューションの組み合わせ):

$ Sudo env ARCHFLAGS = "-Arch x86_64" gem install pg-with-pg-include =/Library/PostgreSQL/9.6/include /

3
Marcus Silveira

どうにかして64ビットバージョンのpostgres(homebrewがインストールされます)と32ビットバージョンのRubyになった場合、他の人が提案したARCHFLAGS回答は機能しません。何らかの理由でrbenvはRuby 1.9.2-p290を32ビットとしてビルドすることを要求しているため、64ビットのpostgresとリンクすることはできません。

Rubyバイナリのアーキテクチャを確認してください

file `which Ruby`

またはrbenvを使用している場合

file `rbenv which Ruby`

そして、あなたのpostgresと比較してください:

file `which postgres`

不一致がある場合は、postgresまたはRubyを再インストールする必要があります。 rbenvを使用して、別のバージョン1.9.3-p194ではなく1.9.2-p290に切り替えるだけでこれを解決しました。

1
Leopd

だから基本的に私はこれをやった;-)

brew install postgres
1
Jackie Chan

これは私がマーベリックスで動作するようにした方法です。注:homebrewからpostgresql 9.3をインストール済みです。

  1. App StoreからXcodeを5.0に更新する

  2. コマンドライン開発者ツールをインストールする

    xcode-select --install

  3. Xcodeライセンスに同意する

    Sudo xcodebuild -license

  4. Gemをインストールする

    ARCHFLAGS = "-Arch x86_64" gem install pg

1
Michał Szajbe

私はおそらくここでのパーティーに少し遅れていますが、私の場合は、rbenvを使用してRuby 2.2.3にアップグレードしていました。私は私のBundlerをインストールして動作させる必要がありました。古いシステムバージョンがありました。

gem install bundler

0
mchapman17

Macでは、これを試すことができます(私のために動作します):gem install pg-with-pg-include =/Library/PostgreSQL/9.5/includeフェッチ:pg-1.0.0.gem(100%)ネイティブ拡張の構築: ' with-pg-include =/Library/PostgreSQL/9.5/include 'これにはしばらく時間がかかる可能性があります... pg-1.0.0のインストールに成功しましたpg-1.0.0のドキュメントの解析pg-1.0.0のriドキュメントのインストールドキュメントのインストールを完了しましたpgの場合、3秒後に1つのgemがインストールされます

(この部分「/Library/PostgreSQL/9.5/include」には、Postgresパスを配置する必要があります)

0
Marcos Riveros

上記のように、これはrbenvに2つのRubyアーチを持っているという事実と関係があります/usr/bin/Ruby: Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit executable x86_64] [i386:Mach-O executable i386]私がしなければならなかったのはpg gemをx86_64 Archこのコマンドで使用します:

Sudo env ARCHFLAGS="-Arch x86_64" gem install pg

bash_profileが最新であることを忘れないでください

Postgresのパスを追加します。この場合、OSXhttps://postgresapp.com/ )の代わりにPostgresアプリ(brew)を使用しています。これはデフォルトですロケーション:

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

Bashをリロードします

Sudo vi ~/.bash_profile

これを実行した後、私はついにpg gemを正常にインストールすることができました

お役に立てれば!

0
d1jhoni1b