Instalación de PG gem en OS X: falla al construir la extensión nativa

183

Parece que muchos otros han tenido problemas para instalar la gema pg. Ninguna de las soluciones planteadas para otros ha funcionado para mí.

He intentado instalar la gema pg y postgres.app. La gema pg no se instalará. El primer error que obtengo es:

Se produjo un error al instalar pg (0.17.0) y Bundler no puede continuar. Asegúrese de que gem install pg -v '0.17.0'tenga éxito antes de agrupar.

El consejo de instalación sobre cómo apuntar mi instalación de gemas a la configuración para pg falla con el siguiente mensaje de error (que muchos otros en este foro han encontrado):

Failed to build native extensions... Results logged to /Users/melanie/.rvm/gems/ruby-1.9.3-p448/gems/pg-0.17.0/ext/gem_make.out

No sé cómo encontrar o acceder a este archivo de registro para buscar más pistas.

También recibo un mensaje de error (comando no encontrado) cuando intento usar el comando sudo apt-get install. He recorrido este foro durante las últimas 6 horas, intentando cada consejo para que pg funcione con mi proyecto de rieles.

No puedo encontrar consejos sobre cómo cambiar una ruta, o específicamente, qué cambio se requiere. Mi which pg_configdevuelve una fuente de archivo. Lo he usado con un comando para instalar pg usando esa configuración. Fracasa.

Hay tantas personas que han tenido problemas con esto. Muchas respuestas sugieren cerveza casera. Tuve que eliminar eso porque arrojó otros problemas.

Mel
fuente
1
Hola, un par de preguntas que ayudarán en el futuro: - Estás en Mac, ¿verdad? Bien salió mal con homebrew? (ps, como notó, apt-get es solo para Ubuntu (y sus primos basados ​​en Debian)): ¿qué versión de postgres tiene? Intenta correr psql -ven tu caparazón. - ¿Qué versión de ruby ​​estás ejecutando? Parece 1.9.3, pero ¿qué ruby -vte da?
rmosolgo
Debo agregar que mi psql se agrega en: /Applications/Postgres-1.app/Contents/MacOS/bin/psql; salida; psql (9.3.0) pero que devuelve psql: usr / bin / psql
Mel
Hola, muchas gracias por mirar esto. Mi psql es v 9.3.0 y ruby ​​es v 1.9.3
Mel
1
Ver la respuesta de @ paninapress para Postgres.app. Funcionó muy bien para mí y no requiere instalar otra instancia de Postgres.
Jamon Holmgren

Respuestas:

442

El mismo error para mí y no lo experimenté hasta que descargué OS X 10.9 (Mavericks). Suspiro, otro dolor de cabeza de actualización del sistema operativo.

Así es como lo arreglé (con homebrew):

  • Instale otra compilación de Xcode Tools (escribir brew updateen el terminal le pedirá que actualice las herramientas de compilación de Xcode)
  • brew update
  • brew install postgresql

Después de eso gem install pgfuncionó para mí.

shicholas
fuente
77
Después de dos días de dolor de cabeza tratando de arreglar mi Rails db después de la actualización de Mavericks, esto me lo solucionó, muchas gracias.
Deborah
44
Esto también funcionó para mí, en una nueva instalación de Mavericks. ¡Gracias!
marcamillion
1
¡Gracias por salvar mi cordura!
Jim
1
Aún trabajando. Project está en Ruby 2.2.0 para admitir una aplicación antigua, pero de todos modos GRACIAS.
TristanZimmerman
1
1. brew update2. brew install postgresql3. gem install pg4.bundle install
kai_onthereal
223

Si está utilizando Ubuntu intente instalar el siguiente archivo lib

sudo apt-get install libpq-dev

y entonces

gem install pg

trabajó para mi.

Sandesh Kota
fuente
44
A mí también me funcionó. Estoy usando ubuntu 13.10.
rafaelkin
44
Solo asegúrate de escribirlo correctamente. No es libpg-dev; Es una Q no una P! Me tomó 10 minutos darme cuenta de la manera difícil.
tir38
1
Para Amazon Linux esyum install postgres-devel
andrewtweber
1
¡Me funcionó en Ubuntu 14!
18bytes
66
Para CentOSyum install postgresql-devel
septerr
49

Estoy usando OS X Mavericks (versión 10.9)

y cuando ejecuto lo anterior recibí el siguiente mensaje: Si las compilaciones de PostgreSQL 9 fallan y tienes instalada la versión 8.x.

Entonces ejecuto el siguiente comando:

ARCHFLAGS="-arch x86_64" gem install pg

y esto funcionó para mí, espero que esto ayude a alguien :)

Jon
fuente
2
+1, probé otros, pero finalmente pg instaló pg con gem con esta solución.
BMW
1
+1, del mismo modo, esta también fue la solución para mí, donde mi postgresql ya estaba instalado a través de brew. Gracias Jon por el post.
Jason Hoekstra
55
nb Si se instala como root (por cualquier razón), sudo va antes que la variable:sudo ARCHFLAGS="-arch x86_64" gem install pg
Noach Magedman
En realidad, necesito esto cada vez que corro, bundle installasí que lo puse dentro ~/.bash_profilecomo una exportación :)
Ja͢ck
42

