rails install pg - No se puede encontrar el encabezado 'libpq-fe.h


86
$ sudo bundle install

Resultado

Fetching gem metadata from https://rubygems.org/...........
Fetching gem metadata from https://rubygems.org/..
Using rake (0.9.2.2) 
Using i18n (0.6.1) 
Using multi_json (1.3.6) 
Using activesupport (3.2.8) 
Using builder (3.0.4) 
Using activemodel (3.2.8) 
Using erubis (2.7.0) 
Using journey (1.0.4) 
Using rack (1.4.1) 
Using rack-cache (1.2) 
Using rack-test (0.6.2) 
Using hike (1.2.1) 
Using tilt (1.3.3) 
Using sprockets (2.1.3) 
Using actionpack (3.2.8) 
Using mime-types (1.19) 
Using polyglot (0.3.3) 
Using treetop (1.4.11) 
Using mail (2.4.4) 
Using actionmailer (3.2.8) 
Using arel (3.0.2) 
Using tzinfo (0.3.33) 
Using activerecord (3.2.8) 
Using activeresource (3.2.8) 
Using bundler (1.2.1) 
Using coffee-script-source (1.4.0) 
Using execjs (1.4.0) 
Using coffee-script (2.2.0) 
Using rack-ssl (1.3.2) 
Using json (1.7.5) 
Using rdoc (3.12) 
Using thor (0.16.0) 
Using railties (3.2.8) 
Using coffee-rails (3.2.2) 
Using jquery-rails (2.1.3) 
Installing pg (0.14.1) with native extensions 
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

        /usr/bin/ruby1.8 extconf.rb 
checking for pg_config... yes
Using config values from /usr/bin/pg_config
You need to install postgresql-server-dev-X.Y for building a server-side extension or libpq-dev for building a client-side application.
You need to install postgresql-server-dev-X.Y for building a server-side extension or libpq-dev for building a client-side application.
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=/usr/bin/ruby1.8
    --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 /var/lib/gems/1.8/gems/pg-0.14.1 for inspection.
Results logged to /var/lib/gems/1.8/gems/pg-0.14.1/ext/gem_make.out
An error occurred while installing pg (0.14.1), and Bundler cannot continue.
Make sure that `gem install pg -v '0.14.1'` succeeds before bundling.

Estoy hecho $ gem install pg -v '0.14.1'Pero esto no ayuda

Mi Gemfile

source 'https://rubygems.org'

#gem 'rails', '3.0.9'

#gem 'sqlite3', '1.3.6', :group => :development


gem 'rails', '3.2.8'

# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'


gem 'sqlite3'
gem 'pg'
gem 'taps'

gem 'json'

# Gems used only for assets and not required
# in production environments by default.
group :assets do
  gem 'sass-rails',   '~> 3.2.3'
  gem 'coffee-rails', '~> 3.2.1'

  # See https://github.com/sstephenson/execjs#readme for more supported runtimes
  # gem 'therubyracer', :platforms => :ruby

  gem 'uglifier', '>= 1.0.3'
end

gem 'jquery-rails'


#group :production do
  #gem 'pg'
#end
#group :development do
  #gem 'sqlite3'
#end

gem_make.out

/usr/bin/ruby1.8 extconf.rb 
checking for pg_config... yes
Using config values from /usr/bin/pg_config
You need to install postgresql-server-dev-X.Y for building a server-side extension or libpq-dev for building a client-side application.
You need to install postgresql-server-dev-X.Y for building a server-side extension or libpq-dev for building a client-side application.
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=/usr/bin/ruby1.8
    --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

mkmf.log

find_executable: checking for pg_config... -------------------- yes

--------------------

find_header: checking for libpq-fe.h... -------------------- no

"gcc -E -I. -I/usr/lib/ruby/1.8/i686-linux -I. -D_FORTIFY_SOURCE=2 -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2 -I -fno-strict-aliasing -g -g -O2  -fPIC    conftest.c -o conftest.i"
conftest.c:1:22: fatal error: libpq-fe.h: No such file or directory
compilation terminated.
checked program was:
/* begin */
1: #include <libpq-fe.h>
/* end */

--------------------

Ayudame por favor. Gracias.

Perdón por este texto. Tu publicación no tiene mucho contexto para explicar las secciones del código; explique su escenario más claramente.


1
¿Cómo instalaste PostgreSQL?
Stefan


Respuestas:


184

Solo haz esto

$ sudo apt-get install libpq-dev

11
Esto lo hizo por mí +1
Mladen Danic

Intenté hacer eso en Ubuntu 14.04 pero me dio esto: "libpq-dev: Depende: libpq5 (= 9.3.4-1) pero 9.3.10-0ubuntu0.14.04 se va a instalar"
Michael Lafayette

Pero luego, cuando intento instalar libpq5, dice "libpq5 ya es la versión más nueva".
Michael Lafayette

La versión de PostgreSQL es: psql --version: psql (PostgreSQL) 9.3.10. PostgreSQL 9.3.10 en x86_64-unknown-linux-gnu, compilado por gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2, 64 bits
Michael Lafayette

