Imposible instalar PG gem en mi mac con Mavericks

103

Estoy intentando instalar la gema pg para volver a trabajar con mis proyectos de rieles. Pero me sale este error:

Construyendo extensiones nativas. Esto podría llevar un tiempo ... ERROR: Error al instalar pg: ERROR: No se pudo construir la extensión nativa de gemas.

/Users/jeanosorio/.rvm/rubies/ruby-2.0.0-p247/bin/ruby extconf.rb checking for pg_config... no No pg_config... trying anyway. If

la construcción falla, inténtelo de nuevo con --with-pg-config = / path / to / pg_config comprobando libpq-fe.h ... no No se puede encontrar el encabezado 'libpq-fe.h * extconf.rb failed * No se pudo crear Makefile debido a alguna razón, probablemente la falta de las bibliotecas y / o encabezados necesarios. Consulte el archivo mkmf.log para obtener más detalles. Es posible que necesite opciones de configuración.

Opciones de configuración proporcionadas: --with-opt-dir --without-opt-dir --with-opt-include --without-opt-include = $ {opt-dir} / include --with-opt-lib - sin-opt-lib = $ {opt-dir} / lib --with-make-prog --without-make-prog --srcdir =. --curdir --ruby = / Users / jeanosorio / .rvm / rubies / ruby-2.0.0-p247 / bin / ruby ​​--with-pg --without-pg --with-pg-config --without-pg -config --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} /

Los archivos de gemas permanecerán instalados en /Users/jeanosorio/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/gems/2.0.0/gems/pg-0.17.0 para su inspección. Resultados registrados en /Users/jeanosorio/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/gems/2.0.0/gems/pg-0.17.0/ext/gem_make.out

Intenté todo lo que encontré en stackoverflow pero sigo recibiendo este error.

Si intento instalar postgresql usando brew, obtengo la siguiente advertencia:

Advertencia: postgresql-9.2.4 ya está instalado, simplemente no está vinculado

Si trato de vincular

brew link postgresql Vinculando /usr/local/Cellar/postgresql/9.2.4 ... Advertencia: No se pudo vincular postgresql. Desvinculando ...

Error: No se pudo vincular el archivo simbólico: /usr/local/Cellar/postgresql/9.2.4/share/man/man7/WITH.7 / usr / local / share / man / man7 no se puede escribir. Deberías cambiar sus permisos.

Ayuda por favor

NOTA: Ya instalé las herramientas de línea de comandos para mavericks.


Si desinstalo usando Homebrew e intento instalarlo de nuevo, aparece este error:

==> Descargando http://ftp.postgresql.org/pub/source/v9.2.4/postgresql-9.2.4.tar.bz2

################################################ ################ 100.0%

==> Archivo de parcheo de parche src / pl / plpython / Archivo de parche de Makefile contrib / uuid-ossp / uuid-ossp.c ==> ./configure --prefix = / usr / local / Cellar / postgresql / 9.2.4 - datadir = / usr / local / Cellar / postgresql / 9.2.4 / share / postgresql --docdir = / usr / local / Cellar / p ==> make install-world ==> Advertencias

Notas de compilación

Si las compilaciones de PostgreSQL 9 fallan y tiene instalada la versión 8.x, es posible que primero deba eliminar la versión anterior. Ver:
https://github.com/mxcl/homebrew/issues/issue/2510

Crear / actualizar una base de datos

Si esta es su primera instalación, cree una base de datos con: initdb / usr / local / var / postgres -E utf8

Para migrar datos existentes de una versión principal anterior (anterior a 9.2) de PostgreSQL, consulte:
http://www.postgresql.org/docs/9.2/static/upgrading.html

Cargando extensiones

De forma predeterminada, Homebrew crea todas las extensiones Contrib disponibles. Para ver una lista de todas las extensiones disponibles, desde la línea de comando psql, ejecute:
SELECT * FROM pg_available_extensions;

Para cargar cualquiera de los nombres de extensión, navegue hasta la base de datos deseada y ejecute: CREATE EXTENSION [nombre de extensión];

Por ejemplo, para cargar la extensión tablefunc en la base de datos actual, ejecute: CREATE EXTENSION tablefunc;