Ok, también tuve este problema (psql es v 9.3.0 y ruby ​​es v 2.1.2) y la solución que funcionó para mí fue establecer primero la configuración de configuración del paquete:

bundle config build.pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config

Esta respuesta finalmente me ayudó a resolverlo: https://stackoverflow.com/a/9235107/3546680

paninapress
fuente
66
Se prefiere este método si usa postgres.app. El uso de Homebrew puede solucionar el problema de la extensión nativa, pero tener dos aplicaciones postgres creará conflictos (como la asignación de puertos). Consulte también la respuesta de Sayanees en stackoverflow.com/questions/19569031/…
Epigene
44
Esta es definitivamente la respuesta correcta para Postgres.app.
Jamon Holmgren
Funciona bien en Mojave, intentado con éxito hace unos minutos.
microspino
23

Probé todo durante horas, pero finalmente lo solucioné (estoy en OS X 10.9.4):

  1. Instalar herramientas de línea de comandos Xcode (sitio de desarrollador de Apple)
  2. brew desinstalar postgresql
  3. instalar brew postgresql
  4. ARCHFLAGS = "- arch x86_64" gema instalar pg
Ali Yazdani
fuente
Gracias. Tuve que usar sudo para el paso 4, ¿es algo malo? ¿Cómo puedo evitarlo?
Roy
@Roy - me alegra ayudar :) - debería estar bien, probablemente desee evitar usar sudo ya que creo que lo instalará para todos los usuarios, pero si usted es el único usuario en el sistema, probablemente no sea tan importante .
Ali Yazdani
brew uninstall postgresqly brew install postgresqlno son pasos necesarios en OS X 10.10 y 10.11. Simplemente gem uninstall pg(y elimine todas las versiones), luego asegúrese de que usted bundleo de gem install pgnuevo, y las extensiones nativas se reconstruirán con las nuevas herramientas de línea de comandos para esta versión de OS X.
Olivier Lacan
7

paso fácil

  1. brew install postgresql
  2. gem install pg -v 'your version'
James Dela Cruz
fuente
6

Del mismo modo, después de instalar Mavericks bundle updateestaba arrojando un error en la gema pg, que solo se usa en producción y no localmente.

Utilizo Brew para administrar mis paquetes y postgresql ya estaba instalado, pero aún recibía el error 'no pg_config'.

La solución era simplemente brew uninstall postgresql, entonces brew install postgresql. Después de lo cual pude ejecutar inmediatamente con éxito bundle update.

Shannon Perkins
fuente
6

Creo que la respuesta "correcta" sería configurar primero la RUTA correctamente para Postgres.app agregando lo siguiente a ~/.profile( .zshrco ~/.zprofilesi usa ZSH):

export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/latest/bin

Luego abra una nueva pestaña o ventana en la terminal e instale la pggema con:

ARCHFLAGS="-arch x86_64" gem install pg

Documentado aquí:

Matias Korhonen
fuente
5

En OSX con Postgres instalado en / Aplicaciones, simplemente ejecuto el siguiente comando (cambio 0.20 y 9.4 según su versión)

gem install pg -v '0.20' -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/9.4/bin/pg_config

Deberías :

Creación de extensiones nativas con: '--with-pg-config = / Applications / Postgres.app / Contents / Versions / 9.4 / bin / pg_config' Esto podría llevar un tiempo ... Instalado correctamente pg-0.20.

jbheren
fuente
¿Puede explicar por qué tuvimos que usar el guión 2 tiempo extra antes de que se proporcione el argumento?
Akash Agarwal
3

Pasé un día en esto y así es como lo solucioné:

Encontré que el valor global de build.pg se estableció en: /opt/local/lib/postgresql91/bin/pg_config y no fue donde se instaló postgres.

Lo arreglé reemplazando el valor de build.pg a: bundle config build.pg --with-pg-config=/usr/local/Cellar/postgresql/9.4.4/bin/pg_config que es donde está mi instalación postgresql.

HosseinToussi
fuente
1

Tratar:

gem install pg -- --with-pg-config=`which pg_config`
Gerry
fuente
0

Resuelto! Encontré cierta falta de biblioteca para PostgreSQL en el sistema. Solo dos pasos lo resolvieron:

brew install postgresql

Entonces corre

gem install pg

usuario6756462
fuente
0

Para aquellos que no están interesados ​​en usar brew.

  1. Descargar la PostgreSQLaplicación
  2. Siga las instrucciones predeterminadas de macOS para instalarlo.
  3. Es recomendable correr PostgreSQl.
  4. Ejecute gem install pg -- --with-pg-config=/ path / to / postgress / in / your / aplicaciones / folder / `
    • Por ejemplo, en mi máquina es /Applications/Postgres.app/Contents/Versions/12/bin/pg_config
Esmaeil MIRZAEE
fuente