ruby on rails - proyecto - No se puede encontrar el encabezado ''libpq-fe.h cuando se intenta instalar pg gem
postgresql ruby on rails windows (30)
Estoy usando la versión previa de Ruby on Rails 3.1. Me gusta usar PostgreSQL, pero el problema es instalar la gema pg
. Me da el siguiente error:
$ 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
¿Cómo resuelvo este problema?
No se puede encontrar el encabezado libpq-fe.h
Tuve éxito en CentOS 7.0.1406 ejecutando los siguientes comandos:
~ % psql --version # => psql (PostgreSQL) 9.4.1
yum install libpqxx-devel
gem install pg -- --with-pg-config=/usr/pgsql-9.4/bin/pg_config
Alternativamente , puede configurar bundler para que siempre instale pg
con estas opciones (útil para ejecutar bundler en entornos de implementación),
-
bundle config build.pg --with-pg-config=/usr/pgsql-9.4/bin/pg_config
Acabo de tener esto en OSX ejecutando brew y [email protected]
.
Mi solución fue esta:
CONFIGURE_ARGS="with-pg-include=/usr/local/opt/[email protected]/include/" bundle install
Bajo CentOS 6.5 (Squeeze) creé un archivo:
$ sudo touch /etc/profile.d/psql.sh
con contenido:
pathmunge /usr/pgsql-9.3/bin
Tenga en cuenta que aquí debe configurar su ruta de PostgreSQL con el archivo pg_config. Puedes encontrar esto con el comando:
$ sudo find / -iname pg_config
Guarda el archivo:
$ sudo chmod +x /etc/profile.d/ruby.sh
e intenta ejecutar tu comando otra vez.
Nota: Cada vez que cambie la configuración de Bash , cambiando la configuración de profile.d, debe volver a cargar Bash.
En OS X 10.9 (Mavericks), brew-installed postgresql
, y luego tuve que rvm reinstall
mi Ruby. Ahora estoy feliz :)
En Debian 7.0, 64 bits (Wheezy), simplemente ejecute:
sudo apt-get install libpq-dev
Después de instalar con éxito libpq-dev, ejecute:
bundle install
En macOS (anteriormente Mac OS X y OS X ), use Homebrew para instalar los encabezados adecuados:
brew install postgresql
y luego corriendo
gem install pg
Deberia trabajar.
En CentOS, libpq-dev package
usando el siguiente comando
yum install postgresql-devel
La ejecución de gem install pg
devolvió el mismo error que " No pg_config... trying anyway. If building fails, please try again with --with-pg-config=/path/to/pg_config
".
Instalar la gema de la siguiente manera resolvió mi problema
gem install pg -- --with-pg-config=/usr/pgsql-x.x/bin/pg_config
En FreeBSD (9.1) el paquete necesario es / usr / ports / database / postgresql-server * que, cuando se instale, también instalará el archivo de encabezado requerido que hace que la instalación de gemas de "pg" falle. Esta respuesta me ayudó a encontrar la solución, pero la diferencia en los nombres de los paquetes requería un poco de búsqueda.
¡Esperamos que esto ayude a alguien a evitar un poco de rascarse la cabeza cuando busca el paquete "-dev" en un sistema FreeBSD!
En Mac OS X ejecuta así:
gem install pg -- --with-pg-config=***/path/to/pg_config***
***/path/to/pg_config***
es la ruta a pg_config
En Ubuntu, instale el "libpq-dev" para deshacerse de este problema.
sudo apt-get install libpq-dev
En mi caso, fue el paquete postgresql-server-dev-8.4
(Estoy en 11.04 (Natty Narwhal), 64 bits).
En una Mac, lo resolví usando este código:
gem install pg -v ''0.18.4'' -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.4/bin/pg_config
Encontré esta respuesta, y fue la única que funcionó para mí (Mac OS), después de investigar durante dos días:
$ 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...
Ver pregunta de desbordamiento de pila No se puede encontrar la biblioteca del cliente PostgreSQL (libpq) .
Estaba teniendo un problema similar, y esto me lo arregló:
gem install do_postgres -- --with-pgsql-server-dir=/Applications/Postgres.app/Contents/MacOS --with-pgsql-server-include=/Applications/Postgres.app/Contents/MacOS/include/server
Fuente:
Estoy ejecutando Postgres.app en una Mac y tuve que
export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/9.4/bin
primero. Entonces
bundle install
trabajó para mi.
Finalmente resolví este problema, pero no usé los métodos descritos anteriormente.
Al usar brew install postgresql
, descubro que ya se había instalado, pero no se había vinculado.
Averigüe dónde está instalado PostgreSQL y elimínelo,
Luego
brew install postgresql
nuevo,brew link postgresql
gem install pg
La respuesta correcta para los usuarios de Mac con Postgres.app es compilar contra el libpq
proporcionado con ese paquete. Por ejemplo, con la versión 9.4 (vigente a partir de este escrito), todo lo que necesita es:
export CONFIGURE_ARGS="with-pg-include=/Applications/Postgres.app/Contents/Versions/9.4/include"
gem install pg
Esto mantendrá su pg
gem sincronizada con exactamente la versión de PostgreSQL que ha instalado. Instalar algo de Homebrew es un desperdicio en este caso.
La ubicación de libpq-fe.h
depende de dónde se encuentre su instalación de PostgreSQL (que depende de cómo la instaló). Utilice locate
( http://en.wikipedia.org/wiki/Locate_%28Unix%29 ) para encontrar el archivo libpq-fe.h
en su máquina. Si existe, estará en el directorio de include
de su instalación de PostgreSQL.
$ locate libpq-fe.h
/Library/PostgreSQL/9.1/include/libpq-fe.h
El directorio bin
, que contiene pg_config
, estará en el mismo directorio que el directorio de include
. Como sugiere el error, use la opción --with-pg-config para instalar la gema:
$ gem install pg --with-pg-config="/Library/PostgreSQL/9.1/bin/pg_config"
Tenga en cuenta que es posible que deba ejecutar updatedb
si nunca ha utilizado locate
o si no ha actualizado desde la instalación de PostgreSQL.
Para AltLinux
el paquete postgresqlx.x-devel
(en mi caso postgresql9.5-devel
) debe estar instalado:
apt-get install postgresql9.5-devel
Para MacOS sin instalar el servidor PostgreSQL:
brew install libpq
gem install pg -- --with-pg-config="/usr/local/Cellar/libpq/9.6.6/bin/pg_config"
Parece que en Ubuntu ese encabezado es parte del paquete libpq-dev
(al menos en las siguientes versiones de Ubuntu: 11.04 (Natty Narwhal), 10.04 (Lucid Lynx), 11.10 (Oneiric Ocelot), 12.04 (Precise Pangolin), 14.04 ( Trusty Tahr) y 18.04 (Bionic Beaver)):
...
/usr/include/postgresql/libpq-fe.h
...
Así que intente instalar libpq-dev
o su equivalente para su sistema operativo:
- Para sistemas Ubuntu:
sudo apt-get install libpq-dev
- En los sistemas Red Hat Linux (RHEL):
yum install postgresql-devel
- Para Mac Homebrew :
brew install postgresql
- Para Mac MacPorts PostgreSQL:
gem install pg -- --with-pg-config=/opt/local/lib/postgresql[version number]/bin/pg_config
- Para OpenSuse :
zypper in postgresql-devel
- Para ArchLinux :
pacman -S postgresql-libs
Podría resolver esto de otra manera. No encontré la biblioteca en mi sistema. Así lo instalé usando una aplicación del sitio web principal de PostgreSQL. En mi caso (OS X) encontré el archivo en /Library/PostgreSQL/9.1/include/
una vez que /Library/PostgreSQL/9.1/include/
la instalación. También puede tener el archivo en otro lugar dependiendo de su sistema si ya tiene instalado PostgreSQL.
Gracias a este enlace sobre cómo agregar una ruta adicional para la instalación de gemas , podría señalar la gema a la biblioteca con este comando:
export CONFIGURE_ARGS="with-pg-include=/Library/PostgreSQL/9.1/include/"
gem install pg
Después de eso, funciona, porque ahora sabe dónde encontrar la biblioteca que falta. Simplemente reemplace la ruta con la ubicación correcta para su libpq-fe.h
Recientemente me actualicé a Mac OS X v10.10 (Yosemite) y estaba teniendo dificultades para construir la gema pg
.
El error reportado fue el típico:
Using config values from /usr/local/bin/pg_config
checking for libpq-fe.h... *** extconf.rb failed ***
Mi solución fue gem uninstall pg
y luego bundle update pg
para reemplazar la gema con la última. Hice la brew update; brew upgrade
brew update; brew upgrade
después de la instalación de Yosemite para obtener las últimas versiones de los paquetes que había instalado anteriormente.
Resolví esto instalando el paquete ''postgresql-common''. Este paquete proporciona el binario pg_config
que probablemente sea lo que te faltaba.
Solo para que conste:
La aplicación Ruby on Rails 4 en OS X con PostgresApp (en este caso se necesita la versión 0.17.1 - una especie de proyecto antiguo):
gem install pg -v ''0.17.1'' -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config
También intenté hacer gem install libpq-dev
, pero recibí este error:
Can''t find the ''libpq-fe.h header
*** extconf.rb failed ***
Sin embargo, encontré que la instalación con sudo apt-get
(que trato de evitar usar con Ruby on Rails) funcionó, es decir
sudo apt-get install libpq-dev
# or
apt-get install postgres-server-dev-{pg.version}
# for postgresql 9.4 on Ubuntu 14.04
entonces pude hacer
gem install pg
sin problemas
Tuve el mismo problema en Amazon Linux. Pude encontrar el encabezado libpq-fe.h
, pero de alguna manera no funcionó.
Provino de las diferentes versiones de los paquetes que se instalaron a través de los diferentes usuarios en la máquina. PostgreSQL 9.2 y PostgreSQL 9.3 fueron instalados. Por lo tanto, asegúrese de su versión de PostgreSQL antes de incluir las bibliotecas.
Para mí, la línea de comando mágica era:
sudo yum install postgresql93 postgresql93-server postgresql93-libs postgresql93-contrib postgresql93-devel
Fuente: Guía casi idiota para instalar PostgreSQL 9.3, PostGIS 2.1 y pgRouting con Yum
Tuve el mismo problema en Mac OS, pero instalé la gema PostgreSQL fácilmente usando lo siguiente en un terminal:
ARCHFLAGS="-arch x86_64" gem install pg
(Instalé PostgreSQL primero con brew install postgresql
.)
Una respuesta más general para cualquier distribución basada en Debian (que incluye Ubuntu) es la siguiente. Primero, instale el paquete apt-file
ejecutándose como root:
apt-get install apt-file
Esto le permite buscar paquetes que contengan un archivo. Luego, actualice su base de datos usando
apt-file update
(Esto se puede ejecutar como usuario normal). Luego, busca el encabezado faltante usando:
apt-file search libpq-fe.h
En mi máquina, esto da:
libpq-dev: /usr/include/postgresql/libpq-fe.h
postgres-xc-server-dev: /usr/include/postgres-xc/server/gtm/libpq-fe.h
¡Ahí tienes!