Je ne trouve pas le libpq-fe.en-tête h lors de l'installation de pg gem

j'utilise la pré-version Ruby on Rails 3.1. J'aime utiliser PostgreSQL, mais le problème est d'installer le pg gem. Il me donne l'erreur suivante:

$ gem install pg
Building native extensions.  This could take a while...
ERROR:  Error installing pg:
    ERROR: Failed to build gem native extension.

        /home/u/.rvm/rubies/ruby-1.9.2-p0/bin/ruby extconf.rb
checking for pg_config... no
No pg_config... trying anyway. If building fails, please try again with
 --with-pg-config=/path/to/pg_config
checking for libpq-fe.h... no
Can't find the 'libpq-fe.h header
*** 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=/home/u/.rvm/rubies/ruby-1.9.2-p0/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


Gem files will remain installed in /home/u/.rvm/gems/ruby-1.9.2-p0/gems/pg-0.11.0 for inspection.
Results logged to /home/u/.rvm/gems/ruby-1.9.2-p0/gems/pg-0.11.0/ext/gem_make.out

comment résoudre ce problème?

637
demandé sur Victor Yarema 2011-05-18 10:11:09

30 réponses

il ressemble à Ubuntu que l'en-tête fait partie du libpq-dev paquet (au moins dans les versions Ubuntu suivantes: 11.04 (Natty Narwhal), 10.04 (Lynx lucide), 11.10 (Ocelot onirique), 12.04 (Pangolin précis), 14.04 (Trusty Tahr) et 18.04 (Castor bionique)):

...
/usr/include/postgresql/libpq-fe.h
...

essayez donc d'installer libpq-dev ou son équivalent pour votre OS:

  • pour les systèmes Ubuntu: sudo apt-get install libpq-dev
  • On Red Hat Linux (RHEL) systems: yum install postgresql-devel
  • For Mac Homebrew : brew install postgresql
  • For Mac MacPorts PostgreSQL: gem install pg -- --with-pg-config=/opt/local/lib/postgresql[version number]/bin/pg_config
  • pour OpenSuse : zypper in postgresql-devel
  • Pour ArchLinux : pacman -S postgresql-libs 1519290920"
1019
répondu mu is too short 2018-07-27 11:18:01

sur macOS (anciennement Mac OS X et OS X ), utilisez Homebrew pour installer les en-têtes appropriés:

brew install postgresql

et puis en cours d'exécution

gem install pg

devrait marcher.

131
répondu iwasrobbed 2018-03-23 10:05:35

j'avais aussi essayé de faire gem install libpq-dev , mais j'ai reçu cette erreur:

Can't find the 'libpq-fe.h header
*** extconf.rb failed ***

