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.

Arthur Yakovlev
fuente
1
¿Cómo instalaste PostgreSQL?
Stefan

Respuestas:

184

Solo haz esto

$ sudo apt-get install libpq-dev
Arthur Yakovlev
fuente
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

Phil
fuente
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
Karol
fuente
15

En los sistemas Fedora / RHEL, esto funcionó:

sudo yum install libpqxx-devel
nicolasochem
fuente
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

Coronel braiano
fuente
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

Jiemurat
fuente
5

Para Amazon Linux (AWS):

sudo yum install postgresql-devel

luego ejecuta tu comando de nuevo

Gaurav Ragtah
fuente
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
Justin Fortier
fuente
1
¡Ah! Excelente. La versión específica (9.6) también fue mi obstáculo en AMI.
DaveGauer
3

Para Alpine Linux , puede agregar libpq-fe.hcon:

apk add postgresql-dev
Alter Lagos
fuente
1

prueba esto:

sudo apt-get install libpq-dev
gem install pg 

¡Sería trabajo!

Javid Dadashkarimi
fuente
1

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

brew link --overwrite postgresql

Esto solucionó el problema para mí.

Ashkinas
fuente
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)

defcon
fuente
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!

JGutierrezC
fuente
¡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
rassom
fuente
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.

lxc
fuente