Nepavyko rasti „PostgreSQL“ klientų bibliotekos (libpq)

Bandau įdiegti PostgreSQL „Rails“ „Mac OS X 10.6“. Iš pradžių bandžiau įdiegti „MacPorts“, bet tai nepadėjo, todėl įdiegiau DMG įrenginį vienu spustelėjimu. Atrodė, kad tai veikia.

Įtariu, kad reikia įdiegti PostgreSQL kūrimo paketus, tačiau nežinau, kaip tai padaryti OS X sistemoje.

Tai aš gaunu, kai bandau padaryti 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 
135
02 июня '11 в 5:28 2011-06-02 05:28 Jason Swett paklausė birželio 2 d. 11 d. 5:28 2011-06-02 05:28
@ 14 atsakymų

Sprendimas: įdiegti „PostgreSQL“ naudodami „Homebrew“.

18
15 июня '11 в 23:28 2011-06-15 23:28 Atsakymą pateikė Jason Swett birželio 15 d. 11 val. 23:28 2011-06-15 23:28
 $ 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... 

DARBAS!

325
21 сент. Atsakymą pateikė Siddhartha Mukherjee rugsėjo 21 d. 2011-09-21 12:44 '11, 12:44, 2011-09-21 12:44

Čia bandžiau aukščiausią įvertinimą:

 env ARCHFLAGS="-arch x86_64" gem install pg 

Bet kai vėl bandžiau paleisti paketą, jis turėjo tą pačią klaidą. Tada bandžiau įdiegti visą paketą su ARCHFLAGS taip:

 ARCHFLAGS="-arch x86_64" bundle install 

Dirbo man! Būtinai pakeiskite x86_64 su i386, priklausomai nuo architektūros.

55
29 апр. atsakymą pateikė Christine Loh balandžio 29 d. 2015-04-29 22:21 '15, 10:21 val. 2015-04-29 22:21

Turėjau šią problemą naudodamas „EnterpiseDB.dmg“. Jei tai tas pats dalykas, kurį naudojote, aš galiu dirbti, nurodydamas teisingą architektūrą:

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

Internete yra keletas pamokų, kuriose teigiama, kad jie nurodo kitą architektūrą (pvz., „-Arch x86_64“ žmonėms, naudojantiems „MacPorts“), tačiau jis man neveikė, nes aš naudoju vieną failą.

30
08 июня '11 в 19:48 2011-06-08 19:48 atsakymą pateikė bobfet1 birželio 08 '11, 19:48 2011-06-08 19:48

Galbūt galite pabandyti:

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

Norėdami sužinoti bibliotekos architektūrą, galite naudoti

 file /usr/local/lib/libpq.dylib 

kuri mano atveju suteikė tik vieną architektūrą (įdiegta per homebrew):

 /usr/local/lib/libpq.dylib: Mach-O 64-bit dynamically linked shared library x86_64 
20
12 июня '11 в 21:26 2011-06-12 21:26 atsakymą pateikė „ ybart “ birželio 12 d. 11 val. 21:26 2011-06-12 21:26

Jei naudojate Yosemite:

 brew install postgres 

Tada:

 ARCHFLAGS="-arch x86_64" gem install pg 

Ir (neprivaloma) , galiausiai, jei norite paleisti autovacuum ...

 postgres -D /usr/local/var/postgres 
18
28 янв. atsakymas, kurį pateikė etusm Jan 28 2015-01-28 22:32 '15, 10:32 pm 2015-01-28 22:32

Turėjome gana keistą problemą.

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

bet kai mes įdiegėme paketą, paketas nebuvo įdiegtas rubino versijai, kurią įdiegė rbenv, taigi, įvedę paketo diegimą, jis naudojo sistemos kūrėją.

Taigi, prieš pradedant paketų diegimą, įsitikinkite, kad įdiegėte paketą

 gem install bundler 
5
08 окт. atsakymas Tibastral 08 spalis. 2012-10-08 18:01 '12 at 6:01 pm 2012-10-08 18:01

Subordinuotas gem , atitinkamų aplinkos kintamųjų prefiksas. Jei įdiegėte iš „MacPorts“, turite atlikti šią procedūrą:

 % /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 

