PostgreSQL ग्राहक पुस्तकालय (libpq) नहीं मिल सकता है


146

मैं मैक ओएस एक्स 10.6 पर पटरियों के लिए PostgreSQL स्थापित करने की कोशिश कर रहा हूं। पहले मैंने MacPorts को स्थापित करने की कोशिश की, लेकिन यह ठीक नहीं हुआ, इसलिए मैंने एक-क्लिक DMG इंस्टॉल किया। वह काम करने लगा था।

मुझे संदेह है कि मुझे PostgreSQL विकास पैकेज स्थापित करने की आवश्यकता है, लेकिन मुझे नहीं पता कि ओएस एक्स पर ऐसा कैसे करना है।

जब मैं करने की कोशिश करता हूं तो मुझे यहां मिलता है 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

क्या आपने postgresql का संस्करण 8.3 स्थापित किया है या यह कुछ पुरानी स्थापना उठा रहा है? यदि यह 8.3 लाइब्रेरीज़ / लाइबल्स / पोस्टग्रेएसक्यूएल / 8.3 / लिब में होनी चाहिए, तो कृपया देखें कि यह वहाँ है या नहीं।
इलके

मैंने संस्करण 8.3 किया और, हाँ, ऐसा लगता है कि सब कुछ है।
जेसन स्वेट

आप से उत्पादन पोस्ट कर सकते हैं pg_config? इससे हमें मदद करने में आसानी होगी।
justis 20

मुझे संस्करण -v '0.14.0' जोड़ना पड़ा, ताकि यह म्यू प्रोजेक्ट के साथ काम करे
Matthieu Rouif

जवाबों:


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

काम किया!


2
मुझे "env ARCHFLAGS =" - आर्क x86_64 "मणि इंस्टॉल -v '0.14.0' संस्करण जोड़ना था ताकि यह मेरी परियोजना के साथ काम करे
मैथ्यू रूफ

6
OS X Mavericks के लिए काम किया। मेरे लिए, यह हैenv ARCHFLAGS="-arch x86_64" gem install pg -v '0.17.1' -- --with-pg-config=/opt/local/lib/postgresql91/bin/pg_config
दावेई यांग

17
और यदि आप "Postgres.app" का उपयोग करते हैं, तो mavericks के तहत, आपको यह करना चाहिए: env ARCHFLAGS = "- कट्टर x86_64 रत्न इंस्टॉल pg - --with-pg-config = / Applications / Postgres.app / सामग्री / संस्करण / 9.3 / बिन / pg_config (मान लें कि आप Postgres.app संस्करण 9.3 का उपयोग करते हैं, क्योंकि pg_config का स्थान शायद आप अलग-अलग संस्करण का उपयोग करते हैं, लेकिन वैसे भी आप इसे पा सकते हैं)
Zhaonan

2
इसने मेरे लिए काम किया और 2 घंटे का ठहराव तोड़ दिया। मैं रेल के लिए नया हूँ और यह निराशाजनक था। पिछले टिप्पणीकार की तरह, मैं Mavericks पर Postgres.app इंस्टॉलर का उपयोग कर रहा था। महसूस नहीं किया ARCHFLGS एनवी चर इतना महत्वपूर्ण था। यहाँ स्पष्टीकरण।
GNAT

3
सवाल यह है कि यह काम क्यों करता है? "ARCHFLAGS =" - आर्च x86_64 "क्या करता है, और वेनिला मणि काम क्यों नहीं करता है? मणि स्थापित करने के लिए यह मुश्किल नहीं होना चाहिए।
जारेड मेनार्ड

78

मैंने यहाँ शीर्ष-रेटेड उत्तर की कोशिश की:

env ARCHFLAGS="-arch x86_64" gem install pg

लेकिन जब मैंने फिर से बंडल इंस्टाल चलाने की कोशिश की, तो उसमें वही त्रुटि थी। फिर मैंने ARCHFLAGS के साथ पूरे बंडल को स्थापित करने की कोशिश की:

ARCHFLAGS="-arch x86_64" bundle install

मेरे लिए काम किया! X86_64 को i386 से बदलना सुनिश्चित करें कि आपके पास कौन सा आर्किटेक्चर है।


2
बहुत बहुत धन्यवाद। इसी से मेरा काम बना है। मैं अब एक घंटे के लिए इस मुद्दे को हल करने की कोशिश कर रहा हूं, और इस कोड ने यह क्या किया - ARCHFLAGS = "- आर्क x86_64" बंडल इंस्टॉल
पिरेटेटोन

