¿Cómo instalar la gema pg de PostgreSQL en Ubuntu?


292

Estoy tratando de instalar la gema pg de PostgreSQL para Ruby.

Emití el siguiente comando:

gem install pg

Instalé Ruby 1.9.2 usando RVM.

El comando anterior me muestra el siguiente error.

El error es:

Building native extensions.  This could take a while...

ERROR:  Error installing pg:

ERROR: Failed to build gem native extension.

/home/User/.rvm/rubies/ruby-1.9.2-preview3/bin/ruby extconf.rb

checking for pg_config... yes
checking for libpq-fe.h... yes
checking for libpq/libpq-fs.h... yes
checking for PQconnectdb() in -lpq... no
checking for PQconnectdb() in -llibpq... no
checking for PQconnectdb() in -lms/libpq... no
Can't find the PostgreSQL client library (libpq)

*** 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/User/.rvm/rubies/ruby-1.9.2-preview3/bin/ruby
 --with-pg
 --without-pg
 --with-pg-config
 --without-pg-config
 --with-pg-dir
 --without-pg-dir
 --with-pg-include
 --without-pg-include=${pg-dir}/include
 --with-pg-lib
 --without-pg-lib=${pg-dir}/lib
 --enable-static-build
 --disable-static-build
 --with-pqlib
 --without-pqlib
 --with-libpqlib
 --without-libpqlib
 --with-ms/libpqlib
 --without-ms/libpqlib

Gem files will remain installed in /home/user/.rvm/gems/ruby-1.9.2-preview3/gems/pg-0.9.0 for inspection.

Results logged to /home/user/.rvm/gems/ruby-1.9.2-preview3/gems/pg-0.9.0/ext/gem_make.out

No se cual es el error ...


1
apt install postgresql-server-dev-allpara Ubuntu 18.04.
Richard Peck

Respuestas:


678

Necesita instalar el paquete de desarrollo de postgreSQL con el encabezado de PostgreSQL

sudo apt-get install libpq-dev

Lo hice según su sugerencia ... para obtener el siguiente Necesito obtener 0B de archivos. Después de desempacar 5378kB serán liberados. ¿Quieres continuar? [S / n /?] S Escribiendo información de estado extendida ... Hecho (Leyendo la base de datos ... 166183 archivos y directorios actualmente instalados.) Eliminando bisonte ... Eliminando libnss3-dev ... Eliminando libnspr4-dev ... Eliminando libqt4-core ... Eliminando libqt4-test ... Eliminando libsqlite3-dev ... Procesando desencadenantes para man-db ..
palani

3
Para aquellos realmente nuevos en Ubuntu como yo, pero realmente nuevo uso sudo apt-get install aptitudeprimero :)
Haris Krajina

1
Probé todo tipo de combinaciones. incluso después de reinstalar postgres y libpq. sin suerte ... sigue siendo el mismo problema
Krishnaprasad Varma

55
Para las distribuciones con sabor a Cent / RedHat, el paquete que querrás esyum install postgresql-devel
Kyril, el

1
Tengo la sensación de que esto puede no estar funcionando para algunas personas debido a sus versiones de Ubuntu. Esto me falla el 13.04 con Postgres 9.1
Rebs

40

Después de leer y jugar durante 2 días, y de probar muchas cosas que se encuentran en otras notas, la siguiente línea fue la cura para mí en Ubuntu Lucid 10.04 mezclado con algunos paquetes Maverick y RVM (ruby 1.9.2-p290, rvm 1.10.2 rubygems 1.8.15, rieles 3.0.1, postgres 8.4.10):

gem install pg  --   --with-pg-lib=/usr/lib   

el resultado:

Building native extensions.  This could take a while...  
Successfully installed pg-0.13.1  
1 gem installed  
Installing ri documentation for pg-0.13.1...  
Installing RDoc documentation for pg-0.13.1...  

{¡sí, finalmente éxito}! Tenga en cuenta que el resultado de ejecutar pg_config carece del elemento -lpq en la variable LIBS en mi instalación de Ubuntu / Postresql.

y ¿por qué el cambio de pq a pg en ciertos lugares - confuso para novato

