[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
그렇게해야합니다. 그렇지 않은 경우 알려주십시오.