यहाँ @Piratetone के अलावा ने मेरे लिए हाई सिएरा
tnaught

@Christine के लिए सराहना की, यह मेरे लिए हाई सिएरा
Ymow वू

31

EnterpiseDB का उपयोग करते समय मुझे बस यह समस्या आ रही थी .dmg। यदि आपके द्वारा उपयोग की जाने वाली यही सोच है, तो मुझे यह सही वास्तुकला को निर्दिष्ट करके काम करने के लिए मिला:

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

वेब पर कुछ ट्यूटोरियल हैं जिन्होंने मैक आर्किटेक्चर का उपयोग करने वाले लोगों के लिए एक अलग आर्किटेक्चर (जैसे "-arch x86_64" निर्दिष्ट करने के लिए कहा था) लेकिन यह मेरे लिए काम नहीं कर रहा था क्योंकि मैंने सिंगल फाइल इंस्टॉल का उपयोग किया था।


6
x86_64 ने मेरे लिए काम किया (Mac OS 10.6.8, PostgreSQL को homebrew द्वारा स्थापित किया गया: mxcl.github.com/homebrew )
chesterbr

2
एक समाधान खोजने के लिए घंटों का उपयोग किया है और तुम्हारा काम किया है, bobfet1 और @chester। धन्यवाद! :-))) ** sudo env ARCHFLAGS = "- मेहराब x86_64" रत्न स्थापित pg **
rassom

24

यदि योसमाइट का उपयोग कर रहे हैं:

brew install postgres

फिर:

ARCHFLAGS="-arch x86_64" gem install pg

और (वैकल्पिक) अंत में, यदि आप ऑटोकैसम को लॉन्च करना चाहते हैं ...

postgres -D /usr/local/var/postgres

21

शायद आप यह एक कोशिश कर सकते हैं:

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

अपने पुस्तकालय की वास्तुकला को जानने के लिए आप इसका उपयोग कर सकते हैं

file /usr/local/lib/libpq.dylib 

जो मेरे मामले में सिर्फ 1 आर्किटेक्चर दिया (होमब्रे के माध्यम से स्थापित):

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

+1 यह जानने के लिए कि मेरी लाइब्रेरी कौन सी वास्तुकला के बारे में संकेत के लिए धन्यवाद!
स्पिक

अपने रूबी बाइनरी की वास्तुकला की भी जांच करें।
लीपड

18

समाधान: होमब्रे के साथ पोस्टग्रेक्यूएल को फिर से इंस्टॉल किया गया।


1
बधाई! किसी को इनाम देने के लिए याद रखें। कुछ लोगों ने मदद करने की बहुत कोशिश की, भले ही यह अंतिम समाधान नहीं था, और जब आप इनाम की पेशकश करते हैं तो प्रतिष्ठा अंक पहले से ही खर्च किए गए थे।
justis

2
यह निश्चित नहीं है कि यह -1 क्यों है, मेरे लिए तब काम किया जब अन्य तरीकों में से गैर
अबे पेट्रिलो

मैंने ARCHFLAGS पद्धति का उपयोग करना भी समाप्त कर दिया, लेकिन होमब्रे के साथ पोस्टरेस्कल को फिर से स्थापित करने तक यह काम नहीं किया।
डेव कॉवार्ट

योसेमाइट (10.10.3) के लिए काम किया। काढ़ा स्थापित PostgreSQL
रूजवेल्ट

यह मेरे लिए काम नहीं किया। आश्चर्य है कि अगर यह इस तथ्य के साथ कुछ करना है कि मैं "रूबी में निर्मित" का उपयोग कर रहा हूं (मुझे लगता है) कुछ और के बजाय: |
रोज़रपैक

6

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

यह आपके लिए करना चाहिए। मुझे पता है अगर यह नहीं करता है।


मैंने PostgreSQL के लिए MacPorts के बजाय एक-क्लिक इंस्टॉलर का उपयोग किया। मुझे नहीं पता कि समतुल्य कमांड क्या होगी।
जेसन स्विट

देखें कि क्या आप इसके साथ भाग्यशाली हैं (मुझे लगता है कि मैक की अद्यतन स्क्रिप्ट शनिवार रात को चलती है):locate pg_config
सीन

