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?
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"
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.
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.
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
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
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
dans mon cas, c'était le paquet postgresql-server-dev-8.4
(je suis sur Ubuntu 11.04 (Natty Narwhal), 64 bits).
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
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.
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
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à !
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
.)
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) .
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.
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
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
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.
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"
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!
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.
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.
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é.
-
Découvrez où PostgreSQL est installé, et supprimez-le,
-
puis
brew install postgresql
à nouveau, -
brew link postgresql
-
gem install pg
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
sur Ubuntu, installez le" libpq-dev " pour vous débarrasser de ce problème.
sudo apt-get install libpq-dev
pour AltLinux
le paquet postgresqlx.x-devel
(dans mon cas postgresql9.5-devel
) doit être installé:
apt-get install postgresql9.5-devel
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é.
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: