Impossible d'installer PG gem sur mon mac avec Mavericks

103

J'essaye d'installer le pg gem afin de retravailler avec mes projets de rails. Mais j'obtiens cette erreur:

Construire des extensions natives. Cela peut prendre un certain temps ... ERREUR: Erreur lors de l'installation de pg: ERREUR: Échec de la construction de l'extension native gem.

/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 construction échoue, veuillez réessayer avec --with-pg-config = / path / to / pg_config recherche de libpq-fe.h ... non Impossible de trouver l'en-tête 'libpq-fe.h * extconf.rb échoué * Impossible de créer Makefile pour une raison quelconque, probablement le manque de bibliothèques et / ou d'en-têtes nécessaires. Consultez le fichier mkmf.log pour plus de détails. Vous pouvez avoir besoin d'options de configuration.

Options de configuration fournies: --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 = / Utilisateurs / 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 - -avec-pg-lib - sans-pg-lib = $ {pg-dir} /

Les fichiers Gem resteront installés dans /Users/jeanosorio/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/gems/2.0.0/gems/pg-0.17.0 pour inspection. Résultats enregistrés dans /Users/jeanosorio/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/gems/2.0.0/gems/pg-0.17.0/ext/gem_make.out

J'ai essayé tout ce que j'ai trouvé sur stackoverflow mais j'obtiens toujours cette erreur.

Si j'essaye d'installer postgresql en utilisant brew, j'obtiens l'avertissement suivant:

Attention: postgresql-9.2.4 déjà installé, il n'est tout simplement pas lié

Si j'essaye de lier

brew link postgresql Linking /usr/local/Cellar/postgresql/9.2.4 ... Attention: Impossible de lier postgresql. Dissociation ...

Erreur: impossible de créer un lien symbolique sur le fichier: /usr/local/Cellar/postgresql/9.2.4/share/man/man7/WITH.7 / usr / local / share / man / man7 n'est pas accessible en écriture. Vous devez modifier ses autorisations.

Aidez-moi, s'il vous plaît

REMARQUE: j'ai déjà installé les outils de ligne de commande pour les non-conformistes.


Si je désinstalle à l'aide de homebrew et que j'essaye d'installer à nouveau, j'obtiens cette erreur:

==> Téléchargement de http://ftp.postgresql.org/pub/source/v9.2.4/postgresql-9.2.4.tar.bz2

############################################### ################ 100,0%

==> Fichier de correctif src / pl / plpython / Makefile Fichier de correctif 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 ==> Mises en garde

Notes de construction

Si les versions de PostgreSQL 9 échouent et que la version 8.x est installée, vous devrez peut-être d'abord supprimer la version précédente. Voir:
https://github.com/mxcl/homebrew/issues/issue/2510

Créer / mettre à niveau une base de données

S'il s'agit de votre première installation, créez une base de données avec: initdb / usr / local / var / postgres -E utf8

Pour migrer des données existantes à partir d'une version majeure précédente (antérieure à 9.2) de PostgreSQL, voir:
http://www.postgresql.org/docs/9.2/static/upgrading.html

Chargement des extensions

Par défaut, Homebrew crée toutes les extensions Contrib disponibles. Pour voir une liste de toutes les extensions disponibles, à partir de la ligne de commande psql, exécutez:
SELECT * FROM pg_available_extensions;

