Je ne trouve pas la bibliothèque client PostgreSQL (libpq)

j'essaie d'installer PostgreSQL pour Rails sur Mac OS X 10.6. J'ai d'abord essayé L'installation de MacPorts, mais ça ne s'est pas bien passé, alors j'ai fait L'installation de DMG en un clic. Qui semblait fonctionner.

je soupçonne que j'ai besoin d'installer les paquets de développement PostgreSQL mais je n'ai aucune idée de comment faire cela sur OS X.

Voici ce que j'obtiens quand j'essaie de faire 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
144
demandé sur Leopd 2011-06-02 06:28:53

16 réponses

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

a fonctionné!

343
répondu Siddhartha Mukherjee 2012-11-23 05:38:32

j'ai essayé la réponse la mieux notée ici:

env ARCHFLAGS="-arch x86_64" gem install pg

mais quand j'ai essayé d'exécuter bundle install à nouveau, il avait la même erreur. Puis j'ai essayé toute l'installation de bundle avec ARCHFLAGS comme cela:

ARCHFLAGS="-arch x86_64" bundle install

a marché pour moi! Assurez-vous de remplacer x86_64 par i386 en fonction de l'architecture que vous avez.

75
répondu Christine Loh 2015-04-29 19:21:50

j'avais juste ce problème en utilisant le EnterpiseDB .DMG. Si c'est la même chose que vous avez utilisé, Je l'ai fait fonctionner en spécifiant la bonne architecture:

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

il y a quelques tutoriels sur le web qui ont dit de spécifier une architecture différente (comme"- arch x86_64 " pour les personnes qui ont utilisé MacPorts) mais ça ne marchait pas pour moi parce que j'ai utilisé l'installation d'un seul fichier.

31
répondu bobfet1 2011-06-08 16:48:36

si vous utilisez Yosemite:

brew install postgres

puis:

ARCHFLAGS="-arch x86_64" gem install pg

et (optionnel) enfin, si vous voulez lancer autovacuum...

postgres -D /usr/local/var/postgres
23
répondu etusm 2015-01-28 19:32:52

Peut-être que vous pouvez essayer celui-ci:

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

pour connaître l'architecture de votre bibliothèque, vous pouvez utiliser

file /usr/local/lib/libpq.dylib 

qui a donné seulement 1 architecture dans mon cas (installé via homebrew):

/usr/local/lib/libpq.dylib: Mach-O 64-bit dynamically linked shared library x86_64
21
répondu ybart 2011-06-12 18:26:31

Solution: réinstallé PostgreSQL avec Homebrew.

18
répondu Jason Swett 2011-06-15 20:28:56

simuler gem en préfixant les variables d'environnement appropriées. Si vous installez à partir de MacPorts, vous devriez pouvoir suivre la procédure suivante:

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

de là, sortir le LIBDIR , INCLUDEDIR , CPPFLAGS , LIBS et LDFLAGS (celui qui je pense va vous faire courir est LIBDIR , cependant). Alors, vous courriez:

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

Qui devrait le faire pour vous. Permettez-moi de je sais si c'est pas le cas.

5
répondu Sean 2011-09-02 19:00:19

Le problème que nous avions était assez bizarre.

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

mais quand nous avons fait une installation package en fait, bundler n'a pas été installé pour la version de ruby qui a été installé par rbenv, donc, quand nous avons tapé package install, il a utilisé le bundler du système.

donc avant d'exécuter bundle install, assurez-vous que vous avez installé bundler en exécutant

gem install bundler
5
répondu Tibastral 2012-10-08 15:01:47

Je ne pense pas que vous ayez besoin des fichiers de développement postgres, tout ce dont vous avez besoin aurait dû être inclus avec votre installateur. Il est plus probable que le chemin sur lequel ils sont installés ne soit pas dans votre chemin d'environnement et donc gem ne peut pas les trouver quand il essaie de compiler pg.