1
¡Brillante! La aplicación que estaba compilando también necesitaba que la ruta libpq-fe.hse especificara explícitamente, con --with-cflags=-I/usr/include/postgresql, en caso de que alguien más encontrara lo mismo.
Ben Johnson

75

Esto se responde en No se puede encontrar el encabezado 'libpq-fe.h al intentar instalar pg gem

Dependiendo de su entorno:

  • Mac: brew install postgresql
  • Ubuntu :sudo apt-get install libpq-dev
  • RHEL :yum install postgresql-devel

Entonces corre de gem install pgnuevo


1
Intenté hacer eso en Ubuntu 14.04 pero me dio esto: "libpq-dev: Depende: libpq5 (= 9.3.4-1) pero 9.3.10-0ubuntu0.14.04 se va a instalar"
Michael Lafayette

Pero luego, cuando intento instalar libpq5, dice "libpq5 ya es la versión más nueva". Lo mismo para PostgreSQL
Michael Lafayette

La versión de PostgreSQL es: psql --version: psql (PostgreSQL) 9.3.10. PostgreSQL 9.3.10 en x86_64-unknown-linux-gnu, compilado por gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2, 64 bits
Michael Lafayette

Hola Michael, no estoy seguro de poder responder tu pregunta porque no estoy familiarizado con Ubuntu, pero es posible que desees consultar la respuesta de Michael Durrant aquí: stackoverflow.com/a/8887801/2484523
Phil

Trabajó en Red Hat EL7. Me faltaba el archivo de encabezado durante una instalación de Perl de DBD :: Pg.
Marcus

18

Prueba esto:

  1. brew instalar postgresql
  2. gema instalar pg
  3. instalación del paquete

15

En los sistemas Fedora / RHEL, esto funcionó:

sudo yum install libpqxx-devel

Por qué dice: No hay ningún paquete libpqxx-devel disponible.
itsji10dra

1
yum list libpq * seguido de yum install libpqxx-
devel.x86_64

10
  • SO: Ubuntu
  • Programación de lenguaje: C

$ sudo apt-get install libpq-dev

En mi caso, estaba poniendo mal la ruta del directorio. Entonces:

Desde: gcc -o lib_version lib_version.c -I/usr/include/postgresql -lpq -std=c99

A: gcc -o lib_version lib_version.c -I /usr/include/postgresql -lpq -std=c99

GL


5

En Mac OS X, ejecute así:

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

***/path/to/pg_config*** es la ruta a pg_config


5

Para Amazon Linux (AWS):

sudo yum install postgresql-devel

luego ejecuta tu comando de nuevo


4

Tuve este problema con un servidor Jenkins en Amazon AMI.

$ pg_config | grep VERSION
VERSION = PostgreSQL 9.4.9

Luego, dependiendo de la versión que necesite, puede instalar la biblioteca requerida

$ sudo yum list postgresql* | grep devel
postgresql92-devel.x86_64               9.2.18-1.59.amzn1          @amzn-main
postgresql94-devel.x86_64               9.4.9-1.67.amzn1           @amzn-main
postgresql8-devel.x86_64                8.4.20-5.52.amzn1          amzn-main
postgresql93-devel.x86_64               9.3.14-1.62.amzn1          amzn-main
postgresql95-devel.x86_64               9.5.4-1.71.amzn1           amzn-main

Entonces puede instalar la versión correspondiente, en mi caso para la versión 9.4:

sudo yum install postgresql94-devel

1
¡Ah! Excelente. La versión específica (9.6) también fue mi obstáculo en AMI.
DaveGauer



1

En mac, asegúrese de que su postgres esté vinculado. Puedes hacerlo por

brew link --overwrite postgresql

Esto solucionó el problema para mí.


1

brew install postgresql trabajó para mi.

La instalación de postgresql estaba dando otro error

Error: The following directories are not writable by your user: /usr/local/lib/pkgconfig /usr/local/share/info /usr/local/share/man/man3

Este error se solucionó dando acceso a los directorios mencionados al usuario actual

sudo chown -R $(whoami) (path)


1

Esto me estaba sucediendo usando capistrano mientras implementaba mi aplicación en una distribución centos7. Aparentemente, gem requiere algunos archivos de encabezado que se pueden resolver instalando el paquete de desarrollo correcto.

Lo arreglé ejecutándolo sudo yum search postgres | grep devely encontré el paquete correcto para mi instalación de postgres, que era 10.

Entonces simplemente corre sudo yum install postgresql10-devel, ¡y eureka!


¡Salvaste mi día! ¡Encontrar la versión de desarrollo correcta realmente ayuda!
HoangLM

0

Esto funcionó para mí:

sudo gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.4/bin/pg_config

0

Yo uso Ubuntu-16. Y utilizo el método que se muestra aquí: https://www.postgresql.org/download/linux/ubuntu/ para instalar postgresql-9.6; Y "sudo apt-get install libpq-dev"solía instalar devlib, pero todavía no funciona. Entonces utilizo el método lnpara establecer un enlace suave, aquí está sudo ln -s /usr/include/postgresql/libpq-fe.h /usr/include/:; sudo ln -s /usr/include/postgresql/postgres_ext.h /usr/include/ Y por fin soluciono el problema.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.