Pour charger l'un des noms d'extension, accédez à la base de données souhaitée et exécutez: CREATE EXTENSION [nom d'extension];

Par exemple, pour charger l'extension tablefunc dans la base de données actuelle, exécutez: CREATE EXTENSION tablefunc;

Pour plus d'informations sur la commande CREATE EXTENSION, voir:
http://www.postgresql.org/docs/9.2/static/sql-createextension.html Pour plus d'informations sur les extensions, voir:
http://www.postgresql.org/ docs / 9.2 / static / contrib.html

Autre

Certaines machines peuvent nécessiter le provisionnement de la mémoire partagée:
http://www.postgresql.org/docs/9.2/static/kernel-resources.html#SYSVIPC Lors de l'installation du gem postgres, il est recommandé d'inclure ARCHFLAGS: ARCHFLAGS = "- arch x86_64" gem installer pg

Pour installer des gemmes sans sudo, consultez le wiki Homebrew.

Pour que launchd démarre postgresql à la connexion: ln -sfv /usr/local/opt/postgresql/*.plist ~ / Library / LaunchAgents Puis pour charger postgresql maintenant: launchctl load ~ / Library / LaunchAgents / homebrew.mxcl.postgresql.plist Ou , si vous ne voulez pas / avez besoin de launchctl, vous pouvez simplement exécuter: pg_ctl -D / usr / local / var / postgres -l /usr/local/var/postgres/server.log start Attention: Impossible de lier postgresql. Dissociation ... Erreur: l' brew linkétape ne s'est pas terminée correctement La formule a été créée, mais n'est pas liée symboliquement dans / usr / local Vous pouvez réessayer en utilisant `brew link postgresql '==> Résumé 🍺 /usr/local/Cellar/postgresql/9.2 .4: 2831 fichiers, 38 Mo, construits en 4,9 minutes


SOLUTION:

J'exécute cette commande afin de changer l'autorisation du dossier:

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

ensuite

brew link postgresql Linking /usr/local/Cellar/postgresql/9.3.1 ... 421 liens symboliques créés

Et enfin:

sudo ARCHFLAGS = "- arch x86_64" gem install pg

Récupération: pg-0.17.0.gem (100%) Construction d'extensions natives. Cela peut prendre un certain temps ... pg-0.17.0 installé avec succès

Jean
la source

Réponses:

252

Si vous souhaitez éviter d'utiliser MacPorts, vous pouvez télécharger l' application Postgres et la placer dans le répertoire de l'application.

Ensuite, spécifiez l'emplacement du nouveau téléchargement pg_config:

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

Si vous rencontrez un problème d'en-têtes manquants, essayez de spécifier le includerépertoire de l'application:

gem install pg -- --with-pg-include='/Applications/Postgres.app/Contents/Versions/latest/include/'
Yuri
la source
11
Juste une note que vous pouvez toujours utiliser bundler en définissant une variable d'environnement de configuration:export CONFIGURE_ARGS="with-pg-config=/Applications/Postgres.app/Contents/MacOS/bin/pg_config"
film42
8
Si vous utilisez Postgres 9.3 (le dernier en date d'aujourd'hui), vous pouvez le faire: gem install pg -- --with-pg-config=/Applications/Postgres93.app/Contents/MacOS/bin/pg_config
cavneb
L'utilisation de Postgres93.app a fonctionné mais a dû ajouter le chemin du bac à la variable d'environnement PATH pour regrouper l'installation.
mkhatib
5
J'ai dû faire fonctionner cela en utilisant gem install pg -- --with-pg-config=/Applications//Postgres.app/Contents/Versions/9.3/bin/pg_config
StevenNunez
1
Merci! je recevais un avertissement: impossible de lier postgresql. Dissociation ... Erreur: Impossible de créer un lien symbolique sur le fichier: ... n'est pas accessible en écriture. Vous devez modifier ses autorisations. Et tout est faute de brassage, après avoir brassé install / link postgresql L'installation va à: Linking /usr/local/Cellar/postgresql/9.3.4 ... qui est dans mon cas un DOSSIER TRÈS CONFLICTIF, télécharger pg et gem installer en utilisant cela résout le problème MERCI !!!!!!
d1jhoni1b
74

Utilisez une infusion pour obtenir postgresql

brew install postgresql

Vérifiez que vous avez pg_config dans le brew installé. J'ai trouvé le mien en

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

Vérifier via:

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

Une fois terminé, installez la pggemme avec

env ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=/usr/local/Cellar/postgresql/9.3.3/bin/pg_config
Ayush Goel
la source
2
a travaillé pour moi après avoir essayé de nombreuses choses différentes. je devais juste m'assurer d'utiliser le bon numéro de version (9.3.5_1 dans mon cas)!
HK
1
Utilisez ls /usr/local/Cellar/postgresql/9.*/bin/pg_configpour trouver le vrai chemin et combinéenv ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=$(ls /usr/local/Cellar/postgresql/9.*/bin/pg_config)
Jesper Grann Laursen
Une description un peu plus détaillée de ce qui se passe ici deveiate.org/code/pg/README-OS_X_rdoc.html
Julia Usanova
35

Je n'ai pas pu installer postgres via MacPorts. Au lieu de cela, j'ai installé Postgress.app . et appelé

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

Remarque: dans les versions plus récentes (au moins dans la version 9.3), le chemin est en fait: /Applications/Postgres.app/Contents/Versions/9.3/bin/pg_config

iceui2
la source
2
Cela fonctionne, mais notez que parfois Postgres.app est installé en tant que Postgres <NN> .app où NN est le numéro de version.
nimrodm
11

Si vous avez un homebrew, tapez simplement:

$ brew installer postgresql

utilisateur2373148
la source
1
Cela a fonctionné pour moi - j'avais PostgreSQL déjà installé, mais je suppose que je devais l'installer à nouveau, pour actualiser les en-têtes (?) Alors je pourrais le fairegem install pg
Crimbo
10

Voici une autre alternative au cas où vous voudriez utiliser directement le programme d'installation de postgresql. Il y a quelques obstacles que vous devez franchir pour commencer après la mise à jour vers les non-conformistes. Voici ce que j'ai fait:

Installez d'abord les outils de ligne de commande xcode:

xcode-select --install

Téléchargez et installez la dernière version de PostgreSQL (9.3.1), dans mon cas, je viens d'utiliser l'installateur graphique. Voici le lien vers la page de téléchargement:

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

Choisissez simplement toutes les valeurs par défaut qu'il vous donne. Dans mon cas, il a installé postgres dans le répertoire suivant, si vous l'avez installé dans un répertoire différent, souvenez-vous simplement du chemin que vous avez choisi, car vous en aurez bientôt besoin.

/Library/PostgreSQL/9.3

Si vous essayez maintenant d'installer la dernière gemme pg (0.17.0), vous devrez passer quelques options sur la ligne de commande. Voici ce que j'ai utilisé:

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

Si vous avez installé postgres à un emplacement différent, vous devrez réparer le chemin d'accès au fichier pg_config.

S'il se plaint d'un fichier 'libpq.5.dylib' manquant en essayant d'installer le gem pg, vous devrez créer un lien symbolique pointant vers l'emplacement réel de ce fichier. Postgres le recherche dans votre répertoire / usr / local / lib / donc créez un lien symbolique là-dedans et redirigez-le vers son emplacement réel. Dans mon cas, je devais courir:

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

Une fois que vous avez fait cela, réessayez d'installer la gemme et j'espère que cela fonctionnera pour vous de la même manière que pour moi.

2 pommes de terre
la source
9

Pour moi, sur Yosemite, je n'avais pas besoin de spécifier le pg_configchemin. Ce qui suit l'a fait.

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

On dirait que le drapeau d'architecture est la clé.

dinigo
la source
5

Dans mon cas (j'avais besoin de PG 0.16.0 sur Mavericks), j'ai installé postgresql via MacPorts

sudo port install postgresql90

puis

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

Pour la dernière version, vous devez déduire -v '0.16.0'

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

Si Homebrew est installé, n'installez pas MacPorts avant d'avoir lu sur leur coexistence

Gi0
la source
5

Placez les éléments manquants --with-pg-configdans le fichier de configuration de Bundler: /Users/<your_user>/.bundle/configpour vous simplifier la vie.

---
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

Puis exécutez à bundle installnouveau.

Bruno Buccolo
la source
5

Ça marche pour moi! (Postgres 93, mac ox 10.9.1) 1. télécharger @ http://postgresapp.com/ et que

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

J'ai été bloqué sur mon installation de bundle pendant 3 jours. J'ai tout essayé, comme ajouter env ARCHFLAGS = "- arch x86_64" gem install pg - --with-pg-config = / usr / local / Cellar / postgresql / 9.3.5_1 / bin / pg_config

J'ai pu voir pg gem s'installer après cette commande, mais il n'était toujours pas installé à partir de l'installation du bundle, ce qui était pénible car je ne sais pas quoi écrire dans Gemfile sauf gem 'pg'

La chose qui a finalement fonctionné pour moi a été de trouver que mon pg_config était dans /Library/PostgreSQL/9.3/bin/pg_config et par défaut, l'installation du bundle Gemfile regarde dans / usr / local / bin / pg_config

J'ai juste exécuté la commande suivante et la magie s'est produite. bundle config build.pg --with-pg-config = / Bibliothèque / PostgreSQL / 9.3 / bin / pg_config

Neeraj Gupta
la source
4

Dans mon cas, cela ne fonctionnait pas si vous ne spécifiez pas les drapeaux de l'arche, OS X 10.10.3 et 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
la source
3

Le moyen le plus simple pour moi de résoudre ce problème était d'utiliser Postgres.app et de configurer mes variables d'environnement pour gem install pgfonctionner (au lieu d'exiger le --with-pg-configdrapeau).

Utilisation de 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
la source
2

Voici ce que cela a fonctionné pour moi:

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

Dans mon cas, j'ai désinstallé la version installée via homebrew et je suis passé à Postgres.app (v9.3.4.2 au moment de la rédaction).

Cela ne semblait fonctionner qu'en ajoutant les indicateurs d'architecture d'environnement et en spécifiant le chemin vers pg_config. Votre kilométrage peut varier, donc cette réponse pourrait vous aider avec des variations sur pg_configl'emplacement de.

Voici la commande finale et complète qui a fonctionné pour moi:

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

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

Taysky
la source
cela a également fonctionné pour moi avec une installation groupée comme ceci:ARCHFLAGS="-arch x86_64" bundle install
d4n3
1

J'obtenais la même erreur lors de l'exécution de l'installation du bundle concernant le pg gem (en utilisant Mac OS X Mavericks). Après des heures de recherche, j'ai trouvé la solution. J'ai installé postgres en utilisant homebrew

brew install postgres

Après avoir installé cela, j'ai créé une nouvelle application de rails à l'aide de postgres. L'Iran

bundle install

en vain (a eu la même erreur que la question). j'ai utilisé

which psql

pour savoir où mon postgres a été installé, il est retourné

/usr/local/bin/psql

avant d'exécuter à nouveau l'installation du bundle, j'ai dû changer le chemin global vers build.pg en exécutant ce qui suit

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

puis j'ai exécuté à nouveau l'installation du paquet et le tour est joué! J'ai utilisé les postgres où Brew l'a installé.

Rav Johal
la source
1

Sur OS X Mavericks avec la dernière application Postgres, procédez comme suit avec les privilèges 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
la source
1

Ce qui a fonctionné pour moi sur 10.9.3 avec Xcode 5.1.1 était le suivant:

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

J'avais besoin de la page 0.17.1

Tom Andersen
la source
1

Pour toute âme perdue qui a encore ce problème sans résolution et a brewinstallé un ruby et des postgres . Voici les étapes suivantes pour vous assurer:

  • Assurez-vous que votre version de rubyn'a pas été installée avec l' --universalindicateur.
    • C'était la chose la plus difficile à comprendre, j'avais --universalquelle était la racine finale du problème.
  • Assurez-vous que vous avez postgresqlcorrectement initialisé avec les commandes initdbet createdb(cherchez ailleurs pour les étapes à suivre).
  • Assurez-vous Xcode(facultatif) et command line toolsest installé; sur le terminal:
    • xcode-select --install
    • sudo xcodebuild -license (si Xcode est installé) ou ouvrez l'application et acceptez le contrat de licence.
    • Redémarrer l'ordinateur
  • which ruby, which gemet which postgresdevrait montrer /usr/local/bin/ruby, /usr/local/bin/gemet/usr/local/bin/postgres respect.
  • Sur le terminal:

    • gem install pg -- --with-pg-config=/usr/local/bin/pg_config
    • ou
    • env ARCHFLAGS="-arch x86_64" gem install pg -- --with-pg-config=/usr/local/bin/pg_config
  • En m'assurant que toutes ces étapes sont satisfaites, j'ai pu résoudre les erreurs suivantes:

    • ruby.h erreur d'en-tête
    • developer tools installed first Erreur
link_boy
la source
1

Tout d'abord, trouvez l'emplacement de pg_config

sudo find / -name "pg_config" -print

La réponse est /Library/PostgreSQL/9.1/bin/pg_config dans ma configuration (MAC Maverick)

Ensuite, essayez d'installer quelque chose comme ci-dessous

gem install pg - --with-pg-config = / Bibliothèque / PostgreSQL / 9.3 / bin / pg_config

si cela ne fonctionne pas, essayez de vérifier de quelle manière vous avez installé postgresql

brassage / port mac / configuration

alors vous devez essayer l'option appropriée à la même chose.

Je vous remercie.

RAM

Rameshwar Vyevhare
la source
0

J'étais avec le même problème, c'était la solution que j'ai trouvée.

Si vous exécutez brew doctor, cela vous dira que vous avez probablement installé quelque chose sans infusion qui a modifié les autorisations sur certains dossiers, et que vous devez donc vous redonner les autorisations sur ce dossier.

À l'intérieur /usr/local/share/man, ce que vous pouvez faire est ce qui suit:

sudo chown [yourusername] man7

Puis:

brew link postgres

J'espère que ça aide!

Gustavo Semião-Lobo
la source
0

De même, après l'installation de Mavericks, la `` mise à jour du bundle '' a généré une erreur sur le pg gem, qui n'est utilisé qu'en production et pas localement.

J'utilise Brew pour gérer mes paquets et postgresql était déjà installé, mais j'obtenais toujours l'erreur 'no pg_config'.

Le correctif consistait simplement à «brasser désinstaller postgresql», puis «brasser installer postgresql». Après quoi, j'ai immédiatement pu exécuter avec succès la `` mise à jour du paquet ''

Shannon Perkins
la source
0
sudo su 

puis

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

travaillé le 10.10.2

Keaton Burleson
la source
0

Si après avoir tout essayé ici, il ne s'installe toujours pas, essayez d'ouvrir Xcode et d'accepter le contrat de licence.

hattenn
la source
0

Pour moi, le message d'erreur ressemblait à ceci:

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

Comme le montre le message d'erreur, il essaie d'exécuter la commande / script "pg_config". Alors ajoutez-le simplement au chemin où que se trouve votre installation Postgres. Dans mon cas, j'ai fait:

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

puis

bundle

C'est tout.

paneer_tikka
la source
-1

Postgres 9.4:

gem install pg -- --with-pg-config=/Applications/Postgres93.app/Contents/Versions/9.4/bin/pg_config
MDD
la source
Une petite explication serait bien, pour éviter que cela ne se perde dans le flot des 19 autres réponses.
Brad Koch