Rails 3: no se puede instalar pg gem


98

Cuando intento ejecutar el paquete (instalación del paquete), todo el tiempo obtengo

Installing pg (0.13.2) with native extensions 
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

        /Users/ryan/.rvm/rubies/ruby-1.9.2-p290/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=/Users/ryan/.rvm/rubies/ruby-1.9.2-p290/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 /Users/ryan/.rvm/gems/ruby-1.9.2-p290/gems/pg-0.13.2 for inspection.
Results logged to /Users/ryan/.rvm/gems/ruby-1.9.2-p290/gems/pg-0.13.2/ext/gem_make.out
An error occured while installing pg (0.13.2), and Bundler cannot continue.
Make sure that `gem install pg -v '0.13.2'` succeeds before bundling.

Yo uso Mac OS X 10.6, la versión de PostgreSQL instalada es 9.1. Encontré que el problema está en libpq-dev , ¿cómo puedo instalarlo / solucionarlo?


2
¿cómo has instalado postgres en tu mac?
shingara


instalador on_click? Flink? o MacPort?
shingara

He intentado instalar que de esta manera: sudo port install libpq-dev, pero otro problema - Error: Port libpq-dev not found To report a bug, see <http://guide.macports.org/#project.tickets>. Eso es terrible, todavía hay algunos problemas ...
user984621

1
Vea esta pregunta: [aquí] [1] [1]: stackoverflow.com/questions/10321189/…
banditKing

Respuestas:


78

Como se indica en su registro de errores, debe pasar la ruta al archivo pg_config. Intenta instalar la gema usando:

gem install pg -- --with-pg-config= 'PATH_TO_YOUR_PG_CONFIG'

Si no está seguro de dónde está su pg_config, y asumiendo que está en Linux o Mac, puede ejecutar el siguiente comando:

which pg_config

Su pg-config puede estar en diferentes ubicaciones dependiendo de cómo instaló postgres.


Como nota, el paquete binario del sitio de Postgres no contiene encabezados de desarrollo ni el pg_configprograma.
tadman

3
El paquete binario a partir de aquí: enterprisedb.com/products-services-training/pgdownload#osx sin duda hace contener tanto pg_config(por ejemplo, al /Library/PostgreSQL/9.1/bin/pg_configde 9.1.x) y las cabeceras de desarrollo. Es lo que uso para probar la pggema en desarrollo.
Michael Granger

8
¿No which pg_configsería más rápido que find / -name pg_config?
Justin D.

Hizo un pequeño ajuste a los argumentos de la línea de comandos. Reemplazar la versión con la actual debería funcionar bien. Aquí está mi línea de comando: sudo env ARCHFLAGS = "- arch x86_64" gem install pg - --with-pg-include = / Library / PostgreSQL / 9.1 / include / --with-pg-lib = / Library / PostgreSQL / 9.1 / lib /
Rod Paddock

13
En OSX también puede usar brew para obtener los encabezados brew install libpqxxy todo irá bien.
Vets el

99

si está ejecutando Linux, puede estar interesado en lo que funcionó para mí:

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

Luego

gem install pg

luego

bundle install

src: http://wikimatze.de/installing-postgresql-gem-under-ubuntu-and-mac


1
gracias, como es en mi caso, no es necesario ejecutar bundle gem install pg
valk

21
No apto para OS X.
dfrankow

1
¡Me funcionó a partir de noviembre de 2013 con Ubuntu 13.04!
Starkers

¿Por qué esto tiene tantos votos positivos cuando claramente es para el sistema operativo incorrecto?
sevenseacat

1
@sevenseacat establece claramente el sistema operativo en el que debe usarse. Y claramente muchas personas con sistemas operativos Linux están encontrando esta respuesta cuando investigan este problema.
EE33

57

Si está utilizando Postgress.app , querrá acceder a sus herramientas de línea de comandos . Ingrese la siguiente línea en su terminal o su perfil PATH :

 PATH="/Applications/Postgres.app/Contents/MacOS/bin:$PATH"

gem install pgahora debería funcionar. (Esto es lo que funcionó para mí).

Nota La ruta de las nuevas versiones se ve así:

/Applications/Postgres.app/Contents/Versions/<version>/bin

3
¡Muchas gracias! Pasé media hora revisando cosas que no funcionaron y finalmente encontré esto enterrado aquí. : D
Peter Brown

1
Gran solución que no requiere preparación.
lucian303

7
Solo tenga en cuenta que el parche Postgre.app cambió en la versión 93. ahora es: /Applications/Postgres93.app/Contents/MacOS/bin
Alain

2
Esto funcionó para mí, aunque mi contenedor estaba en un lugar muy diferente -> /Library/PostgreSQL/9.3/bin
Jeremiah

5
Esto es ahora - a /Applications/Postgres.app/Contents/Versions/9.3/binpartir de 9.3.5 si está utilizando Postgres.app
Ashley


12

Buscar libpq:

brew search libpq

Debería salir libpqxx

Luego intente instalarlo:

brew install libpqxx

8

Solo necesitas instalar libpq-dev:

sudo apt-get install libpq-dev

Entonces la gema debería instalarse bien.


8
No apto para OS X.
dfrankow

En mi caso, solo esto ayudó. ¡Gracias!
kovpack

7

Siga las instrucciones posteriores a la instalación: http://postgresapp.com/documentation/configuration-ruby.html

Para instalar la gema pg, asegúrese de haber configurado su $ PATH correctamente (como se especifica en http://postgresapp.com/documentation/cli-tools.html ), luego ejecute

sudo ARCHFLAGS="-arch x86_64" gem install pg

Recomiendo encarecidamente leer ambas páginas. Solo los hojeé y perdí 1 hora de mi vida. Léelos, problema resuelto.


Funciona en OSX 10.9.5, versión 2.0 de ruby ​​predeterminada, versión local de rbenv 1.9.3.
jlucasps

Funciona en OSX 10.11 GRACIAS
Yarin

Funciona en OSX 10.11.4. ¡¡Gracias!!
Martyn Chamberlin

3

El problema que tuve fue que, por alguna razón, estaba intentando compilar con /usr/bin/gcc-4.2. Lo descubrí cambiando try_cpp en mkmf.rb (que vi en el seguimiento de la pila) para generar una excepción con la línea de compilación que fallaba.

Hice un enlace suave de gcc a gcc-4.2 y funcionó:

sudo ln -s /usr/bin/gcc /usr/bin/gcc-4.2

¿Por qué estaba intentando usar gcc-4.2? Ni idea.

La línea de compilación real:

/usr/bin/gcc-4.2 -E -I/Users/dfrankow/.rvm/rubies/ruby-1.9.3-p125/include/ruby-1.9.1/x86_64-darwin11.4.0 -I/Users/dfrankow/.rvm/rubies/ruby-1.9.3-p125/include/ruby-1.9.1/ruby/backward -I/Users/dfrankow/.rvm/rubies/ruby-1.9.3-p125/include/ruby-1.9.1 -I. -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE   -I/usr/local/Cellar/postgresql/9.1.4/include  -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wshorten-64-to-32 -Wimplicit-function-declaration  -fno-common -pipe  conftest.c -o conftest.i (RuntimeError)

3

Tengo el mismo problema pero mi Postgres se instaló en

/Library/PostgreSQL/9.3

Se actualizó ~ / .bash_profile agregando:

export PATH=/Library/PostgreSQL/9.3/bin:$PATH

Abra una nueva terminal, ejecútela bundle updatey también me funcionó. Gracias Ari.


pero para que yo funcione, necesito verificar la versión y luego exportar PATH = / Applications / Postgres.app / Contents / Versions / 9.4 / bin: $ PATH
Prateep Kul

1

Puede establecer una opción de configuración de compilación bundle config build.pg --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_configy usarla gem install pgsin ninguna opción (la ruta a pg_config puede ser diferente para usted, esta es para Postgresapp 9.3.5.0)


1

Tuve el mismo problema en mi máquina openSUSE13.1 KDE. Antes de ese tema me encontré con que había instalado sólo los paquetes postgresqly postgresql-serverel uso zypperde comandos. Luego instalé nuevamente 2 paquetes más:

[arup@to_do_app]$ sudo zypper in postgresql-devel postgresql-contrib
root's password:
Loading repository data...
Reading installed packages...
Resolving package dependencies...
#....

Entonces, corrí de nuevo bundle instally ¡¡¡éxito !!!



0

Primero, desinstale cualquier versión de Homebrew. La opción --force hace que desinstale todas las versiones.

brew rm postgresql --force

Cambie las rutas en consecuencia para su versión.

sudo /sbin/SystemStarter stop postgresql-8.4
sudo rm -rf /Applications/PostgreSQL\ 8.4
sudo rm -rf /etc/postgres-reg.ini
sudo rm -rf /Library/StartupItems/postgresql-8.4
sudo rm -rf /Library/PostgreSQL/8.4
sudo dscl . delete /users/postgres

Edite / etc / profile y elimine cualquier línea que haga referencia a "postgres".

nano /etc/profile

Instalar PostgresSQL

brew update
brew install postgresql

Instalar de PG GEM

gem install pg

Eso es. Saludos.


0

Primero puede verificar si tiene un archivo postrgresql en su terminal yendo al archivo lib. yendo cd ~ / opt / local / lib / y luego escriba ls y el botón enter. Esto le mostrará una lista de todos los archivos que se encuentran en el directorio lib.

1.Si no tiene postreseql, puede descargarlo a través de macports. sudo puerto instalar postgresql93 @ 9.3.2_1

Ahora cd de nuevo en la carpeta que está intentando agrupar la instalación

  1. hacer que su pg funcione con su archivo postgesql que tiene o que acaba de descargar gem install pg - --with-pg-config = / opt / local / lib / postgresql93 / bin / pg_config

ahora ejecuta la instalación del paquete



0

Lo que funcionó para mí en El Capitán fue actualizar ruby ​​del sistema predeterminado a 2.3.1 parecía encontrar las bibliotecas correctas que pgnecesitaba la gema.

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.