मैं अभी भी नहीं जानता कि इसका क्या अर्थ होगा CPPFLAGSया LDFLAGS(मुझे नहीं पता कि वे क्या हैं, क्षमा करें)।
जेसन स्विट

ओह, लेकिन locate pg_configमुझे कुछ सामान दिखा, हालांकि। और मैंने MacPorts के माध्यम से PostgreSQL को स्थापित करने और आपके आदेश का उपयोग करने की कोशिश की - काम नहीं किया।
जेसन स्विट

1
उपर्युक्त उदाहरण अपडेट किया गया। मुझे विश्वास है कि इससे आपकी समस्या दूर हो जाएगी। पकड़ है कि गया था LDFLAGSनिर्देशिका कि निहित करने के लिए सेट नहीं किया गया था libpq। विवरण के लिए ऊपर देखें।
सीन

5

हमारे पास जो समस्या थी वह बहुत अजीब थी।

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

लेकिन जब हमने वास्तव में एक बंडल स्थापित किया था, तो बर्नर को माणिक के संस्करण के लिए स्थापित नहीं किया गया था जो कि rbenv द्वारा स्थापित किया गया था, इसलिए, जब हमने बंडल स्थापित किया था, तो यह सिस्टम के बंडल का उपयोग करता था।

इसलिए बंडल इंस्टाल चलाने से पहले, सुनिश्चित करें कि आपने रनिंग करके बंडलर स्थापित किया है

gem install bundler

यह मेरे मामले में काम करता था (ताजा macOS हाई सिएरा, रेंबव का उपयोग करके और ज्यादातर काढ़ा के साथ स्थापित करना)। बंडल से सेब की चीजों का उपयोग करने की संभावना थी, यही समस्या थी ...
saza

3

मुझे नहीं लगता कि आपको पोस्टग्रेज डेवलपमेंट फाइल्स की जरूरत है, आपकी जरूरत की हर चीज को आपके इंस्टॉलर के साथ शामिल किया जाना चाहिए। यह अधिक संभावना है कि आपके द्वारा स्थापित पथ आपके पर्यावरण पथ में नहीं है और इसलिए पीजी संकलित करने का प्रयास करते समय मणि उन्हें नहीं मिल सकती है।

