2010-06-25 5 views
236

J'essaye d'installer le gg pg de PostgreSQL pour Ruby.Comment installer le pg gem de PostgreSQL sur Ubuntu?

I a émis la commande suivante:

gem install pg 

J'ai installé Ruby 1.9.2 en utilisant RVM.

La commande ci-dessus me montre l'erreur suivante.

L'erreur est:

Building native extensions. This could take a while... 

ERROR: Error installing pg: 

ERROR: Failed to build gem native extension. 

/home/User/.rvm/rubies/ruby-1.9.2-preview3/bin/ruby extconf.rb 

checking for pg_config... yes 
checking for libpq-fe.h... yes 
checking for libpq/libpq-fs.h... yes 
checking for PQconnectdb() in -lpq... no 
checking for PQconnectdb() in -llibpq... no 
checking for PQconnectdb() in -lms/libpq... no 
Can't find the PostgreSQL client library (libpq) 

*** extconf.rb failed *** 

Could not create Makefile due to some reason, probably lack of 
necessary libraries and/or headers. Check the mkmf.log file for more 
details. You may need configuration options. 

Provided configuration options: 
--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=/home/User/.rvm/rubies/ruby-1.9.2-preview3/bin/ruby 
--with-pg 
--without-pg 
--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}/lib 
--enable-static-build 
--disable-static-build 
--with-pqlib 
--without-pqlib 
--with-libpqlib 
--without-libpqlib 
--with-ms/libpqlib 
--without-ms/libpqlib 

Gem files will remain installed in /home/user/.rvm/gems/ruby-1.9.2-preview3/gems/pg-0.9.0 for inspection. 

Results logged to /home/user/.rvm/gems/ruby-1.9.2-preview3/gems/pg-0.9.0/ext/gem_make.out 

Je ne sais pas quelle est l'erreur ...

Répondre

569

Vous devez installer le paquet dev postgreSQL avec en-tête de PostgreSQL

sudo apt-get install libpq-dev 
+0

Je l'ai fait selon votre suggestion ... l'obtenir le follwoing Besoin d'obtenir 0B des archives. Après le déballage, 5378 Ko seront libérés. Voulez-vous continuer? [Y/n /?] Y Ecriture d'informations d'état étendues ... Terminé (Lecture de la base de données ... 166183 fichiers et répertoires actuellement installés.) Suppression de bison ... Suppression de libnss3-dev ... Suppression de libnspr4- dev ... Suppression de libqt4-core ... Suppression de libqt4-test ... Suppression de libsqlite3-dev ... Traitement des déclencheurs pour man-db .. – palani

+4

Il semble que cela ne résout pas mon problème ... Je suis toujours coincé avec le même – palani

+4

Cela a fonctionné pour moi: D Merci! – miguelSantirso

35

Après lire et se débattre pendant 2 jours, et en essayant beaucoup de choses trouvées dans d'autres notes la seule ligne suivante a été le remède pour moi sur Ubuntu Lucid 10.04 mélangé avec certains forfaits Maverick et RVM (ruby 1.9.2-p290, RVM 1 .10.2 rubygems 1.8.15, rails 3.0.1, 8.4.10) Postgres:

gem install pg -- --with-pg-lib=/usr/lib 

le résultat:

Building native extensions. This could take a while... 
Successfully installed pg-0.13.1 
1 gem installed 
Installing ri documentation for pg-0.13.1... 
Installing RDoc documentation for pg-0.13.1... 

{oui - enfin le succès} !! ! Notez que la sortie de pg_config en cours d'exécution manque l'élément -lpq dans la variable LIBS sur mon installation Ubuntu/Postresql !!

et pourquoi le passage de pq à pg dans certains endroits - déroutant pour les débutants ??

