[ruby-on-rails] PostgreSQL 클라이언트 라이브러리를 찾을 수 없습니다 (libpq)

Mac OS X 10.6에 PostgreSQL for Rails를 설치하려고합니다. 먼저 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



답변

$ 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...

일했다!


답변

나는 여기서 최고 등급의 답변을 시도했다.

env ARCHFLAGS="-arch x86_64" gem install pg

그러나 번들 설치를 다시 시도했을 때 동일한 오류가 발생했습니다. 그런 다음 ARCHFLAGS를 사용하여 전체 번들 설치를 시도했습니다.

ARCHFLAGS="-arch x86_64" bundle install

나를 위해 일했다! 사용중인 아키텍처에 따라 x86_64를 i386으로 바꾸십시오.


답변

EnterpiseDB .dmg를 사용할 때이 문제가 발생했습니다. 그것이 당신이 사용한 것과 같은 생각이라면, 올바른 아키텍처를 지정하여 작동하도록했습니다.

sudo env ARCHFLAGS="-arch i386" gem install pg

웹에 다른 아키텍처 (예 : MacPorts를 사용하는 사람들을위한 “-arch x86_64”)를 지정하는 튜토리얼이 있지만 단일 파일 설치를 사용했기 때문에 작동하지 않았습니다.


답변

요세미티를 사용하는 경우 :

brew install postgres

그때:

ARCHFLAGS="-arch x86_64" gem install pg

그리고 (선택 사항) 마지막으로, 당신이 발사 자동 진공 원한다면 …

postgres -D /usr/local/var/postgres


답변

아마도 당신은 이것을 시도 할 수 있습니다 :

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


답변

해결 방법 : Homebrew와 함께 PostgreSQL을 다시 설치하십시오.


답변

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

거기에서, 밖으로 당겨 LIBDIR, INCLUDEDIR, CPPFLAGS, LIBS그리고 LDFLAGS(나는 당신이 실행 얻을 것이다 생각 하나 LIBDIR그러나 등). 그런 다음 다음을 실행합니다.

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

그렇게해야합니다. 그렇지 않은 경우 알려주십시오.