202 votes

Rails : Installation de la gemme PG sur OS X - échec de la construction de l'extension native

Il semble que beaucoup d'autres personnes aient eu des problèmes pour installer la gemme pg. Aucune des solutions proposées aux autres n'a fonctionné pour moi.

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

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

Le conseil d'installation qui consiste à faire pointer mon installation de gem vers la configuration de 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 chercher d'autres indices.

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

Je ne trouve pas de conseils sur la manière de changer de chemin, ou plus précisément sur la nature du changement à effectuer. Mon which pg_config renvoie un fichier source. J'ai utilisé cela avec une commande pour installer pg en utilisant cette configuration. Cela échoue.

Il y a tellement de gens qui ont eu des problèmes avec ça. De nombreuses réponses suggèrent le homebrew. J'ai dû supprimer cette solution parce qu'elle posait d'autres problèmes.

1 votes

Hé, quelques questions qui pourront vous aider : - Vous êtes sur Mac, n'est-ce pas ? Qu'est-ce qui n'a pas marché avec le homebrew ? (ps, comme tu l'as noté, apt-get est juste pour Ubuntu (et ses cousins basés sur Debian)) - quelle version de postgres as-tu ? essaye de lancer psql -v dans votre coquille. - Quelle est la version de ruby que vous utilisez ? Il semble que ce soit la version 1.9.3, mais qu'est-ce que ruby -v vous donner ?

0 votes

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

0 votes

Bonjour, merci beaucoup d'avoir examiné cette question. Mon psql est v 9.3.0 et mon ruby est v 1.9.3.

480voto

shicholas Points 1353

Même erreur pour moi et je ne l'ai rencontrée que lorsque j'ai téléchargé OS X 10.9 (Mavericks). Soupir, un autre mal de tête de mise à jour du système d'exploitation.

Voici comment j'ai résolu le problème (avec homebrew) :

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

Après cela gem install pg a fonctionné pour moi.

9 votes

Après deux jours de maux de tête à essayer de réparer ma base de données Rails suite à la mise à jour de Mavericks, ceci a réglé le problème pour moi, merci beaucoup.

4 votes

Cela a fonctionné pour moi aussi - sur une nouvelle installation de Mavericks. Merci de votre compréhension.

1 votes

Merci d'avoir sauvé ma santé mentale !

234voto

sandesh kota Points 1006

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

sudo apt-get install libpq-dev

et ensuite

gem install pg

a fonctionné pour moi.

4 votes

Cela a fonctionné pour moi aussi. J'utilise ubuntu 13.10.

0 votes

Génial ! Cela a fonctionné pour moi sur Ubuntu Desktop 13.10. Merci de votre aide !

0 votes

Cela a fonctionné pour Ubuntu 12.10 !

50voto

Jon Points 333

J'utilise OS X Mavericks (version 10.9)

et lorsque j'exécute le programme ci-dessus, j'obtiens le message suivant : Si les constructions de PostgreSQL 9 échouent et que vous avez la version 8.x installée.

Je lance donc la commande suivante :

ARCHFLAGS="-arch x86_64" gem install pg

et cela a fonctionné pour moi,

2 votes

+

1 votes

+

0 votes

En fait, j'en ai besoin à chaque fois que je cours bundle install Je l'ai donc mis à l'intérieur ~/.bash_profile en tant qu'exportation :)

47voto

paninapress Points 61

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 a été de définir les paramètres de configuration du bundle en premier :

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

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

6 votes

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

4 votes

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

0 votes

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

23voto

Ali Yazdani Points 21

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 (Apple Developer site)
  2. brew uninstall postgresql
  3. brew install postgresql
  4. ARCHFLAGS="-arch x86_64" gem install pg

0 votes

Nous vous remercions. J'ai utilisé sudo pour l'étape 4, est-ce une mauvaise chose ? Comment puis-je l'éviter ?

0 votes

@Roy - heureux de vous aider :) - Il faut é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 un gros problème.

0 votes

brew uninstall postgresql y brew install postgresql ne sont pas nécessaires sous OS X 10.10 et 10.11. Juste gem uninstall pg (et supprimez toutes les versions), puis assurez-vous que vous avez bundle o gem install pg et les extensions natives seront reconstruites avec les nouveaux outils de ligne de commande pour cette version d'OS X.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X