Iš ten ištraukite „ LIBDIR , „ INCLUDEDIR , „ CPPFLAGS , „ LIBS ir „ LDFLAGS (tačiau manau, kad dirbsite su „ LIBDIR ). Tada paleisite:

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

Tai turėtų tai padaryti už jus. Leiskite man žinoti, jei taip nėra.

5
02 июня '11 в 21:42 2011-06-02 21:42 atsakymas duotas Sean 02 birželio 11 d. 21:42 2011-06-02 21:42

Nemanau, kad jums reikalingi postgres kūrimo failai. Viskas, ko jums reikia, turėtų būti įtraukta į diegimo programą. Labiausiai tikėtina, kad kelias, į kurį jie yra įdiegti, nėra jūsų kelyje į aplinką, todėl akmuo negali jų rasti, kai jis bando surinkti psl.

Jums nereikia paleisti „ gem install pg kaip „root“, iš tiesų, jei tai padarysite, jūsų PATH (root PATH, jei paleisite w / sudo) nebus reikiamos informacijos.

Paprastai tai veikia:

 # 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 
3
10 июня '11 в 18:56 2011-06-10 18:56 atsakymą pateikė Brett Bender , birželio 10 d. 11 val. 18:56 2011-06-10 18:56

Tai galiausiai tai padaryta man (kelių sprendimų, pateiktų prieš kitus pranešimus, derinys):

$ sudo env ARCHFLAGS = "- arch x86_64" gem install pg - su-pg-include = / Biblioteka / PostgreSQL / 9,6 / įtraukti /

2
22 янв. atsakymą pateikė Marcus Silveira . 2017-01-22 20:58 '17 ne 20:58 2017-01-22 20:58

Taip aš tai padariau, kad dirbčiau su „Mavericks“. Pastaba Aš jau įdiegiau postgresql 9.3 iš homebrew.

  • Atnaujinkite „Xcode“ iki 5.0 iš „App Store“

  • Įdiegti komandinės eilutės kūrimo priemones

    xcode-select --install

  • Sutikite su „Xcode“ licencija

    sudo xcodebuild -license

  • Įdiekite perlas

    ARCHFLAGS = "- arch x86_64" „gem install“ psl

1
29 нояб. Michał Szajbe atsakymas lapkričio 29 d 2013-11-29 00:55 '13 prie 0:55 2013-11-29 00:55

Taigi iš esmės aš tai padariau; -)

 brew install postgres 
1
20 февр. Atsakymą pateikė Jackie Chan vasario 20 d. 2014-02-20 14:02 '14 at 14:02 2014-02-20 14:02

ARCHFLAGS atsakymas, kurį kiti pasiūlė, neveiks, jei kažkaip baigsite 64 bitų postgres versiją (kurią įdiegs homebrew) ir 32 bitų rubino versiją. Dėl kažkokių priežasčių rbenv primygtinai reikalauja, kad Ruby 1.9.2-p290 taptų 32 bitų, todėl neįmanoma susieti su 64 bitų paštu.

Patikrinkite savo rubino dvejetainio failo architektūrą

 file `which ruby` 

arba jei naudojamas rbenv

 file `rbenv which ruby` 

Ir palyginkite su savo postgres:

 file `which postgres` 

Jei yra neteisingas atitikmuo, turėsite įdiegti postgres arba ruby. Su rbenv, tai išsprendžiau paprasčiausiai pereinant prie kitos versijos: 1.9.3-p194 vietoj 1.9.2-p290 .

1
26 апр. Leopd paskelbė balandžio 26 dieną 2012-04-26 18:41 '12 at 18:41 pm 2012-04-26 18:41

Tikriausiai aš šiek tiek vėlu partijai, bet mano atveju naudoju rbenv ir atnaujinau į Ruby 2.2.3. Aš turėjau įdiegti „Bundler“, kad galėčiau dirbti, turėjau seną sistemos versiją.

gem install bundler

0
02 дек. Atsakymas pateikiamas mchapman17 02 Dec. 2015-12-02 08:21 '15, 8:21 AM 2015-12-02 08:21