ruby-on-rails can - Impossible de trouver l'en-tête 'libpq-fe.h en essayant d'installer pg gem




find the (25)

J'ai finalement résolu ce problème, mais ne pas 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é.

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

  2. Puis brew install postgresql nouveau brew install postgresql ,

  3. brew link postgresql

  4. gem install pg

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


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 résolu cela en installant le paquet 'postgresql-common'. Ce paquet fournit le binaire pg_config qui est probablement ce qui vous manquait.


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

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

apt-get install postgresql9.5-devel

J'avais un problème similaire, et cela m'a arrangé:

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:

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


La bonne réponse pour les utilisateurs de Mac avec Postgres.app est de construire contre la libpq fournie 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.


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


Pour CentOS 6.4,

yum install postgresql-devel
gem install pg

a bien fonctionné!


Sur CentOS, j'ai installé le libpq-dev package utilisant la commande ci-dessous

yum install postgresql-devel

L'exécution de gem install pg No pg_config... trying anyway. If building fails, please try again with --with-pg-config=/path/to/pg_config 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 comme ci-dessous a résolu mon problème

gem install pg -- --with-pg-config=/usr/pgsql-x.x/bin/pg_config

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

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.


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 la façon d'ajouter un chemin supplémentaire pour l'installation de gem , je pourrais diriger 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


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

...
/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 les systèmes Red Hat Linux (RHEL): 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

Je l'ai juste eu sur OSX en cours d'exécution brassage et [email protected] .

Ma solution était la suivante:

CONFIGURE_ARGS="with-pg-include=/usr/local/opt/[email protected]/include/" bundle install

Sur FreeBSD (9.1), le paquetage requis est / usr / ports / base de données / postgresql-server * qui, lorsqu'il est installé, installera également le fichier d'en-tête requis qui fait échouer l'installation gem de "pg". Cette réponse m'a aidé à trouver la solution, mais la différence dans les noms de paquets nécessitait un peu de recherche.

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


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

ARCHFLAGS="-arch x86_64" gem install pg

(J'ai d'abord installé PostgreSQL avec l' brew install postgresql .)


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, 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 votre commande à nouveau.

Note: Chaque fois que vous changez la configuration de Bash - en changeant la configuration profile.d - vous devez recharger Bash.


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é, à savoir

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.


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"

L'emplacement de libpq-fe.h dépend de l'emplacement de votre installation de PostgreSQL (ce qui dépend de la façon dont vous l'avez installé). Utilisez 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 de 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 l'erreur le suggère, utilisez l'option --with-pg-config pour installer la gem:

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


J'ai eu le même problème sur Amazon Linux. Je pourrais trouver l'en-tête libpq-fe.h , mais de toute façon cela n'a pas fonctionné.

Il vient 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 de 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


Sur OS X 10.9 (Mavericks), j'ai brew-installed postgresql , et j'ai ensuite dû rvm reinstall mon Ruby. Je suis heureux maintenant :)


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


Si vous utilisez :remote => true dans vos liens ou formulaires, vous feriez:

respond_to do |format|
  format.js { #Do some stuff }

Vous pouvez également vérifier avant le bloc respond_to en appelant request.xhr? .





ruby-on-rails ruby-on-rails-3 postgresql rails-postgresql pg