Para obtener más información sobre el comando CREATE EXTENSION, consulte:
http://www.postgresql.org/docs/9.2/static/sql-createextension.html Para obtener más información sobre las extensiones, consulte:
http://www.postgresql.org/ docs / 9.2 / static / contrib.html

Otro

Algunas máquinas pueden requerir el aprovisionamiento de memoria compartida:
http://www.postgresql.org/docs/9.2/static/kernel-resources.html#SYSVIPC Al instalar la gema postgres, se recomienda incluir ARCHFLAGS: ARCHFLAGS = "- arch x86_64" gema instalar pg

Para instalar gemas sin sudo, consulte la wiki de Homebrew.

Para iniciar postgresql al iniciar sesión: ln -sfv /usr/local/opt/postgresql/*.plist ~ / Library / LaunchAgents Luego para cargar postgresql ahora: launchctl load ~ / Library / LaunchAgents / homebrew.mxcl.postgresql.plist O , si no quiere / necesita launchctl, puede ejecutar: pg_ctl -D / usr / local / var / postgres -l /usr/local/var/postgres/server.log start Advertencia: No se pudo vincular postgresql. Desvinculando ... Error: El brew linkpaso no se completó correctamente La fórmula creada, pero no está enlazada simbólicamente a / usr / local Puede intentar nuevamente usando `brew link postgresql '==> Resumen 🍺 /usr/local/Cellar/postgresql/9.2 .4: 2831 archivos, 38M, construido en 4.9 minutos


SOLUCIÓN:

Ejecuto este comando para cambiar el permiso de la carpeta:

sudo chown jeanosorio / usr / local / share / man / man7

Luego

brew link postgresql Vinculando /usr/local/Cellar/postgresql/9.3.1 ... 421 symlinks creados

Y finalmente:

sudo ARCHFLAGS = "- arch x86_64" gema instalar pg

Obteniendo: pg-0.17.0.gem (100%) Construyendo extensiones nativas. Esto podría llevar un tiempo ... Se instaló correctamente pg-0.17.0

Vaquero
fuente

Respuestas:

252

Si desea evitar el uso de MacPorts, puede descargar la aplicación Postgres y colocarla en el directorio de la aplicación.

Luego, especifique la ubicación de la recién descargada pg_config:

gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/Versions/latest/bin/pg_config

Si se encuentra con un problema de encabezados faltantes, intente especificar el includedirectorio de la aplicación:

gem install pg -- --with-pg-include='/Applications/Postgres.app/Contents/Versions/latest/include/'
Yuri
fuente
11
Solo una nota de que aún puede usar el paquete configurando una variable env de configuración:export CONFIGURE_ARGS="with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_config"
film42
8
Si está utilizando Postgres 9.3 (más reciente a partir de hoy), puede hacer esto: gem install pg -- --with-pg-config=/Applications/Postgres93.app/Contents/MacOS/bin/pg_config
cavneb
El uso de Postgres93.app funcionó, pero tuvo que agregar la ruta bin a la variable env PATH para la instalación del paquete.
mkhatib
5
Tenía que hacer que esto funcionara usando gem install pg -- --with-pg-config=/Applications//Postgres.app/Contents/Versions/9.3/bin/pg_config
StevenNunez
1
¡Gracias! recibía una advertencia: no se pudo vincular postgresql. Desvinculando ... Error: No se pudo vincular simbólicamente el archivo: ... no se puede escribir. Deberías cambiar sus permisos. Y todo es un error de preparación, después de que preparo install / link postgresql La instalación va a: Linking /usr/local/Cellar/postgresql/9.3.4 ... que es en mi caso una CARPETA MUY CONFLICTIVA, descargando pg y gem install usando soluciona el problema GRACIAS !!!!!!
d1jhoni1b
74

Use brew para obtener postgresql

brew install postgresql

Compruebe que tiene pg_config en la preparación instalada. Encontré el mío en

/usr/local/Cellar/postgresql/9.3.3/bin/pg_config

Consultar a través de:

$ ls /usr/local/Cellar/postgresql/9.3.3/bin/pg_config
> /usr/local/Cellar/postgresql/9.3.3/bin/pg_config

Una vez hecho esto, instale la pggema con

env ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=/usr/local/Cellar/postgresql/9.3.3/bin/pg_config
Ayush Goel
fuente
2
funcionó para mí después de intentar muchas cosas diferentes. ¡Solo tenía que asegurarme de usar el número de versión correcto (9.3.5_1 en mi caso)!
HK
1
Úselo ls /usr/local/Cellar/postgresql/9.*/bin/pg_configpara encontrar el camino real y combinadoenv ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=$(ls /usr/local/Cellar/postgresql/9.*/bin/pg_config)
Jesper Grann Laursen
Una descripción un poco más detallada sobre lo que sucede aquí deveiate.org/code/pg/README-OS_X_rdoc.html
Julia Usanova
35