la chose que je ne comprends toujours pas le double jeu de - et --with (en option mais je suis bien au-delà de toute façon ma profondeur

+0

vous m'avez sauvé la vie !! – fenec

+1

le '-' est couramment utilisé pour séparer les paramètres de la première commande de la seconde, dans ce cas, le script de configuration de l'extmod –

+1

Merci. Votre solution était parfaite. – Sid

9

Pour les utilisateurs .RVM il sera mieux:

rvmsudo gem install pg -- --with-pg-lib=/usr/lib 

cela a fonctionné pour moi (après avoir vu la version jdupont)

18

Installation libpq-dev ne fonctionne pas pour moi. J'ai aussi besoin d'installer build-essential

sudo apt-get install libpq-dev build-essential 
+0

Cela fonctionne avec Ubuntu 16.04.1 sur l'océan numérique – Onyooo

4

Cela a résolu le problème pour moi sur Ubuntu 12.04 après chaque suggestion ici avait échoué.

rvmsudo gem install pg -v '0.12.2' -- --with-pg-lib=/usr/include/postgresql 
+0

Ma solution était presque la même; J'utilise rbenv et ce qui a fonctionné pour moi était: 'gem install pg - --with-pg-lib =/usr/lib/postgresql/- avec-pg-include =/usr/include/postgresql /'; Je n'avais pas besoin de spécifier une version. –

28

Je suis sur Ubuntu 12.10 et l'exécution de cette commande:

apt-get install libpq-dev 

m'a aidé - après coururent gem install pg -v "0.14.1", et tout bon maintenant

6

Si vous avez installé libpq-dev et que vous avez toujours ce problème, cela est probablement dû à des versions conflictuelles de libssl et d'amis d'OpenSSL - la version système d'Ubuntu dans/usr/lib (sur laquelle libpq est construit) et une seconde version RVM installée dans $ HOME/.rvm/usr/lib (ou/usr/local/rvm/usr/lib s'il s'agit d'une installation système). Vous pouvez le vérifier en renommant temporairement $ HOME/.rvm/usr/lib et en vérifiant si "gem install pg" fonctionne.

Pour résoudre le problème ont reconstruire RVM en utilisant les bibliothèques OpenSSL du système (vous devrez peut-être supprimer manuellement libssl * et libcrypto * de la RVM/usr/lib dir..):

rvm reinstall 1.9.3 --with-openssl-dir=/usr 

Cela a finalement résolu le problème pour moi sur Ubunto 12.04.

+0

Merci pour cette réponse! Plus l'Ubuntu est récent et plus le ruby ​​est ancien, plus il est probable qu'une discordance OpenSSL se produira. – mikeycgto

+0

Rien d'autre a travaillé sauf pour cela! Merci beaucoup @ mike-blackwell. J'avais presque perdu espoir avant de venir à la rescousse. – varagrawal

1

J'ai eu le même problème, et j'ai essayé beaucoup de variantes différentes. Après quelques essais, je suis devenu capable de sudo gem install, mais j'ai encore des problèmes pour l'installer sans sudo.
Enfin, j'ai trouvé une décision - la réinstallation de RVM m'a aidé. Probablement, cela peut faire gagner du temps à quelqu'un d'autre.

16

solution simple pour les utilisateurs ubuntu ...

désinstaller d'abord tous les paquets de Postgres, puis exécutez ces commads ...

sudo apt-get install postgresql 
sudo apt-get install postgresql-client libpq5 libpq-dev 

# for rvm (single user) 
mv ~/.rvm/usr/lib ~/.rvm/usr/lib_rvm 

# for rvm (multi-user) 
mv /usr/local/rvm/usr/lib /usr/local/rvm/usr/lib_rvm 

gem install pg -- --with-pg-lib=/usr/lib 

Ensuite, exécutez 'paquet install'. Tout ira bien. Bonne journée!

+1

Si les gens sont curieux de savoir comment supprimer tous les paquets postgres, sudo apt-get remove --purge postgresql postgresql-9.3 (ou toute autre version de postgres que vous avez). – Tommyixi

0

Une autre solution à ce problème consiste à installer PostgreSQL avec Homebrew/linuxbrew: En habitude je n'aime pas

brew install postgresql

à utiliser sudo à moins que je dois.

+0

Homebrew est seulement pour Mac. – IIllIIll

+2

Il y a une branche Linux. – echristopherson

23

besoin d'ajouter package

sudo apt-get install libpq-dev 

installer gem pg dans RoR

3

j'essaye d'installer un projet Rails dans mon Ubuntu 16.04 fraîchement installé. J'ai rencontré le même problème lors de l'exécution de bundle. Courir

sudo apt-get install aptitude 

suivie

sudo apt-get install libpq-dev 

a résolu le problème pour moi.

1

Pour ceux qui essayaient d'installer Redmine, j'ai raté sudo apt-get install ruby-all-dev après avoir essayé tout ce qui précède.

L'erreur initiale étant mkmf.rb can't find header files for ruby at /usr/lib/ruby/include/ruby.h.

0

Pour tous ceux qui toujours des problèmes après avoir essayé toutes les réponses sur cette page, les éléments suivants (enfin) a travaillé:

sudo apt-get install libgmp3-dev 
gem install pg 

Ce fut après tout faire autre mentionné sur ce page.

postgresql 9.5.8
Ubuntu 16.10

0

Dans Ubuntu cela fonctionne pour moi, je l'espère, vous aider:

sudo apt-get install libpq-dev 

et

gem install pg -- --with-pg-lib=/usr/lib 
Questions connexes