vous ne devriez pas avoir à exécuter gem install pg comme root, en fait si vous le faites, il est probable que votre chemin (le chemin de root si vous exécutez w/ sudo) ne contiendra pas les informations nécessaires.

le

# 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
répondu Brett Bender 2011-06-10 15:56:16

C'est ce qui l'a finalement fait pour moi (combinaison de plusieurs solutions fournies avant avec d'autres messages):

$ sudo env ARCHFLAGS=" - arch x86_64 "gem install pg -- with-pg-include= / Library/PostgreSQL / 9.6 / include /

2
répondu Marcus Silveira 2017-01-22 17:58:44

la réponse ARCHFLAGS que d'autres ont proposée ne fonctionnera pas si vous vous retrouvez avec une version 64 bits de postgres (que homebrew installera) et une version 32 bits de ruby. Pour quelque raison rbenv insiste sur la construction de ruby 1.9.2-p290 en tant que 32-bit pour moi, ce qui rend impossible de relier contre 64-bit postgres.

Vérifiez l'architecture de votre ruby binaire avec

file `which ruby`

ou si vous utilisez rbenv

file `rbenv which ruby`

et comparez avec vos postgres:

file `which postgres`

S'il y a une correspondance erronée, vous devrez réinstaller postgres ou ruby. Avec rbenv j'ai résolu cela juste en passant à une version différente: 1.9.3-p194 au lieu de 1.9.2-p290 .

1
répondu Leopd 2012-04-26 15:41:11

voilà comment j'ai fait pour travailler sur Mavericks. Note: j'avais déjà installé postgresql 9.3 de homebrew.

  1. mise à Jour de Xcode de 5.0 à partir de l'App Store

  2. Installer en ligne de commande outils de développement

    xcode-select --install

  3. accord de licence Xcode

    sudo xcodebuild-licence

  4. Installer le gem

    ARCHFLAGS=" - arch x86_64 "gem install pg

1
répondu Michał Szajbe 2013-11-28 21:55:27

Donc, fondamentalement, je l'ai fait ;-)

brew install postgres
1
répondu Jackie Chan 2014-02-20 11:02:34

je suis probablement un peu en retard à la fête ici, mais dans mon cas j'utilisais rbenv et la mise à niveau à Ruby 2.2.3. J'ai dû installer Bundler pour que le mien fonctionne, j'avais une ancienne version système.

gem install bundler

0
répondu mchapman17 2015-12-02 05:21:32

comme mentionné ci-dessus cela a à voir avec le fait d'avoir deux arcs en rubis sur 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] ce que j'ai dû faire était tout simplement installer pg gem forcing x86_64 arc à utiliser avec cette commande:

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

N'oubliez pas d'avoir votre bash_profile up to date

ajouter le chemin de vos postgres, dans ce cas im en utilisant l'application Postgres ( OSX ) au lieu de brew ( https://postgresapp.com / ) par défaut c'est l'emplacement:

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

recharger bash avec

sudo vi ~/.bash_profile

après avoir fait cela, j'ai finalement pu installer avec succès pg gem

Espérons que cette aide!

0
répondu d1jhoni1b 2018-06-28 20:59:33

sur Mac vous pouvez essayer ceci (fonctionne pour moi): gem install pg -- with-pg-include= / Library/PostgreSQL / 9.5 / include Extraction: pg-1.0.0.gem (100)%) Construire des extensions natives avec: 'with-pg-include= / Library / PostgreSQL / 9.5 / include' Cela pourrait prendre un certain temps... Installation réussie pg-1.0.0 Documentation d'analyse pour pg-1.0.0 Installation de la documentation ri pour pg-1.0.0 Fait installer la documentation pour pg après 3 secondes 1 gem installé

(la présente partie) "/Bibliothèque/PostgreSQL/9.5/include" vous devez mettre votre Postgres chemin)

0
répondu Marcos Riveros 2018-07-24 00:45:34