No pude instalar Postgres a través de MacPorts. En su lugar, instalé Postgress.app . y llamó

gem install pg -- --with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_config

Nota: en las versiones más recientes (en 9.3 al menos) la ruta es en realidad: /Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config

iceui2
fuente
2
Esto funciona, pero tenga en cuenta que a veces Postgres.app se instala como Postgres <NN> .app donde NN es el número de versión.
nimrodm
11

Si tiene homebrew, simplemente escriba:

$ brew instalar postgresql

user2373148
fuente
1
Esto funcionó para mí: ya tenía PostgreSQL instalado, pero supongo que tuve que instalarlo nuevamente, para actualizar los encabezados (?) Entonces podría hacerlogem install pg
Crimbo
10

Aquí hay otra alternativa en caso de que desee utilizar el instalador de postgresql directamente. Hay un par de obstáculos que debes superar para empezar después de actualizar a los inconformistas. Esto es lo que hice:

Primero instale las herramientas de línea de comandos de xcode:

xcode-select --install

Descargue e instale la última versión de PostgreSQL (9.3.1), en mi caso acabo de usar el instalador gráfico. Aquí está el enlace a la página de descargas:

http://www.enterprisedb.com/products-services-training/pgdownload#osx

Simplemente elija todos los valores predeterminados que le ofrece. En mi caso, instaló postgres en el siguiente directorio, si lo instaló en un directorio diferente, solo recuerde la ruta que eligió, porque la necesitará en breve.

/Library/PostgreSQL/9.3

Si ahora intenta instalar la última gema pg (0.17.0), deberá pasar un par de opciones en la línea de comandos. Esto es lo que usé:

ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=/Library/PostgreSQL/9.3/bin/pg_config

Si instaló postgres en una ubicación diferente, deberá corregir la ruta al archivo pg_config.

Si se queja de un archivo 'libpq.5.dylib' faltante mientras intenta instalar la gema pg, deberá crear un enlace simbólico que apunte a la ubicación real de este archivo. Postgres lo está buscando en su directorio / usr / local / lib / así que cree un enlace simbólico allí y rediríjalo a su ubicación real. En mi caso tuve que ejecutar:

sudo ln -s /Library/PostgreSQL/9.3/lib/libpq.5.dylib /usr/local/lib/libpq.5.dylib

Una vez que haya hecho eso, vuelva a intentar instalar la gema y, con suerte, funcionará para usted de la misma manera que lo hizo para mí.

2 tortas de papa
fuente
9

Para mí, en Yosemite, no necesitaba especificar la pg_configruta. Lo siguiente lo hizo.

brew install postgresql
sudo env ARCHFLAGS="-arch x86_64" gem install pg

Parece que la bandera de la arquitectura es la clave.

dinigo
fuente
5

En mi caso (necesitaba PG 0.16.0 en Mavericks), instalé postgresql a través de MacPorts

sudo port install postgresql90

y entonces

gem install pg -v '0.16.0' -- --with-pg-config=/opt/local/lib/postgresql90/bin/pg_config

Para la última versión, debe deducir -v '0.16.0'

gem install pg -- --with-pg-config=/opt/local/lib/postgresql90/bin/pg_config

Si tiene Homebrew instalado, no instale MacPorts antes de leer acerca de su coexistencia.

Gi0
fuente
5

Coloque lo que falta --with-pg-configen el archivo de configuración de Bundler: /Users/<your_user>/.bundle/configpara hacer su vida más fácil.

