J'utilise la version précédente de Ruby on Rails 3.1. J'aime utiliser PostgreSQL, mais le problème est d'installer la gemme pg
. 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 résoudre ce problème?
Il semble que dans Ubuntu cet en-tête fait partie du paquet libpq-dev
(au moins dans les versions suivantes d’Ubuntu: 11.04 (Natty Narwhal), 10.04 (Lucid Lynx), 11.10 (Ocelot onirique), 12.04 (Pangolin précis), 14.04 (Trusty Tahr) et 18.04 (Bionic Beaver)):
...
/usr/include/postgresql/libpq-fe.h
...
Essayez donc d'installer libpq-dev
ou son équivalent pour votre système d'exploitation:
Sudo apt-get install libpq-dev
yum install postgresql-devel
brew install postgresql
gem install pg -- --with-pg-config=/opt/local/lib/postgresql[version number]/bin/pg_config
zypper in postgresql-devel
pacman -S postgresql-libs
Sur macOS (précédemment Mac OS X et OS X), utilisez Homebrew pour installer les en-têtes appropriés:
brew install postgresql
puis en cours d'exécution
gem install pg
devrait marcher.
Sinon, au lieu d'installer l'intégralité de la postgresql
entière, vous pouvez brew install libpq
et exporter les PATH
et PKG_CONFIG_PATH
correctes, comme expliqué dans la section "Avertissements"
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 constaté que l’installation avec Sudo apt-get
(que j’essaie d’éviter d’utiliser Ruby on Rails) fonctionnait, 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'ai pu faire
gem install pg
sans problèmes.
Je pourrais résoudre cela d'une autre manière. Je n'ai pas trouvé 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, en fonction de votre système, si vous avez déjà installé PostgreSQL.
Grâce à ce lien sur comment ajouter un chemin supplémentaire pour l'installation de gem , je pourrais pointer le gem 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 par le bon emplacement pour votre libpq-fe.h
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 qu'il installe toujours pg
avec ces options (utile pour l'exécution de bundler dans des environnements de déploiement),
bundle config build.pg --with-pg-config=/usr/pgsql-9.4/bin/pg_config
Juste pour info:
Application Ruby on Rails 4 sous OS X avec PostgresApp (dans ce cas, la version 0.17.1 était nécessaire - une sorte de projet ancien):
gem install pg -v '0.17.1' -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config
Dans mon cas, c'était le paquetage postgresql-server-dev-8.4
(je suis sur Ubuntu 11.04 (Natty Narwhal), 64 bits).
Sous Mac OS X, procédez comme suit:
gem install pg -- --with-pg-config=***/path/to/pg_config***
***/path/to/pg_config***
est le chemin d'accès à pg_config
La bonne réponse pour les utilisateurs de Mac avec Postgres.app consiste à utiliser la variable libpq
fournie 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
Ceci maintiendra votre gemme pg
synchronisée avec exactement la version de PostgreSQL que vous avez installée. L'installation de quelque chose à partir de Homebrew est un gaspillage dans ce cas.
J'ai eu le même problème sur Amazon Linux. Je pouvais trouver l'en-tête libpq-fe.h
, mais cela n'a pas fonctionné.
Cela provenait des différentes versions des paquetages installés par les différents utilisateurs de la machine. PostgreSQL 9.2 et PostgreSQL 9.3 ont été installés. Assurez-vous donc de votre version de PostgreSQL avant d'inclure les bibliothèques.
Pour moi, la ligne de commande magique était la suivante:
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
Une réponse plus générale pour toute distribution basée sur Debian (incluant Ubuntu) est la suivante. Commencez par installer le package apt-file
exécuté en tant que root:
apt-get install apt-file
Cela vous permet de rechercher des paquets contenant un fichier. Ensuite, mettez à jour sa base de données en utilisant
apt-file update
(cela peut être exécuté en tant qu'utilisateur normal). Ensuite, recherchez l’en-tête manquant avec:
apt-file search libpq-fe.h
Sur ma machine, cela donne:
libpq-dev: /usr/include/postgresql/libpq-fe.h
postgres-xc-server-dev: /usr/include/postgres-xc/server/gtm/libpq-fe.h
Voilà !
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
J'ai trouvé cette réponse et c'est la seule qui a fonctionné pour moi (Mac OS) - après une recherche d'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 la question relative au débordement de pile Impossible de trouver la bibliothèque cliente PostgreSQL (libpq).
J'ai eu le même problème sur Mac OS, mais j'ai facilement installé le gem PostgreSQL en utilisant les éléments suivants dans un terminal:
ARCHFLAGS="-Arch x86_64" gem install pg
(J'ai d'abord installé PostgreSQL avec brew install postgresql
.)
J'ai récemment effectué une mise à niveau vers Mac OS X v10.10 (Yosemite) et je rencontrais des difficultés pour créer le joyau pg
.
L'erreur signalée était 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 ensuite bundle update pg
pour remplacer la gemme par la plus récente. J'ai exécuté brew update; brew upgrade
après l'installation de Yosemite pour obtenir les dernières versions des packages que j'avais précédemment installés.
Sur CentOS, j'ai installé libpq-dev package
en utilisant la commande ci-dessous
yum install postgresql-devel
L'exécution de gem install pg
a renvoyé la même erreur que "No pg_config... trying anyway. If building fails, please try again with --with-pg-config=/path/to/pg_config
".
L'installation de la gemme ci-dessous a résolu mon problème
gem install pg -- --with-pg-config=/usr/pgsql-x.x/bin/pg_config
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"
Je cours Postgres.app sur un Mac et je devais
export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.4/bin
premier. ensuite
bundle install
a travaillé pour moi.
Sur Ubuntu, installez "libpq-dev" pour résoudre ce problème.
Sudo apt-get install libpq-dev
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 le trouver avec la commande:
$ Sudo find / -iname pg_config
Enregistrez le fichier:
$ Sudo chmod +x /etc/profile.d/Ruby.sh
et essayez d'exécuter à nouveau votre commande.
Remarque: chaque fois que vous modifiez le paramètre Bash configuration - en modifiant la configuration de profile.d -, vous devez recharger Bash.
Sur Debian 7.0, 64 bits (Wheezy), exécutez simplement:
Sudo apt-get install libpq-dev
Après avoir installé libpq-dev avec succès, lancez:
bundle install
L'emplacement de libpq-fe.h
dépend de l'emplacement d'installation de PostgreSQL (ce qui dépend de la manière dont vous l'avez installé). Utilisez locate
( http://en.wikipedia.org/wiki/Locate_%28Unix%29 ) pour rechercher le fichier libpq-fe.h
sur votre ordinateur. S'il existe, il se trouvera dans le répertoire include
de votre installation PostgreSQL.
$ locate libpq-fe.h
/Library/PostgreSQL/9.1/include/libpq-fe.h
Le répertoire bin
, qui contient pg_config
, sera dans le même répertoire que le répertoire include
. Comme le suggère l'erreur, utilisez l'option --with-pg-config pour installer la gemme:
$ gem install pg --with-pg-config="/Library/PostgreSQL/9.1/bin/pg_config"
Notez que vous devrez peut-être exécuter updatedb
si vous n'avez jamais utilisé locate
ou si vous n'avez pas mis à jour depuis l'installation de PostgreSQL.
Je viens d'avoir cela sur OSX en cours d'exécution brassée et [email protected]
.
Ma solution était la suivante:
CONFIGURE_ARGS="with-pg-include=/usr/local/opt/[email protected]/include/" bundle install
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 a déjà été installé, mais pas lié.
Découvrez où PostgreSQL est installé et supprimez-le,
Puis brew install postgresql
encore,
brew link postgresql
gem install pg
Sous FreeBSD (9.1), le paquet nécessaire est/usr/ports/database/postgresql-server * qui, une fois installé, installera également le fichier d’en-tête requis qui empêche l’installation gem de "pg". Cette réponse m'a aidé à trouver la solution, mais la différence entre les noms de paquets a nécessité un peu de recherche.
J'espère que cela aidera quelqu'un à éviter un peu de maux de tête lors de la recherche du paquet "-dev" sur un système FreeBSD!
Pour AltLinux
, le package postgresqlx.x-devel
(dans mon cas, postgresql9.5-devel
) doit être installé:
apt-get install postgresql9.5-devel
J'ai eu ce problème avec Postgresql 9.6. J'ai pu le réparer en faisant:
brew upgrade [email protected]
brew link [email protected] --force
gem install pg
J'avais un problème similaire, et cela l'a résolu pour moi:
gem install do_postgres -- --with-pgsql-server-dir=/Applications/Postgres.app/Contents/MacOS --with-pgsql-server-include=/Applications/Postgres.app/Contents/MacOS/include/server
La source:
Sur OS X 10.9 (Mavericks), je brew-installed postgresql
, puis je devais rvm reinstall
mon Ruby. Je suis heureux maintenant :)
J'ai résolu ceci en installant le paquetage 'postgresql-common'. Ce paquet fournit le binaire pg_config
qui est probablement ce qu'il vous manquait.
Sous OS X et MacPorts le paquetage -devel
pour PostgreSQL n'est plus requis. L'installation de la gemme pg
fonctionne comme suit:
~ > Sudo port install postgresql-devel
...
Error: postgresql-devel has been replaced by postgresql91; please install that port instead
~ > gem install pg -v '0.17.1' -- --with-pg-config=/opt/local/lib/postgresql95/bin/pg_config
Voir aussi ce post .
J'ai rencontré la même erreur avec postgres installé via asdf. Les solutions pg-config ne fonctionnaient pas pour moi. Au lieu de cela, j'ai dû localiser le dossier d'inclusion postgres contenant le fichier et exécuter la commande avec l'indicateur --with-pg-include
gem install pg -- --with-pg-include=/<path>/.asdf/installs/postgres/<version>/include
Sur Arch Linux, vous devrez installer postgresql-libs :
Sudo pacman -Syu postgresql-libs
Pour Mac OS X, installez simplement https://postgresapp.com/ et suivez les étapes pour la section de ligne de commande et Ruby
Sudo mkdir -p /etc/paths.d &&
echo /Applications/Postgres.app/Contents/Versions/latest/bin | Sudo tee /etc/paths.d/postgresapp
Ensuite
Sudo ARCHFLAGS="-Arch x86_64" gem install pg
Étape 1) Assurez-vous que postgress est installé sur votre système (s'il est déjà installé et que vous pouvez exécuter le serveur postgress sur votre ordinateur, passez à l'étape (2).
apt-get install postgresql postgresql-contrib (sol - fatal error: libpq-fe.h: No such file or directory)
Sudo apt-get install Ruby-dev (required to install postgress below)
Sudo gem install pg
Sudo service postgresql restart
Étape 2) Certains fichiers c ++ tentent d’accéder directement à libpq-fe.h
et ne peuvent pas être trouvés. Nous devons donc rechercher manuellement chacun de ces fichiers et remplacer libpq-fe.h
par postgresql/libpq-fe.h
La commande permettant de rechercher toutes les occurrences de libpq-fe.h
dans tous les répertoires et sous-répertoires est grep -rnw ./ -e 'libpq-fe.h'
3) Accédez à Tous les fichiers répertoriés par la commande exécutée à l’étape 2 et modifiez manuellement libpq-fe.h
avec postgresql/libpq-fe.h
.
Seulement désinstaller (sudo apt-get purge) libpq-dev et le ré-installer a fonctionné pour moi.
Ma solution pour Fedora 30:
Sudo dnf install /usr/include/libpq-fe.h