¿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.