Не удается найти клиентскую библиотеку PostgreSQL (libpq)
Я пытаюсь установить PostgreSQL для Rails на Mac OS X 10.6. Сначала я попробовал установить 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
16 ответов:
$ 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но когда я попытался запустить bundle install снова, у него была та же ошибка. Затем я попробовал весь пакет установить с ARCHFLAGS вот так:
ARCHFLAGS="-arch x86_64" bundle installработал на меня! Обязательно замените x86_64 на i386 в зависимости от того, какая у вас архитектура.
У меня просто была эта проблема при использовании EnterpiseDB .употр. Если это то же самое думаю, что вы использовали, я получил его для работы, указав правильную архитектуру:
sudo env ARCHFLAGS="-arch i386" gem install pgесть некоторые учебники в интернете, которые говорят, чтобы указать другую архитектуру (например, "- arch x86_64" для людей, которые использовали MacPorts), но это не работало для меня, потому что я использовал установку одного файла.
при использовании Yosemite:
brew install postgresзатем:
ARCHFLAGS="-arch x86_64" gem install pgи (необязательный) наконец, если вы хотите запустить autovacuum...
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
Fake out
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это должно сделать это для вас. Дайте мне знать, если это не так.
проблема у нас была довольно странная.
ruby -v # was ok (rbenv) gem -v # was ok (rbenv)но когда мы делали установку пакета на самом деле, bundler не был установлен для версии ruby, которая была установлена rbenv, поэтому, когда мы набрали bundle install, он использовал bundler системы.
поэтому перед запуском bundle install убедитесь, что вы установили bundler, запустив
gem install bundler
Я не думаю, что вам нужны файлы разработки postgres, все, что вам нужно, должно было быть включено в ваш установщик. Более вероятно, что путь, на который они установлены, не находится в вашем пути среды, и поэтому gem не может найти их, когда он пытается скомпилировать pg.
вы не должны бежать
gem install pgкак корень, на самом деле, если вы это сделаете, скорее всего, ваш путь (путь корня, если запустить w/ sudo) не будет содержать необходимую информацию.обычно работает следующее я:
# 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
Это то, что, наконец, сделал это для меня (сочетание нескольких решений, предоставленных ранее вместе с другими сообщениями):
$ судо ОКР ARCHFLAGS="-Арч x86_64 с" жемчужиной установки пг-с-ПГ-включать=/библиотеки/PostgreSQL и/9.6/числе/
The
ARCHFLAGSответ, который предложили другие, не будет работать, если вы каким-то образом оказались с 64-разрядной версией postgres (которая будет установлена homebrew) и 32-разрядной версией ruby. Почему-то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.
вот как я сделал это, чтобы работать на Маверикс. Примечание: Я уже установил postgresql 9.3 из homebrew.
обновить Xcode до 5.0 из App Store
установить средства разработчика командной строки
xcode-select --install
согласен на лицензию Xcode
sudo xcodebuild-лицензия
установить gem
ARCHFLAGS=" - arch x86_64 " gem install pg
Я, вероятно, немного опоздал на вечеринку здесь, но в моем случае я использовал rbenv и обновление до Ruby 2.2.3. Мне пришлось установить Bundler, чтобы заставить меня работать, у меня была старая версия системы.
gem install bundler
как упоминалось выше, это связано с тем, что на rbenv есть две рубиновые арки
/usr/bin/ruby: Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit executable x86_64] [i386:Mach-O executable i386]то, что я должен был сделать, это просто установитьpggem forcingx86_64arch для использования с этой командой:
sudo env ARCHFLAGS="-arch x86_64" gem install pgне забудьте иметь свой
bash_profileдо свиданиядобавьте путь вашего postgres, в этом случае я использую приложение Postgres (
OSX) вместоbrew(https://postgresapp.com/) по умолчанию это местонахождение:
export PATH=/Applications/Postgres.app/Contents/Versions/10/bin:$PATHобновить bash с
sudo vi ~/.bash_profileпосле этого я смог, наконец, успешно установить
pg gemнадеюсь, что это помогает!
на Mac вы можете попробовать это (у меня работает): gem install pg -- with-pg-include= / Library / PostgreSQL/9.5 / include Выборка: pg-1.0.0.драгоценный камень (100%) Создание собственных расширений с помощью: 'with-pg-include= / Library / PostgreSQL/9.5 / include' Это может занять некоторое время... Успешно установлен pg-1.0.0 Разбор документации для pg-1.0.0 Установка документации ri для pg-1.0.0 Сделано установка документации для pg через 3 секунды 1 камень установлен
(эта часть "/ Library / PostgreSQL/9.5 / include " you должен поставить свой путь Postgres)
Comments