---
BUNDLE_BUILD__PG: --with-pg-config=/Applications/Postgres93.app/Contents/MacOS/bin/pg_config
BUNDLE_BUILD__EXAMPLE_GEM: --other-configs
BUNDLE_BUILD__OTHER_EXAMPLE_GEM: --other-configs

Luego corre de bundle installnuevo.

Bruno Buccolo
fuente
5

¡Funciona para mi! (Postgres 93, mac ox 10.9.1) 1. descargar @ http://postgresapp.com/ y luego

gem install pg -- --with-pg-config=/Applications/Postgres93.app/Contents/MacOS/bin/pg_config
meck373
fuente
4

Estuve atascado en la instalación de mi paquete durante 3 días. Intenté todo, como agregar env ARCHFLAGS = "- arch x86_64" gem install pg - --with-pg-config = / usr / local / Cellar / postgresql / 9.3.5_1 / bin / pg_config

Pude ver que pg gem se instalaba después de este comando, pero aún así no se instalaba desde la instalación del paquete, lo cual fue una molestia porque no sabía qué escribir en Gemfile excepto gem 'pg'

Lo que finalmente funcionó para mí fue encontrar que mi pg_config estaba en /Library/PostgreSQL/9.3/bin/pg_config y, por defecto, la instalación del paquete Gemfile se ve en / usr / local / bin / pg_config

Simplemente ejecuté el siguiente comando y sucedió la magia. bundle config build.pg --with-pg-config = / Library / PostgreSQL / 9.3 / bin / pg_config

Neeraj Gupta
fuente
4

En mi caso, no funcionó si no especificas las banderas del arco, OS X 10.10.3 y postersApp 9.4

sudo env ARCHFLAGS="-arch x86_64" gem install pg -- \--with-pg-config=/Applications/Postgres.app/Contents/Versions/9.4/bin/pg_config
Rachidi Mohamed
fuente
3

La forma más fácil para mí de resolver esto fue usar Postgres.app y configurar mi env vars para que gem install pgfuncione (en lugar de requerir la --with-pg-configbandera).

Usando Homebrew Cask ,

brew cask install postgres
echo 'export PG_HOME=/Applications/Postgres.app/Contents/Versions/latest' >> ~/.bash_profile
echo 'export PATH="$PATH:$PG_HOME/bin"' >> ~/.bash_profile
source ~/.bash_profile

# now it just works
gem install pg
smoll
fuente
2

Esto es lo que funcionó para mí:

gem install pg -- --with-pg-config=/Library/PostgreSQL/9.3/bin/pg_config
tokhi
fuente
2

En mi caso, desinstalé la versión instalada a través de homebrew y cambié a Postgres.app (v9.3.4.2 en el momento de escribir este artículo).

Solo parecía funcionar al anteponer los indicadores de la arquitectura del entorno y especificar la ruta a pg_config. Su kilometraje puede variar, por lo que esta respuesta podría ayudar con variaciones en pg_configla ubicación.

Aquí está el comando final y completo que funcionó para mí:

env ARCHFLAGS="-arch x86_64" gem install pg -- \
--with-pg-config=/Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config 
Marius Butuc
fuente
2

sudo ARCHFLAGS = "- arch x86_64" gem install pg - --with-pg-config = / usr / local / bin / pg_config

Taysky
fuente
esto también funcionó para mí con la instalación del paquete así:ARCHFLAGS="-arch x86_64" bundle install
d4n3
1

Recibía el mismo error al ejecutar la instalación del paquete con respecto a la gema pg (usando Mac OS X Mavericks). Después de horas de investigación, encontré la solución. Instalé postgres usando homebrew

brew install postgres

Después de instalar eso, creé una nueva aplicación de rieles usando postgres. Yo corrí

bundle install

en vano (obtuvo el mismo error que la pregunta). solía

which psql

para averiguar dónde se instaló mi postgres, regresó

/usr/local/bin/psql

antes de ejecutar la instalación del paquete nuevamente, tuve que cambiar la ruta global a build.pg ejecutando lo siguiente

bundle config build.pg --with-pg-config=/usr/local/bin/pg_config

luego volví a ejecutar la instalación del paquete y ¡listo! Usé el postgres donde lo instaló brew.

Rav Johal
fuente
1

En OS X Mavericks con la última aplicación Postgres, haga lo siguiente con privilegios de sudo

