rieles y dependencias desagradables libpq-dev

12

No sé si esta pregunta pertenece aquí, pero tomaré una foto. Hola. Estoy ejecutando ubuntu 11.10 dual-boot con Windows Vista en mi máquina. En Ubuntu, instalé RVM, rails gem y PostgreSQL (el servidor postgres, el cliente y otros paquetes como libpq5, porque lo instalé a través del Centro de software).

Estoy tratando de implementar mi aplicación en heroku, pero parece que necesito instalar pg gem. Intenté instalarlo, pero obtuve este error:

ERROR: Error al construir la extensión nativa de gemas.

/home/pcr/.rvm/rubies/ruby-1.9.3-p0/bin/ruby extconf.rb buscando pg_config ... sí

Usar valores de configuración de / usr / bin / pg_config

Debe instalar postgresql-server-dev-XY para crear una extensión del lado del servidor o libpq-dev para crear una aplicación del lado del cliente. Debe instalar postgresql-server-dev-XY para crear una extensión del lado del servidor o libpq-dev para crear una aplicación del lado del cliente.

buscando libpq-fe.h ... * extconf.rb falló *

Después de buscar en google y stackoverflow por un tiempo, muchas personas dijeron que libpq-dev tiene que estar instalado. Lo intenté, a través del centro de software, pero no logro hacer dependencias no satisfechas. Intenté a través de apt-get, decía que necesitaba libkrb5-dev y krb5-multidev. Lo intenté sudo apt-get install libpq-dev libkrb5-dev krb5-multidevy obtuve esto:

Los siguientes paquetes tienen dependencias insatisfechas: krb5-multidev:

Depende: libkrb5-3 (= 1.9.1 + dfsg-1ubuntu1) pero 1.9.1 + dfsg-1ubuntu2.1 debe instalarse

Depende: libk5crypto3 (= 1.9.1 + dfsg-1ubuntu1) pero 1.9.1 + dfsg-1ubuntu2.1 debe instalarse

Depende: libgssapi-krb5-2 (= 1.9.1 + dfsg-1ubuntu1) pero 1.9.1 + dfsg-1ubuntu2.1 debe instalarse E: No se pueden corregir los problemas, ha retenido los paquetes rotos.

¡Pero ya tengo libkrb5-3, libk5crypto3 y libgssapi-krb5-2 (todos con la versión 1.9.1 + dfsg-1ubuntu2.1) en mi sistema! Creo que tal vez la versión necesaria es 1.9.1 + dfsg-1ubuntu1. Entonces, tal vez tenga que eliminar primero los paquetes 1.9.1 + dfsg-1ubuntu2.1. ¿Crees que es seguro para mí eliminarlo? Traté de eliminar uno de ellos, pero el centro de software me advierte que también eliminará postgres, openssl-client, smbclient, cups y muchos otros paquetes.

¿Qué debo hacer para resolver esto? Y, ¿es realmente necesario instalar pg gem en mi máquina local para crear aplicaciones de rieles con postgres como dbms? ¿Hay alguna forma de "entregar" la responsabilidad de incluir pg gem en heroku en su lugar?

PatrixCR
fuente

Respuestas:

8

La solución real es, como correctamente señaló Amit Patel , instalarlibpq-dev


Aquí hay una solución alternativa si no pudo configurar la página en su máquina de desarrollo. Puede usar sqlite en su máquina local y pg en Heroku. Esto es lo que debes tener en tu Gemfile

group :production do
  gem 'pg'
end

group :development, :test do
  gem 'sqlite3'
end

Y use este comando para instalar el paquete para ignorar las gemas de producción:

bundle install --without production

Tenga en cuenta que no se recomienda no tener el mismo entorno en las máquinas de producción y desarrollo.

Arash Badie Modiri
fuente
Sí, esta es la respuesta correcta. +1, hago esto todo el tiempo ahora.
jrg
@jrg, ¿tienes algún problema al hacer esto? Pregunto porque heroku dice "no es recomendable".
PatrixCR
Heroku no lo recomienda porque generalmente desea tener el mismo entorno de desarrollo que el servidor; sin embargo, siempre que esté utilizando ActiveRecord o DataMapper y no esté escribiendo SQL sin procesar, debería estar bien el 99% del tiempo. :)
jrg
1
@PatrixCR no, heroku lo hará por ti.
jrg
1
Usar sqlite es una solución alternativa. Entonces, cual es la solución?
Amit Patel
32

Tengo el mismo problema hoy. Seguí el mensaje Necesitas instalar postgresql-server-dev-XY para construir una extensión del lado del servidor o libpq-dev para construir una aplicación del lado del cliente. Así que instalé libpq-dev y la aplicación bundle rails nuevamente y el error desapareció.

$ sudo apt-get install libpq-dev
$ bundle install
Amit Patel
fuente
2
Esta es una mejor solución si desea reflejar los postgres en su máquina de desarrollo, funcionó para mí.
Collin White