Lo que todavía no entiendo es el doble conjunto de - y - con (opción, pero de todos modos estoy mucho más allá de mi profundidad


2
el '-' se usa comúnmente para separar los parámetros del primer comando del segundo, en este caso, el script de configuración del extmod
Timothy Meade

1
Gracias. Tu solución fue perfecta.
Sid

Muchas gracias por compartir esta solución. Estuve atrapado en esto por un día. Me alegro de haber encontrado esta publicación.
whizcreed

30

Estoy en Ubuntu 12.10 y ejecuto este comando:

apt-get install libpq-dev

me ayudó - después de eso ejecuté gem install pg -v "0.14.1", y todo bien ahora



25

En Ubuntu esto funciona para mí, espero ayudarte:

sudo apt-get install libpq-dev

y

gem install pg  --   --with-pg-lib=/usr/lib 

24

Instalar libpq-dev no funcionó para mí. También necesitaba instalar build-essential

sudo apt-get install libpq-dev build-essential

16

Solución simple para usuarios de ubuntu ...

Primero desinstale todos los paquetes de postgres, luego ejecute estos comandos ...

sudo apt-get install postgresql
sudo apt-get install postgresql-client libpq5 libpq-dev

# for rvm (single user)
mv ~/.rvm/usr/lib ~/.rvm/usr/lib_rvm 

# for rvm (multi-user)
mv /usr/local/rvm/usr/lib /usr/local/rvm/usr/lib_rvm

gem install pg  --   --with-pg-lib=/usr/lib

Luego ejecute 'paquete de instalación'. Todo estará bien. ¡Tenga un buen día!


1
Si la gente tiene curiosidad sobre cómo eliminar todos los paquetes de postgres, sudo apt-get remove --purge postgresql postgresql-9.3 (o cualquier versión de postgres que tenga).
Tommyixi

9

Para los usuarios de .RVM será mejor:

rvmsudo gem install pg -- --with-pg-lib=/usr/lib 

funcionó para mí (después de que vi la versión jdupont)


7

Si tiene instalado libpq-dev y todavía tiene este problema, es probable que se deba a versiones conflictivas de libssl y amigos de OpenSSL: la versión del sistema Ubuntu en / usr / lib (contra la cual se construye libpq) y una segunda versión RVM instalada en $ HOME / .rvm / usr / lib (o / usr / local / rvm / usr / lib si es una instalación del sistema). Puede verificar esto renombrando temporalmente $ HOME / .rvm / usr / lib y ver si funciona "gem install pg".

Para resolver el problema, haga que rvm reconstruya utilizando las bibliotecas OpenSSL del sistema (puede que necesite eliminar manualmente libssl. * Y libcrypto. * Del directorio rvm / usr / lib):

rvm reinstall 1.9.3 --with-openssl-dir=/usr

Esto finalmente resolvió el problema para mí en Ubunto 12.04.


Gracias por esta respuesta! Cuanto más reciente sea Ubuntu y más antigua sea la construcción de ruby, es más probable que ocurra una falta de coincidencia de OpenSSL.
mikeycgto

¡Nada más funcionó excepto esto! Muchas gracias @ Mike-Blackwell. Casi había perdido la esperanza antes de que vinieras al rescate.
varagrawal


5

Esto resolvió el problema para mí en Ubuntu 12.04 después de que todas las sugerencias aquí habían fallado.

rvmsudo gem install pg -v '0.12.2' -- --with-pg-lib=/usr/include/postgresql

Mi solución fue casi la misma; Estoy usando rbenv y lo que funcionó para mí fue: `gem install pg - --with-pg-lib = / usr / lib / postgresql / --with-pg-include = / usr / include / postgresql /`; No necesitaba especificar una versión.
Dan Tenenbaum,

3

Estaba tratando de configurar un proyecto Rails en mi Ubuntu 16.04 recién instalado. Me encontré con el mismo problema al ejecutar bundle. Corriendo

sudo apt-get install aptitude

seguido por

sudo apt-get install libpq-dev

Lo resolvió por mí.


3

Para cualquiera que todavía tenga problemas después de probar todas las respuestas en esta página, lo siguiente (finalmente) funcionó:

sudo apt-get install libgmp3-dev
gem install pg

Esto fue después de hacer todo lo demás mencionado en esta página.

postgresql 9.5.8
Ubuntu 16.10


Esto era lo que necesitaba en Ubuntu 18.04
Weston Ganger el

1

Tuve el mismo problema y probé muchas variantes diferentes. Después de algunos intentos pude hacerlo sudo gem install, pero aún tengo problemas para instalarlo sin sudo.
Finalmente encontré una decisión: la reinstalación de rvm me ayudó. Probablemente puede ahorrar tiempo a alguien más.


1

Otra solución a este problema es instalar PostgreSQL usando Homebrew / linuxbrew:

brew install postgresql

Por costumbre, no me gusta usar sudo a menos que tenga que hacerlo.


Homebrew es solo para Mac.
IIllIIll

2
Hay una bifurcación de Linux.
echristopherson

Si no desea instalar el PostgreSQL completo, lo siguiente funcionó para mí:brew install libpq && brew link libpq --force
Andrew

1

Para aquellos que intentan instalar Redmine, me perdí sudo apt-get install ruby-all-devdespués de probar todo lo anterior.

Error inicial siendo mkmf.rb can't find header files for ruby at /usr/lib/ruby/include/ruby.h.



0

Otra opción es usar Homebrew, que funciona en Linux y macOS para instalar solo las bibliotecas compatibles:

brew install libpq

luego

brew link libpq --force

(la --forceopción es obligatoria porque entra en conflicto con la fórmula de postgres).

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.