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.