Question Impossible de trouver l'en-tête 'libpq-fe.h en essayant d'installer pg gem


J'utilise la version pré Ruby on Rails 3.1. J'aime utiliser PostgreSQL, mais le problème est d'installer le pg gemme. Cela 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 puis-je résoudre ce problème?


622
2018-05-18 06:11


origine


Réponses:


Il semble que dans Ubuntu cet en-tête fasse partie de la libpq-dev paquet (au moins dans les versions d'Ubuntu suivantes: 11.04 (Natty Narwhal), 10.04 (Lucid Lynx), 11.10 (Ocelot Oneiric), 12.04 (Pangolin précis), 14.04 (Trusty Tahr) et 18.04 (Bionic Beaver):

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

Alors essayez d'installer libpq-dev ou son équivalent pour votre système d'exploitation:

  • Pour les systèmes Ubuntu: sudo apt-get install libpq-dev
  • Sur Red Hat Linux (RHEL) systèmes: yum install postgresql-devel
  • Pour Mac Homebrew: brew install postgresql
  • Pour 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

996
2017-12-09 22:30



Sur macOS (précédemment Mac OS X et OS X), utilisation Homebrew installer les en-têtes appropriés:

brew install postgresql

puis en cours d'exécution

gem install pg

devrait marcher.


126
2018-01-16 23:34



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) travaillé, c'est-à-dire

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

alors j'étais capable de faire

gem install pg

sans problèmes.


111
2018-01-12 06:52



Je pourrais résoudre cela d'une autre manière. Je n'ai pas trouvé la bibliothèque sur mon système. Je l'ai donc 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 en fonction de votre système si vous avez déjà installé PostgreSQL.

Merci à ce lien sur comment ajouter un chemin supplémentaire pour l'installation de gem, Je pourrais pointer la gemme vers la lib avec cette commande:

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

Après cela, cela fonctionne, car il sait maintenant où trouver la bibliothèque manquante. Il suffit de remplacer le chemin avec le bon emplacement pour votre libpq-fe.h


40
2018-03-02 01:51



Impossible de trouver l'en-tête libpq-fe.h

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 les environnements de déploiement),

  • bundle config build.pg --with-pg-config=/usr/pgsql-9.4/bin/pg_config

23
2018-04-10 09:13



Pour CentOS 6.4,

yum install postgresql-devel
gem install pg

a bien fonctionné!


20
2018-01-08 09:36



Sur Mac OS X, lancez comme ceci:

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

***/path/to/pg_config*** est le chemin vers pg_config


12
2017-07-18 18:18



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


12
2017-10-19 16:53



Juste pour info:

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

gem install pg -v '0.17.1' -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config

12
2018-01-30 07:47



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 (actuelle à ce jour), 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 gardera votre pg gem en synchronisation avec exactement la version de PostgreSQL que vous avez installée. Installer quelque chose de Homebrew est une perte dans ce cas.


9
2017-08-29 21:16