Estoy usando la versión previa Ruby on Rails 3.1. Me gusta usar PostgreSQL, pero el problema es instalar la pg
gema. 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?
Respuestas:
Parece que en Ubuntu ese encabezado es parte del
libpq-dev
paquete (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)):Intente instalar
libpq-dev
o su equivalente para su sistema operativo: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
fuente
durrantm@castleLinux2011:~/Dropbox_not_syncd/webs/3/linker$ gem install libpq-dev ERROR: Could not find a valid gem 'libpq-dev' (>= 0) in any repository durrantm@castleLinux2011:~/Dropbox_not_syncd/webs/3/linker$
apt-get install postgres-server-dev-{pg.version}
Su respuesta ya no funciona con postgresql 9.4 en Ubuntu 14.04 Consulte: stackoverflow.com/a/28837453/75194En macOS (anteriormente Mac OS X y OS X ), use Homebrew para instalar los encabezados adecuados:
y luego corriendo
Deberia trabajar.
Alternativamente, en lugar de instalar el conjunto
postgresql
, puedebrew install libpq
exportar lo correctoPATH
yPKG_CONFIG_PATH
como se explica en la sección 'Advertencias'fuente
brew install postgressql
corroARCHFLAGS="-arch x86_64" gem install pg
y funciona bien.brew install libpqxx
en Mac OSXlibpqxx
instalapostgresql
como dependencia, por lo que es esencialmente lo mismo quebrew install postgresql
postgresql
, puedebrew install libpq
exportar lo correctoPATH
yPKG_CONFIG_PATH
como se explica en la sección 'Advertencias'.También intenté hacerlo
gem install libpq-dev
, pero recibí este error:Sin embargo, descubrí que la instalación con
sudo apt-get
(que trato de evitar usar con Ruby on Rails) funcionó, es decirentonces pude hacer
sin problemas
fuente
libpq-dev
paquete Ubuntu / Debian / ...Podría resolver esto de otra manera. No encontré la biblioteca en mi sistema. Por lo tanto, lo instalé usando una aplicación del sitio web principal de PostgreSQL. En mi caso (OS X) encontré el archivo debajo
/Library/PostgreSQL/9.1/include/
una vez que finalizó 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:
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
fuente
export CONFIGURE_ARGS="with-pg-include=/usr/local/Cellar/postgresql/9.3.1/include/"
pg_*
secuencias de comandos en el $ PATH, así:ln -s /usr/pgsql-9.3/bin/p* /usr/local/bin
. Instalé postgres 9.3 así:yum install http://yum.postgresql.org/9.3/redhat/rhel-6-x86_64/pgdg-redhat93-9.3-1.noarch.rpm && yum install postgresql93 postgresql93-contrib postgresql93-server postgresql93-devel
gem install pg -- with-pg-include=/Library/PostgreSQL/9.1/include/
export CONFIGURE_ARGS="with-pg-config=/path/to/postgres/bin/pg_config"
. Sepg_config
llamará al ejecutable para obtener todas las opciones de compilador y vinculador requeridas; puede ejecutarlo usted mismo para verlas.Tuve éxito en CentOS 7.0.1406 ejecutando los siguientes comandos:
Alternativamente , puede configurar el paquete para que siempre se instale
pg
con estas opciones (útil para ejecutar el paquete en entornos de implementación),bundle config build.pg --with-pg-config=/usr/pgsql-9.4/bin/pg_config
fuente
Para CentOS 6.4,
¡funcionado bien!
fuente
sudo port install postgresql-devel
.Para que conste:
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):
fuente
/Applications/Postgres.app/Contents/Versions/10/bin/pg_config
En Mac OS X ejecute así:
***/path/to/pg_config***
es la ruta a pg_configfuente
sudo find / -name "pg_config"
, luegogem install pg -- --with-pg-config=/Library/PostgreSQL/9.4/bin/pg_config
usar la ruta que acabo de descubrir.En mi caso fue paquete
postgresql-server-dev-8.4
(estoy en Ubuntu 11.04 (Natty Narwhal), 64 bits).fuente
La respuesta correcta para los usuarios de Mac con Postgres.app es construir contra lo
libpq
proporcionado con ese paquete. Por ejemplo, con la versión 9.4 (actual a partir de este escrito), todo lo que necesita es:Esto mantendrá su
pg
gema sincronizada con exactamente la versión de PostgreSQL que haya instalado. Instalar algo de Homebrew es un desperdicio en este caso.fuente
Tuve el mismo problema en Amazon Linux. Pude encontrar el encabezado
libpq-fe.h
, pero de alguna manera no funcionó.Proviene de las diferentes versiones de los paquetes que se instalaron a través de los diferentes usuarios de la máquina. Se instalaron PostgreSQL 9.2 y PostgreSQL 9.3. 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 fue:
Fuente: Una guía casi idiota para instalar PostgreSQL 9.3, PostGIS 2.1 y pgRouting con Yum
fuente
Una respuesta más general para cualquier distribución basada en Debian (que incluye Ubuntu) es la siguiente. Primero, instale el
apt-file
paquete que se ejecuta como root:Esto le permite buscar paquetes que contengan un archivo. Luego, actualice su base de datos usando
(Esto se puede ejecutar como usuario normal). Luego, busque el encabezado que falta usando:
En mi máquina, esto da:
Ahí tienes!
fuente
Para MacOS sin instalar el servidor PostgreSQL:
fuente
En una Mac, lo resolví usando este código:
fuente
Estoy ejecutando Postgres.app en una Mac y tuve que
primero. Entonces
trabajó para mi.
fuente
Tuve el mismo problema en Mac OS, pero instalé la gema PostgreSQL fácilmente usando lo siguiente en un terminal:
(Primero instalé PostgreSQL con
brew install postgresql
).fuente
Encontré esta respuesta, y fue la única que funcionó para mí (Mac OS), después de investigar durante unos dos días:
Consulte la pregunta sobre desbordamiento de pila. No se puede encontrar la biblioteca de cliente de PostgreSQL (libpq) .
fuente
Recientemente actualicé a Mac OS X v10.10 (Yosemite) y estaba teniendo dificultades para construir la
pg
gema.El error reportado fue el típico:
Mi solución fue
gem uninstall pg
y despuésbundle update pg
de sustituir la gema con la última. Ejecuté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.fuente
En Ubuntu, instale el "libpq-dev" para deshacerse de este problema.
fuente
sudo apt-get install postgresql
anteslibpq-dev
En CentOS, instalé
libpq-dev package
usando el siguiente comandoLa ejecución
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
fuente
En FreeBSD (9.1) el paquete necesario es / usr / ports / database / postgresql-server * que, cuando está instalado, también instalará el archivo de encabezado requerido que hace que la instalación de gemas de "pg" falle. Esta respuesta aquí me ayudó a encontrar la solución, pero la diferencia en los nombres de los paquetes requirió un poco de búsqueda.
¡Esperemos que esto ayude a alguien a evitar rascarse la cabeza al buscar el paquete "-dev" en un sistema FreeBSD!
fuente
En Debian 7.0, 64 bits (Wheezy), simplemente ejecute:
Después de instalar con éxito libpq-dev, ejecute:
fuente
Bajo CentOS 6.5 (Squeeze) creé un archivo:
con contenido:
Tenga en cuenta que aquí debe configurar su ruta PostgreSQL con el archivo pg_config. Puedes encontrar esto con el comando:
Guarda el archivo:
e intente ejecutar su comando nuevamente.
Nota: Cada vez que cambie la configuración de Bash , cambiando la configuración de profile.d, debe volver a cargar Bash.
fuente
pg_*
secuencias de comandos en la trayectoria de este modo:ln -s /usr/pgsql-9.3/bin/p* /usr/local/bin
. Después de eso no necesité ningún script adicional o variables de entorno.La ubicación de
libpq-fe.h
depende de dónde esté su instalación de PostgreSQL (que depende de cómo la instaló). Uselocate
( http://en.wikipedia.org/wiki/Locate_%28Unix%29 ) para encontrar ellibpq-fe.h
archivo en su máquina. Si existe, estará en elinclude
directorio de su instalación de PostgreSQL.El
bin
directorio, que contienepg_config
, estará en el mismo directorio que elinclude
directorio. Como sugiere el error, use la opción --with-pg-config para instalar la gema:Tenga en cuenta que es posible que deba ejecutarlo
updatedb
si nunca lo ha usadolocate
o si no lo ha actualizado desde que instaló PostgreSQL.fuente
--
antes--with-pg-config=...
, obtengo un error: ERROR: al ejecutar gem ... (OptionParser :: InvalidOption) opción no válida: --with-pg-config = / usr / bin / pg_config)Finalmente resolví este problema, pero no utilicé los métodos descritos anteriormente.
Utilizando
brew install postgresql
, descubro que ya estaba instalado, pero no vinculado.Descubra dónde está instalado PostgreSQL y elimínelo,
Entonces
brew install postgresql
otra vez,brew link postgresql
gem install pg
fuente
Acabo de tener esto en OSX ejecutando brew y
[email protected]
.Mi solución fue esta:
fuente
Tuve este problema con Postgresql 9.6. Pude solucionarlo haciendo:
fuente
Encontré el mismo error con postgres instalado a través de asdf. Las soluciones pg-config no funcionaron para mí. En su lugar, tuve que localizar la carpeta de inclusión de postgres que contiene el archivo y ejecutar el comando con la
--with-pg-include
banderafuente
Para
AltLinux
el paquetepostgresqlx.x-devel
(en mi casopostgresql9.5-devel
) debe estar instalado:fuente
Resolví esto instalando el paquete 'postgresql-common'. Este paquete proporciona el
pg_config
binario que probablemente es lo que te faltaba.fuente