Installation de PG Gem sur OS X - échec de la construction de l'extension native


183

Il semble que beaucoup d'autres aient eu des problèmes pour installer le pg gem. Aucune des solutions proposées pour les autres n'a fonctionné pour moi.

J'ai essayé d'installer le pg gem et postgres.app. Le gem pg ne s'installe pas. La première erreur que j'obtiens est:

Une erreur s'est produite lors de l'installation de pg (0.17.0) et Bundler ne peut pas continuer. Assurez-vous que cela gem install pg -v '0.17.0'réussit avant de regrouper.

Le conseil d'installation pour pointer mon installation gem vers la configuration pour pg échoue avec le message d'erreur suivant (que beaucoup d'autres sur ce forum ont rencontré):

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

Je ne sais pas comment trouver ou accéder à ce fichier journal pour rechercher d'autres indices.

J'obtiens également un message d'erreur (commande introuvable) lorsque j'essaye d'utiliser la commande sudo apt-get install. J'ai parcouru ce forum pendant les 6 dernières heures, essayant chaque morceau de conseil pour faire travailler pg avec mon projet de rails.

Je ne trouve pas de conseils sur la façon de modifier un chemin ou, plus précisément, sur le changement requis. My which pg_configrenvoie une source de fichier. Je l'ai utilisé avec une commande pour installer pg en utilisant cette configuration. Il échoue.

Il y a tellement de gens qui ont eu des problèmes avec ça. De nombreuses réponses suggèrent un homebrew. J'ai dû supprimer cela parce que cela a soulevé d'autres problèmes.


1
Hé, quelques questions qui vous aideront plus tard: - Vous êtes sur Mac, non? Cela a mal tourné avec l'homebrew? (ps, comme vous l'avez noté, apt-get est juste pour Ubuntu (et ses cousins ​​basés sur Debian)) - quelle version postgres avez-vous? essayez de courir psql -vdans votre shell. - quelle version ruby ​​utilisez-vous? Cela ressemble à la version 1.9.3, mais qu'est-ce que cela ruby -vvous donne?
rmosolgo

Je dois ajouter que mon psql est ajouté dans: /Applications/Postgres-1.app/Contents/MacOS/bin/psql; sortie; psql (9.3.0) mais que psql renvoie: usr / bin / psql
Mel

Salut, merci beaucoup d'avoir regardé cela. Mon psql est la v 9.3.0 et ruby ​​est la v 1.9.3
Mel

1
Voir la réponse de @ paninapress pour Postgres.app. Cela a très bien fonctionné pour moi et ne nécessite pas l'installation d'une autre instance de Postgres.
Jamon Holmgren

Réponses:


442

Même erreur pour moi et je ne l'ai pas ressentie avant de télécharger OS X 10.9 (Mavericks). Soupir, un autre casse-tête de mise à niveau du système d'exploitation.

Voici comment je l'ai résolu (avec homebrew):

  • Installez une autre version de Xcode Tools (la saisie brew updatedans le terminal vous invitera à mettre à jour les outils de construction Xcode)
  • brew update
  • brew install postgresql

Après cela a gem install pgfonctionné pour moi.


7
Après deux jours de maux de tête à essayer de réparer ma base de données Rails après la mise à niveau de Mavericks, cela a résolu le problème pour moi, merci beaucoup.
Deborah

4
Cela a fonctionné pour moi aussi - sur une nouvelle installation de Mavericks. Merci!
marcamillion

1
Merci d'avoir sauvé ma santé mentale!
Jim

1
Je travaille encore. Le projet est sur Ruby 2.2.0 pour prendre en charge une application ancienne, mais tout de même MERCI.
TristanZimmerman

1
1. brew update2. brew install postgresql3. gem install pg4.bundle install
kai_onthereal

223

Si vous utilisez Ubuntu, essayez d'installer le fichier lib suivant

sudo apt-get install libpq-dev

puis

gem install pg

travaillé pour moi.


4
A travaillé pour moi aussi. J'utilise ubuntu 13.10.
rafaelkin

4
Assurez-vous simplement de le saisir correctement. Ce n'est pas libpg-dev; C'est un Q pas un P! Il m'a fallu 10 minutes pour comprendre cela à la dure.
tir38

1
Pour Amazon Linux c'estyum install postgres-devel
andrewtweber

1
A travaillé pour moi sur Ubuntu 14 !!
18 octets

6
Pour CentOSyum install postgresql-devel
septerr

49

J'utilise OS X Mavericks (version 10.9)

et quand j'exécute ce qui précède, j'ai le message suivant: Si les versions de PostgreSQL 9 échouent et que la version 8.x est installée.

Je lance donc la commande suivante:

ARCHFLAGS="-arch x86_64" gem install pg

et cela a fonctionné pour moi, j'espère que cela aide quelqu'un :)


2
+1, j'en ai essayé d'autres, mais finalement j'ai installé pg par gem avec cette solution.
BMW