आपको दौड़ना नहीं चाहिए gem install pg रूट के रूप में , यदि आप इसकी संभावना रखते हैं कि आपके PATH (रूट का PATH यदि रन 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

रनिंग gem install pg(आपके दो पिछले आदेशों के साथ) इसके बजाय sudo gem install pgअभी भी सटीक समान परिणाम देता है।
जेसन स्वेट

क्या आप 32- या 64-बिट आर्किटेक्चर पर हैं? क्या आपने अन्य वास्तुकला ध्वज के साथ ऊपर की कोशिश की है? /Library/PostgreSQL/...पोस्टग्रेज इंस्टॉलेशन की आपकी प्रति जहां भी है, क्या आपने उसे सही स्थान पर बदल दिया है?
ब्रेट बेंडर

मेरे आदेशों को सूचीबद्ध करने के बारे में मेरे नोट्स में देखा। ऐसा लगता है कि मैंने sudo port install postgresql83 postgresql83-serverइन निर्देशों के समान Postgres स्थापित किया है : flux88.com/2010/06/installing-postgresql-for-rails-on-mac-os-x । ऐसा लगता है कि स्टैंडअलोन इंस्टॉलर 32-बिट है, इसलिए आप अपने आर्क फ्लैग को 32-बिट पर सेट करना चाहते हैं, भले ही आपकी मशीन 64-बिट हो। यदि आप इसे काम करने के लिए नहीं कर सकते हैं, तो मैं ऊपर दिए गए निर्देशों का प्रयास करते हुए MacPorts के माध्यम से स्थापना रद्द करने और पुन: स्थापित करने का सुझाव दूंगा। उम्मीद है की वो मदद करदे!
ब्रेट जेंडर

3

यह मेरे लिए आखिरकार क्या है (अन्य पदों के साथ पहले दिए गए कई समाधानों का संयोजन):

$ sudo env ARCHFLAGS = "- आर्च x86_64" मणि स्थापित pg - साथ-पृष्ठ-शामिल करें = / लाइब्रेरी / पोस्टग्रेसीक्यूएल / 9.6 / शामिल /


उपरोक्त समाधान ने मेरे लिए Mac OS High Sierra sudo env ARCHFLAGS = "- आर्क x86_64" मणि स्थापित pg -v '1.1.2' के साथ काम किया है - साथ में pg- शामिल करें = / usr / स्थानीय / तहखाना / पोस्टग्रैसक्ल / 10.5 / शामिल शामिल फ़ोल्डर के लिए सटीक मार्ग का पता लगाएं और उसी के अनुसार अपडेट करें।
14

1

ARCHFLAGSजवाब यह है कि दूसरों को होगा काम नहीं करता है, तो आप किसी भी तरह ऊपर एक 64-बिट (homebrew स्थापित हो जाएगा) और postgres के संस्करण माणिक की एक 32-बिट संस्करण के साथ समाप्त हो का प्रस्ताव किया है। किसी कारण के लिएrbenv मेरे लिए 32-बिट के रूप में रूबी 1.9.2-P290 बनाने पर जोर देता है, जिससे 64-बिट पोस्टग्रेज के खिलाफ लिंक करना असंभव हो जाता है।

अपने रूबी बाइनरी की वास्तुकला की जाँच करें

file `which ruby`

या अगर rbenv का उपयोग कर रहे हैं

file `rbenv which ruby`

और अपने पोस्टग्रेज के खिलाफ तुलना करें:

file `which postgres`

यदि कोई गलत मिलान है, तो आपको पोस्टग्रेज या रूबी को फिर से स्थापित करना होगा। Rbenv के साथ मैंने इसे केवल एक अलग संस्करण में स्विच करके हल किया: के 1.9.3-p194बजाय 1.9.2-p290


1

यह मैंने Mavericks पर काम करने के लिए बनाया है। नोट: मैंने पहले से ही homegrw से postgresql 9.3 स्थापित किया था।

  1. App Store से Xcode को 5.0 में अपडेट करें

  2. कमांड लाइन डेवलपर टूल इंस्टॉल करें

    xcode- चयन - स्थापना

  3. Xcode लाइसेंस के लिए सहमत

    सूडो xcodebuild -license

  4. मणि स्थापित करें

    ARCHFLAGS = "- मेहराब x86_64" मणि पीजी स्थापित करें



0

मुझे शायद यहाँ पार्टी में थोड़ी देर हो गई है, लेकिन मेरे मामले में मैं रेंबव का उपयोग कर रहा था और रूबी 2.2.3 में अपग्रेड कर रहा था। मुझे काम करने के लिए बुंडलर को स्थापित करना पड़ा, मेरे पास एक पुराना सिस्टम संस्करण था।

gem install bundler


0

जैसा कि ऊपर उल्लेख किया गया है कि इस बात के साथ दो रूबी मेहराब होने के तथ्य के साथ है, /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मणि मजबूर x86_64आर्क स्थापित करना था :

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

याद रखें कि आपका bash_profileअप टू डेट है

अपने पोस्टग्रेट्स का पथ जोड़ें, इस स्थिति में डिफ़ॉल्ट रूप से पोस्टग्रेज एप्लिकेशन ( OSX) brew( https://postgresapp.com/ ) के बजाय यह स्थान है:

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

के साथ पुनः लोड करें

sudo vi ~/.bash_profile

ऐसा करने के बाद मैं आखिरकार सफलतापूर्वक स्थापित करने में सक्षम था pg gem

उम्मीद है की यह मदद करेगा!


0

मैक पर आप यह कोशिश कर सकते हैं (मेरे लिए काम करता है): मणि स्थापित पीजी - के साथ-पीजी-शामिल करें = / लाइब्रेरी / पोस्टग्रेसीक्यूएल / 9.5 / में शामिल हैं: पीजी-1.0.0.जीएम (100%) के साथ देशी एक्सटेंशन का निर्माण करना: ' के साथ-पीजी-शामिल करें = / लाइब्रेरी / पोस्टग्रेएसक्यूएल / 9.5 / 'इसमें शामिल हैं ... इसमें थोड़ा समय लग सकता है ... सफलतापूर्वक स्थापित किया गया pg-1.0.0 Pg-1.0.0 के लिए पार्सिंग प्रलेखन। 3 सेकंड के बाद पीजी के लिए 1 मणि स्थापित

(यह भाग "/Library/PostgreSQL/9.5/include" आपको अपना पोस्टग्रेज पथ रखना होगा)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.