cependant j'ai trouvé que l'installation avec sudo apt-get (que j'essaie d'éviter d'utiliser avec Ruby on Rails) a fonctionné, i.e.

sudo apt-get install libpq-dev
# or
apt-get install postgres-server-dev-{pg.version}
# for postgresql 9.4 on Ubuntu 14.04

ensuite, j'ai été capable de faire

gem install pg

sans problème.

111
répondu Michael Durrant 2016-10-21 17:09:01

je pourrais résoudre ça d'une autre manière. Je n'ai pas trouver la bibliothèque sur mon système. Ainsi je l'ai installé en utilisant une application du site principal de PostgreSQL. Dans mon cas (OS X) j'ai trouvé le fichier sous /Library/PostgreSQL/9.1/include/ une fois l'installation terminée. Vous pouvez également avoir le fichier ailleurs selon votre système Si vous avez déjà PostgreSQL installé.

grâce à ce lien sur comment ajouter un chemin supplémentaire pour l'installation de gem , je pourrais pointer le gem à la lib avec cette commande:

export CONFIGURE_ARGS="with-pg-include=/Library/PostgreSQL/9.1/include/"
gem install pg

Après, ça fonctionne, parce qu'il sait maintenant où trouver la bibliothèque manquante. Il suffit de remplacer le chemin par le bon emplacement pour votre libpq-fe.h

40
répondu David Pelaez 2016-10-21 17:07:55

ne trouve pas la libpq-fe.h en-tête

j'ai eu du succès sur CentOS 7.0.1406 en exécutant les commandes suivantes:

~ % psql --version # => psql (PostgreSQL) 9.4.1
yum install libpqxx-devel
gem install pg -- --with-pg-config=/usr/pgsql-9.4/bin/pg_config

alternativement , vous pouvez configurer bundler pour toujours installer pg avec ces options (utile pour exécuter bundler dans des environnements de déploiement),

  • bundle config build.pg --with-pg-config=/usr/pgsql-9.4/bin/pg_config
24
répondu lfender6445 2016-07-08 05:47:47

Pour CentOS 6.4,

yum install postgresql-devel
gem install pg

a bien fonctionné!

21
répondu Arivarasan L 2016-10-21 17:10:01

sur Mac OS X exécuter comme ceci:

gem install pg -- --with-pg-config=***/path/to/pg_config***

***/path/to/pg_config*** est le chemin d'accès à pg_config

12
répondu Jiemurat 2014-01-08 09:36:16

dans mon cas, c'était le paquet postgresql-server-dev-8.4 (je suis sur Ubuntu 11.04 (Natty Narwhal), 64 bits).

12
répondu Johann 2016-10-21 16:59:38

Juste pour l'enregistrement de:

Ruby on Rails 4 application dans OS X avec PostgresApp (dans ce cas - ci 0.17.1 version nécessaire- sorte d'un vieux projet):

gem install pg -v '0.17.1' -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config
12
répondu pablomarti 2016-10-21 17:26:38

la bonne réponse pour les utilisateurs Mac avec Postgres.app est de construire contre le libpq fourni avec ce paquet. Par exemple, avec la version 9.4 (à jour au moment de l'écriture), tout ce dont vous avez besoin est:

export CONFIGURE_ARGS="with-pg-include=/Applications/Postgres.app/Contents/Versions/9.4/include"
gem install pg

cela maintiendra votre pg gem en phase avec exactement la version de PostgreSQL que vous avez installé. Installer quelque chose de chez Homebrew est un gaspillage dans ce cas.

9
répondu jelder 2016-10-21 17:20:23

j'ai eu le même problème sur Amazon Linux. J'ai pu trouver l'en-tête libpq-fe.h , mais ça n'a pas marché.

il provient des différentes versions des paquets qui ont été installés par les différents utilisateurs sur la machine. PostgreSQL 9.2 et PostgreSQL 9.3 ont été installés. Donc, assurez-vous de votre version PostgreSQL avant d'inclure les bibliothèques.

pour moi, la ligne de commande magique était:

sudo yum install postgresql93 postgresql93-server postgresql93-libs postgresql93-contrib postgresql93-devel

Source: un guide presque idiot pour installer PostgreSQL 9.3, PostGIS 2.1 et pgRouting avec Yum

8
répondu Fab V. 2016-10-21 17:24:33

voici une réponse plus générale pour toute distribution basée sur Debian (qui inclut Ubuntu). Tout d'abord, installez le paquet apt-file tournant en root:

apt-get install apt-file

Cela vous permet de rechercher des paquets contenant un fichier. Puis, mettre à jour sa base de données en utilisant

apt-file update

(cela peut être exécuté comme utilisateur normal). Ensuite, cherchez l'en-tête manquant en utilisant:

apt-file search libpq-fe.h

sur ma machine, ça donne:

libpq-dev: /usr/include/postgresql/libpq-fe.h
postgres-xc-server-dev: /usr/include/postgres-xc/server/gtm/libpq-fe.h

voilà !

6
répondu Vincent Fourmond 2013-08-29 21:16:01

j'ai eu le même problème sur Mac OS, mais j'ai installé le gem PostgreSQL facilement en utilisant ce qui suit dans un terminal:

ARCHFLAGS="-arch x86_64" gem install pg

(j'ai installé PostgreSQL en premier avec brew install postgresql .)

4
répondu rassom 2016-10-21 17:15:35

j'ai trouvé cette réponse, et il était le seul qui a travaillé pour moi (Mac OS) - après des recherches pendant environ deux jours:

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

Voir Débordement de Pile question impossible de trouver le client PostgreSQL (bibliothèque libpq) .

4
répondu Cynthia Sanchez 2017-05-23 12:34:54

j'ai récemment mis à jour en Mac OS X v10.10 (Yosemite) et avait de la difficulté à construire le pg gem.

L'erreur signalée est typique:

Using config values from /usr/local/bin/pg_config
checking for libpq-fe.h... *** extconf.rb failed ***

ma solution était de gem uninstall pg et puis bundle update pg pour remplacer le gem avec la dernière. J'ai lancé brew update; brew upgrade après l'installation de Yosemite pour obtenir les dernières versions des paquets que j'avais installés auparavant.

4
répondu Martin Streicher 2016-10-21 17:18:59

sur un Mac, Je l'ai résolu en utilisant ce code:

gem install pg -v '0.18.4' -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.4/bin/pg_config
4
répondu Mario 2016-10-21 17:26:59

Sur CentOS,j'ai installé libpq-dev package ci-dessous à l'aide de la commande

yum install postgresql-devel

l'Exécution gem install pg a renvoyé le même message d'erreur " No pg_config... trying anyway. If building fails, please try again with --with-pg-config=/path/to/pg_config ".

installer le gem comme ci-dessous résolu mon problème

gem install pg -- --with-pg-config=/usr/pgsql-x.x/bin/pg_config
3
répondu user2086641 2015-01-21 09:26:14

je dirige Postgres.application sur un Mac et j'ai dû

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

d'abord. Puis

bundle install

travaillait pour moi.

3
répondu joh-mue 2015-02-17 14:16:11

pour MacOS sans installer le serveur PostgreSQL:

brew install libpq
gem install pg -- --with-pg-config="/usr/local/Cellar/libpq/9.6.6/bin/pg_config"
3
répondu Michael A. 2017-12-09 10:13:12

sous FreeBSD (9.1) le paquet nécessaire est /usr/ports/database/postgresql-server* qui une fois installé installera aussi le fichier d'en-tête requis qui fera échouer l'installation gem de" pg". Cette réponse m'a aidé à trouver la solution, mais la différence dans les noms de paquets besoin d'un peu de recherche.

J'espère que cela aidera quelqu'un à éviter de se gratter la tête lors de la recherche du paquet"- dev " sur un système FreeBSD!

2
répondu Claus Due 2013-09-06 00:27:26

Sur Debian 7.0, 64 bits (Wheezy), il suffit d'exécuter:

sudo apt-get install libpq-dev

après avoir installé libpq-dev, exécutez:

bundle install
2
répondu Eric Wu 2016-10-21 17:12:32

sous CentOS 6.5 (Squeeze) j'ai créé un fichier:

$ sudo touch /etc/profile.d/psql.sh

avec contenu:

pathmunge /usr/pgsql-9.3/bin

notez ici que vous devez définir votre chemin PostgreSQL avec le fichier pg_config. Vous pouvez trouver ceci avec la commande:

$ sudo find / -iname pg_config

Enregistrer le fichier:

$ sudo chmod +x /etc/profile.d/ruby.sh

et essayez d'exécuter votre commande à nouveau.

Note: chaque fois que vous changez le Bash configuration-modifier le profil.d configuration - vous devez recharger Bash.

2
répondu lucianosousa 2016-10-21 17:14:47

l'emplacement de libpq-fe.h dépend de l'emplacement de votre installation PostgreSQL (qui dépend de la façon dont vous l'avez installée). Use locate ( http://en.wikipedia.org/wiki/Locate_%28Unix%29 ) pour trouver le fichier libpq-fe.h sur votre machine. S'il existe, il sera dans le répertoire include de votre installation PostgreSQL.

$ locate libpq-fe.h
/Library/PostgreSQL/9.1/include/libpq-fe.h

Le bin répertoire qui contient pg_config , sera dans le même répertoire que le include répertoire. Comme le suggère l'erreur, utilisez l'option --with-pg-config pour installer le gem:

$ gem install pg --with-pg-config="/Library/PostgreSQL/9.1/bin/pg_config"

notez que vous pourriez avoir besoin d'exécuter updatedb si vous n'avez jamais utilisé locate ou si vous n'avez pas mis à jour depuis l'installation de PostgreSQL.

2
répondu akbrown 2016-10-21 17:21:13

j'ai finalement résolu ce problème, mais sans utiliser les méthodes décrites précédemment.

en utilisant brew install postgresql , je découvre qu'il avait déjà été installé, mais pas relié.

  1. Découvrez où PostgreSQL est installé, et supprimez-le,

  2. puis brew install postgresql à nouveau,

  3. brew link postgresql

  4. gem install pg

2
répondu Chile Yang 2016-10-21 17:28:25

je viens d'avoir ça sur OSX en cours d'exécution brew et postgres@9.4 .

ma solution était celle-ci:

CONFIGURE_ARGS="with-pg-include=/usr/local/opt/postgresql@9.4/include/" bundle install
2
répondu Nick 2017-04-04 21:17:09

sur Ubuntu, installez le" libpq-dev " pour vous débarrasser de ce problème.

sudo apt-get install libpq-dev
2
répondu Raju 2017-11-12 13:34:52

pour AltLinux le paquet postgresqlx.x-devel (dans mon cas postgresql9.5-devel ) doit être installé:

apt-get install postgresql9.5-devel
1
répondu Малъ Скрылевъ 2016-03-02 07:23:49

j'ai résolu cette installation du paquet 'postgresql-common'. Ce paquet fournit le binaire pg_config qui est très probablement ce que vous avez manqué.

1
répondu Fabrizio Regini 2016-10-21 17:09:37

j'avais un problème similaire, et cela m'a corrigé:

gem install do_postgres -- --with-pgsql-server-dir=/Applications/Postgres.app/Contents/MacOS --with-pgsql-server-include=/Applications/Postgres.app/Contents/MacOS/include/server

Source:

https://gist.github.com/oisin/6562181

1
répondu dunkles 2016-10-21 17:11:00

On OS X 10.9 (Mavericks), I brew-installed postgresql , et je devais ensuite rvm reinstall mon Rubis. Je suis heureux maintenant :)

1
répondu ether_joe 2016-10-21 17:16:33