1
+1, de même, c'était la solution pour moi aussi, où mon postgresql était déjà installé via brew. Merci Jon pour le message.
Jason Hoekstra

5
nb Si vous installez en tant que root (pour une raison quelconque), sudo passe avant la variable:sudo ARCHFLAGS="-arch x86_64" gem install pg
Noach Magedman

En fait, j'en ai besoin à chaque fois que je cours, bundle installalors je l'ai mis à l'intérieur ~/.bash_profilecomme export :)
Ja͢ck

42

Ok, j'ai aussi eu ce problème (psql est v 9.3.0 et ruby ​​est v 2.1.2) et la solution qui a fonctionné pour moi était de définir d'abord les paramètres de configuration du bundle:

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

Cette réponse m'a finalement aidé à le comprendre: https://stackoverflow.com/a/9235107/3546680


6
Cette méthode est préférable si vous utilisez postgres.app. L'utilisation de Homebrew peut résoudre le problème d'extension native, mais avoir deux applications postgres créera des conflits (comme l'allocation de port) Voir aussi la réponse de Sayanees sur stackoverflow.com/questions/19569031/…
Epigene

4
C'est certainement la bonne réponse pour Postgres.app.
Jamon Holmgren

Fonctionne bien sur Mojave, essayé avec succès il y a quelques minutes.
microspino

23

J'ai tout essayé pendant des heures mais ce qui suit a finalement résolu le problème (je suis sous OS X 10.9.4):

  1. Installer les outils de ligne de commande Xcode (site Apple Developer)
  2. brew désinstaller postgresql
  3. brew installer postgresql
  4. ARCHFLAGS = "- arch x86_64" gem install pg

Merci. J'avais utilisé sudo pour l'étape 4, est-ce une mauvaise chose? Comment puis-je l'éviter?
Roy

@Roy - heureux d'aider :) - devrait être bien, je veux probablement éviter d'utiliser sudo car je pense qu'il l'installera pour tous les utilisateurs, mais si vous êtes le seul utilisateur sur le système, ce n'est probablement pas si grave .
Ali Yazdani le

brew uninstall postgresqlet brew install postgresqlne sont pas des étapes nécessaires sous OS X 10.10 et 10.11. Juste gem uninstall pg(et supprimez toutes les versions), puis assurez-vous que vous bundleou gem install pgencore les extensions natives seront reconstruites avec les nouveaux outils de ligne de commande pour cette version d'OS X.
Olivier Lacan


6

De même, après l'installation de Mavericks, bundle updateune erreur s'est produite sur le gem pg, 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 était juste brew uninstall postgresql, alorsbrew install postgresql . Après quoi, j'ai immédiatement pu courir avec succès bundle update.


6

Je crois que la réponse «correcte» serait de configurer d'abord PATH correctement pour Postgres.app en ajoutant ce qui suit à ~/.profile( .zshrcou ~/.zprofilesi vous utilisez ZSH):

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

Ensuite, ouvrez un nouvel onglet ou une nouvelle fenêtre dans le terminal et installez le pggem avec:

ARCHFLAGS="-arch x86_64" gem install pg

Documenté ici:


5

Sur OSX avec Postgres installé dans / Applications, j'exécute simplement la commande suivante (changez 0.20 et 9.4 selon votre version)

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

Tu aurais dû :

Construire des extensions natives avec: '--with-pg-config = / Applications / Postgres.app / Contents / Versions / 9.4 / bin / pg_config' Cela peut prendre un certain temps ... Installation réussie de pg-0.20.


Pouvez-vous expliquer pourquoi nous avons dû utiliser le tiret 2 plus longtemps avant que l'argument ne soit réellement fourni?
Akash Agarwal

3

J'ai passé une journée là-dessus et voici comment je l'ai résolu:

J'ai trouvé que la valeur globale de build.pg était définie sur: /opt/local/lib/postgresql91/bin/pg_config et ce n'était pas là que postgres était installé.

Je l'ai corrigé en remplaçant la valeur de build.pg par: bundle config build.pg --with-pg-config=/usr/local/Cellar/postgresql/9.4.4/bin/pg_config c'est là que se trouve mon installation postgresql.


1

Essayer:

gem install pg -- --with-pg-config=`which pg_config`

0

Résolu! J'ai trouvé un manque de bibliothèque pour PostgreSQL sur le système. Seules deux étapes l'ont résolu:

brew install postgresql

Puis cours

gem install pg


0

Pour ceux qui ne sont pas intéressés à utiliser brew.

  1. Télécharger PostgreSQL application.
  2. Suivez les instructions par défaut de macOS pour l'installer.
  3. Il est conseillé de courir PostgreSQl.
  4. Exécutez gem install pg -- --with-pg-config=/ chemin / vers / postgress / dans / votre / dossier / applications / `
    • Par exemple, dans ma machine, c'est /Applications/Postgres.app/Contents/Versions/12/bin/pg_config
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.