Не удается найти клиентскую библиотеку 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
819   16  

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

решение: переустановил PostgreSQL с Homebrew.

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.

  1. обновить Xcode до 5.0 из App Store

  2. установить средства разработчика командной строки

    xcode-select --install

  3. согласен на лицензию Xcode

    sudo xcodebuild-лицензия

  4. установить gem

    ARCHFLAGS=" - arch x86_64 " gem install pg

Так что в основном я сделал это ; -)

brew install postgres

Я, вероятно, немного опоздал на вечеринку здесь, но в моем случае я использовал 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] то, что я должен был сделать, это просто установить pg gem forcing x86_64 arch для использования с этой командой:

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

    Ничего не найдено.