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


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

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


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



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 

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

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!


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)


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.


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

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.


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


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.


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.


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.



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

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.