Comment installer la gem pg de PostgreSQL sur Ubuntu?

292

J'essaie d'installer la gem pg de PostgreSQL pour Ruby.

J'ai é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 ...

palani
la source
1
apt install postgresql-server-dev-allpour Ubuntu 18.04.
Richard Peck

Réponses:

678

Vous devez installer le package de développement postgreSQL avec en-tête de PostgreSQL

sudo apt-get install libpq-dev
shingara
la source
Je l'ai fait selon votre suggestion ... obtenez le besoin suivant pour obtenir 0B d'archives. Après le déballage, 5378 Ko seront libérés. Voulez-vous continuer? [O / n /?] O Écriture des informations d'état étendues ... Terminé (lecture de la base de données ... 166183 fichiers et répertoires actuellement installés.) Suppression du bison ... Suppression de libnss3-dev ... Suppression de libnspr4-dev ... Suppression libqt4-core ... Suppression de libqt4-test ... Suppression de libsqlite3-dev ... Traitement des déclencheurs pour man-db ..
palani
3
Pour ceux qui sont vraiment nouveaux sur Ubuntu comme moi, mais vraiment nouveaux pour sudo apt-get install aptitudecommencer :)
Haris Krajina
1
essayé toutes sortes de combinaisons. même après avoir réinstallé postgres et libpq. pas de chance .. toujours le même problème
Krishnaprasad Varma
5
Pour les distributions à saveur Cent / RedHat, le package que vous voudrez estyum install postgresql-devel
Kyril
1
J'ai le sentiment que cela peut ne pas fonctionner pour certaines personnes en raison de leurs versions d'Ubuntu. Cela échoue pour moi le 13.04 avec Postgres 9.1
Rebs
40

Après avoir lu et fouillé pendant 2 jours, et essayé beaucoup de choses trouvées dans d'autres notes, la ligne unique suivante était le remède pour moi sur Ubuntu Lucid 10.04 mélangé avec des paquets Maverick et RVM (ruby 1.9.2-p290, rvm 1.10.2 rubygems 1.8.15, rails 3.0.1, postgres 8.4.10):

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 l'exécution de pg_config n'a pas 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 est le double ensemble de - et - avec (option mais je suis bien au-delà de ma profondeur de toute façon

jdupont
la source
2
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
Timothy Meade
1
Je vous remercie. Votre solution était parfaite.
Sid
merci beaucoup d'avoir partagé cette solution. a été coincé à ce sujet pendant une journée. content d'avoir rencontré ce post.
whizcreed
30

Je suis sur Ubuntu 12.10 et j'exécute cette commande:

apt-get install libpq-dev

m'a aidé - après avoir exécuté gem install pg -v "0.14.1", et tout va bien maintenant

Alex
la source
26

Besoin d'ajouter un package

sudo apt-get install libpq-dev

installer pg gem dans RoR

Sartaj Singh Sisodiya
la source
25

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

sudo apt-get install libpq-dev

et

gem install pg  --   --with-pg-lib=/usr/lib 
Marcos Riveros
la source
24

L'installation de libpq-dev n'a pas fonctionné pour moi. J'avais également besoin d'installer build-essential

sudo apt-get install libpq-dev build-essential
philwhln
la source
16

Solution simple pour les utilisateurs ubuntu ...

Désinstallez d'abord tous les packages postgres, puis exécutez ces virgules ...

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

Exécutez ensuite «bundle install». Tout ira bien. Bonne journée!

Maruf Hasan Bulbul
la source
1
Si les gens sont curieux de savoir comment supprimer tous les paquets postgres, sudo apt-get remove --purge postgresql postgresql-9.3 (ou n'importe quelle version de postgres que vous avez).
Tommyixi
9

Pour les utilisateurs de .RVM, ce sera mieux:

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

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

vekozlov
la source
7

Si vous avez installé libpq-dev et que vous rencontrez toujours ce problème, cela est probablement dû à des versions conflictuelles de libssl et d'amis d'OpenSSL - la version du système Ubuntu dans / usr / lib (avec laquelle libpq est construit) et une deuxième 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 voyant si "gem install pg" fonctionne.

Pour résoudre le problème, faites reconstruire rvm à l'aide des bibliothèques système OpenSSL (vous devrez peut-être supprimer manuellement libssl. * Et libcrypto. * Du répertoire rvm / usr / lib):

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

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

Mike Blackwell
la source
Merci pour cette réponse! Plus Ubuntu est récent et plus la version Ruby est ancienne, plus il est probable qu'une incompatibilité OpenSSL se produise.
mikeycgto
Rien d'autre n'a fonctionné à part ça! Merci beaucoup @ mike-blackwell. J'avais presque perdu espoir avant que vous ne veniez à la rescousse.
varagrawal
5

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

rvmsudo gem install pg -v '0.12.2' -- --with-pg-lib=/usr/include/postgresql
olafurg
la source
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 / --with-pg-include = / usr / include / postgresql /`; Je n'avais pas besoin de spécifier de version.
Dan Tenenbaum
3

J'essayais de configurer un projet Rails dans mon Ubuntu 16.04 fraîchement installé. J'ai rencontré le même problème lors de l'exécution du bundle. Fonctionnement

sudo apt-get install aptitude

suivi par

sudo apt-get install libpq-dev

Résolu pour moi.

bishal
la source
3

Pour ceux qui ont encore des problèmes après avoir essayé toutes les réponses sur cette page, les éléments suivants ont (enfin) fonctionné:

sudo apt-get install libgmp3-dev
gem install pg

C'était après avoir fait tout le reste mentionné sur cette page.

postgresql 9.5.8
Ubuntu 16.10

tireurs d'élite
la source
C'est ce dont j'avais besoin sur Ubuntu 18.04
Weston Ganger
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 sudo gem install, mais j'ai toujours du mal à l'installer sans sudo.
Enfin, j'ai trouvé une décission - la réinstallation de rvm m'a aidé. Cela peut probablement faire gagner du temps à quelqu'un d'autre.

RaskolnikOFF
la source
1

Une autre solution à ce problème consiste à installer PostgreSQL en utilisant Homebrew / linuxbrew:

brew install postgresql

Par habitude, je n'aime pas utiliser sudo sauf si je le dois.

Braden Mugg
la source
Homebrew est uniquement pour Mac.
IIllIIll
2
Il y a une fourchette Linux.
echristopherson
Si vous ne voulez pas installer le PostgreSQL complet, ce qui suit a fonctionné pour moi:brew install libpq && brew link libpq --force
Andrew
1

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

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

Matthieu
la source
0

apt-get install ruby-dev travaillé pour moi.

ssss4world
la source
0

Une autre option consiste à utiliser Homebrew qui fonctionne sous Linux et macOS pour installer uniquement les bibliothèques de support:

brew install libpq

puis

brew link libpq --force

(l' --forceoption est requise car elle entre en conflit avec la formule postgres.)

Andrew
la source