env ARCHFLAGS="-arch x86_64" gem install pg -v '0.17.1' -- --with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_config
Vailancio Rodrigues
fuente
1

Lo que funcionó para mí en 10.9.3 con Xcode 5.1.1 fue lo siguiente:

brew update
brew install postgresql 
gem install pg -v '0.17.1'

Necesitaba pág 0.17.1

Tom Andersen
fuente
1

Para cualquier alma perdida que todavía tenga este problema sin resolución y tenga brewinstalado ruby y postgres . Estos son los siguientes pasos para asegurarse:

  • Asegúrese de que su versión de rubyno esté instalada con la --universalbandera.
    • Esto fue lo más difícil de entender, tenía --universalcuál era la raíz final del problema.
  • Asegúrese de haberse inicializado postgresqlcorrectamente con los comandos initdby createdb(busque en otro lugar los pasos para hacer esto).
  • Asegúrese de que Xcode(opcional) y command line toolsesté instalado; en la terminal:
    • xcode-select --install
    • sudo xcodebuild -license (si Xcode está instalado) o abra la aplicación y acepte el acuerdo de licencia.
    • Reiniciar computadora
  • which ruby, which gemy which postgresdebe mostrarse /usr/local/bin/ruby, /usr/local/bin/gemy con /usr/local/bin/postgresrespeto.
  • En la terminal ejecute:

    • gem install pg -- --with-pg-config=/usr/local/bin/pg_config
    • o
    • env ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=/usr/local/bin/pg_config
  • Asegurándome de que todos estos pasos estén satisfechos, pude resolver los siguientes errores:

    • ruby.h error de encabezado
    • developer tools installed first error
link_boy
fuente
1

En primer lugar, busque la ubicación de pg_config

sudo find / -name "pg_config" -print

La respuesta es /Library/PostgreSQL/9.1/bin/pg_config en mi configuración (MAC Maverick)

Luego intente instalar algo como a continuación

gem install pg - --with-pg-config = / Library / PostgreSQL / 9.3 / bin / pg_config

si esto no funciona, intente verificar de qué manera instaló postgresql

brew / mac puerto / configuración

entonces tienes que probar la opción correspondiente a la misma.

Gracias.

RAM

Rameshwar Vyevhare
fuente
0

Estaba con el mismo problema, esta fue la solución que encontré.

Si lo ejecuta brew doctor, le dirá que probablemente ha instalado algo sin preparación que ha cambiado los permisos en algunas carpetas, por lo que debe volver a cambiar los permisos en esa carpeta.

En el interior /usr/local/share/man, lo que puede hacer es lo siguiente:

sudo chown [yourusername] man7

Y entonces:

brew link postgres

¡Espero eso ayude!

Gustavo Semião-Lobo
fuente
0

De manera similar, después de instalar la 'actualización del paquete' de Mavericks, se arrojaba 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 fue simplemente 'preparar la desinstalación de postgresql', luego 'preparar la instalación de postgresql'. Después de lo cual pude ejecutar con éxito la 'actualización del paquete' de inmediato

Shannon Perkins
fuente
0
sudo su 

luego

ARCHFLAGS="-arch x86_64" gem install pg -v '0.18'

trabajado en 10.10.2

Keaton Burleson
fuente
0

Si después de probar todo aquí todavía no se instala, intente abrir Xcode y acepte el acuerdo de licencia.

Hattenn
fuente
0

Para mí, el mensaje de error se ve así:

Installing pg 0.18.4 with native extensions

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

...

checking for pg_config... no

No pg_config... trying anyway. If building fails, please try again with --with-pg-config=/path/to/pg_config

Como muestra el mensaje de error, está intentando ejecutar el comando / script "pg_config". Así que agréguelo a la ruta desde donde esté su instalación de Postgres. En mi caso, lo hice:

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

luego

bundle

Eso es.

paneer_tikka
fuente
-1

Postgres 9.4:

gem install pg -- --with-pg-config=/Applications/Postgres93.app/Contents/Versions/9.4/bin/pg_config
MDD
fuente
Una pequeña explicación estaría bien, para evitar que esto se pierda en la avalancha de las otras 19 respuestas.
Brad Koch