Bagaimana cara menginstal pg gem PostgreSQL di Ubuntu?

292

Saya mencoba untuk menginstal pg gem PostgreSQL untuk Ruby.

Saya mengeluarkan perintah berikut:

gem install pg

Saya menginstal Ruby 1.9.2 menggunakan RVM.

Perintah di atas menunjukkan kepada saya kesalahan berikut.

Kesalahannya adalah:

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

Saya tidak tahu apa kesalahannya ...

palani
sumber
1
apt install postgresql-server-dev-alluntuk Ubuntu 18.04.
Richard Peck

Jawaban:

678

Anda perlu menginstal paket dev postgreSQL dengan tajuk PostgreSQL

sudo apt-get install libpq-dev
shingara
sumber
Saya melakukan itu sesuai saran Anda ... dapatkan Kebutuhan follwoing untuk mendapatkan 0B arsip. Setelah membongkar 5378kB akan dibebaskan. Apakah Anda ingin melanjutkan? [Y / t? libqt4-core ... Menghapus libqt4-test ... Menghapus libsqlite3-dev ... Memproses pemicu untuk man-db ..
palani
3
Bagi mereka yang benar-benar baru di Ubuntu seperti saya, tetapi gunakan benar-benar baru sudo apt-get install aptitudepertama :)
Haris Krajina
1
mencoba semua jenis kombinasi. bahkan setelah menginstal ulang postgres dan libpq. tidak berhasil .. masih masalah yang sama
Krishnaprasad Varma
5
Untuk distro Cent / RedHat, paket yang Anda inginkan adalahyum install postgresql-devel
Kyril
1
Saya merasa ini mungkin tidak berfungsi untuk beberapa orang karena versi Ubuntu mereka. Ini gagal bagi saya pada 13,04 dengan Postgres 9.1
Rebs
40

Setelah membaca dan meronta-ronta selama 2 hari, dan mencoba banyak hal yang ditemukan dalam catatan lain, baris berikut adalah obat untuk saya di Ubuntu Lucid 10,04 dicampur dengan beberapa paket Maverick dan 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   

hasil:

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

{ya - akhirnya sukses} !! ! catat bahwa output dari menjalankan pg_config tidak memiliki item -lpq dalam variabel LIBS pada instal Ubuntu / Postresql saya !!

dan mengapa beralih dari pq ke pg di tempat-tempat tertentu - membingungkan pemula?

hal yang saya masih tidak mengerti adalah set ganda - dan - dengan (opsi tapi saya jauh melampaui kedalaman saya pula

jdupont
sumber
2
the - - 'biasanya digunakan untuk memisahkan parameter ke perintah pertama dari yang kedua, dalam hal ini, skrip configure dari extmod
Timothy Meade
1
Terima kasih. Solusi Anda sempurna.
Sid
terima kasih banyak untuk membagikan solusi ini. terjebak dalam hal ini selama sehari. senang saya menemukan posting ini.
whizcreed
30

Saya di Ubuntu 12.10 dan menjalankan perintah ini:

apt-get install libpq-dev

membantu saya - setelah itu jalankan permata instal pg -v "0.14.1", dan semuanya baik-baik saja sekarang

Xander
sumber
26

Perlu menambahkan paket

sudo apt-get install libpq-dev

untuk menginstal pg gem di RoR

Sartaj Singh Sisodiya
sumber
25

Di Ubuntu ini berfungsi untuk saya, saya harap membantu Anda:

sudo apt-get install libpq-dev

dan

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

Menginstal libpq-dev tidak berhasil untuk saya. Saya juga perlu menginstal build-essential

sudo apt-get install libpq-dev build-essential
philwhln
sumber
16

Solusi sederhana untuk pengguna ubuntu ...

Copot dulu semua paket postgres, lalu jalankan commad ini ...

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

Kemudian jalankan 'bundle install'. Semuanya akan baik-baik saja. Semoga harimu menyenangkan!

Maruf Hasan Bulbul
sumber
1
Jika orang penasaran tentang cara menghapus semua paket postgres, sudo apt-get remove --purge postgresql postgresql-9.3 (atau versi postgres apa pun yang Anda miliki).
Tommyixi
9

Untuk pengguna .RVM akan lebih baik:

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

itu bekerja untuk saya (setelah saya melihat versi jdupont)

vekozlov
sumber
7

Jika Anda telah menginstal libpq-dev dan masih mengalami masalah ini, hal ini kemungkinan disebabkan oleh versi libssl dan kawan-kawan OpenSSL yang saling bertentangan - versi sistem Ubuntu di / usr / lib (yang membuat libpq dibangun melawan) dan versi kedua RVM dipasang di $ HOME / .rvm / usr / lib (atau / usr / local / rvm / usr / lib jika itu adalah instalasi sistem) Anda dapat memverifikasi ini dengan mengganti nama sementara $ HOME / .rvm / usr / lib dan melihat apakah "gem install pg" berfungsi.

Untuk mengatasi masalah ini rvm membangun kembali menggunakan sistem pustaka OpenSSL (Anda mungkin perlu menghapus libssl. * Dan libcrypto secara manual. * Dari dir rvm / usr / lib):

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

Ini akhirnya menyelesaikan masalah bagi saya di Ubunto 12.04.

Mike Blackwell
sumber
Terima kasih atas jawaban ini! Semakin baru Ubuntu dan semakin tua ruby ​​build, semakin besar kemungkinan ketidakcocokan OpenSSL akan terjadi.
mikeycgto
Tidak ada yang berhasil kecuali untuk ini! Terima kasih banyak @ mike-blackwell. Saya hampir menyerah harapan sebelum Anda datang untuk menyelamatkan.
varagrawal
5

Ini memecahkan masalah bagi saya di Ubuntu 12,04 setelah setiap saran di sini gagal.

rvmsudo gem install pg -v '0.12.2' -- --with-pg-lib=/usr/include/postgresql
olafurg
sumber
Solusi saya hampir sama; Saya menggunakan rbenv dan apa yang berhasil untuk saya adalah: `permata install pg - --with-pg-lib = / usr / lib / postgresql / --with-pg-include = / usr / include / postgresql /`; Saya tidak perlu menentukan versi.
Dan Tenenbaum
3

Saya mencoba mengatur proyek Rails di Ubuntu 16.04 yang baru saya instal. Saya mengalami masalah yang sama saat menjalankan bundel. Lari

sudo apt-get install aptitude

diikuti oleh

sudo apt-get install libpq-dev

Memecahkannya untukku.

bishal
sumber
3

Bagi siapa pun yang masih mengalami masalah setelah mencoba semua jawaban di halaman ini, yang berikut (akhirnya) berfungsi:

sudo apt-get install libgmp3-dev
gem install pg

Ini setelah melakukan semua yang disebutkan di halaman ini.

postgresql 9.5.8
Ubuntu 16.10

marksiemers
sumber
Inilah yang saya butuhkan di Ubuntu 18.04
Weston Ganger
1

Saya memiliki masalah yang sama, dan mencoba banyak varian berbeda. Setelah beberapa kali mencoba saya menjadi mampu sudo gem install, tetapi masih memiliki masalah untuk menginstalnya tanpa sudo.
Akhirnya saya menemukan sebuah keputusan - menginstal ulang rvm membantu saya. Mungkin itu bisa menghemat waktu orang lain.

RaskolnikOFF
sumber
1

Solusi lain untuk masalah ini adalah menginstal PostgreSQL menggunakan Homebrew / linuxbrew:

brew install postgresql

Sebagai kebiasaan saya tidak suka menggunakan sudo kecuali saya harus.

Braden Mugg
sumber
Homebrew hanya untuk Mac.
IIllIIll
2
Ada garpu Linux.
echristopherson
Jika Anda tidak ingin menginstal PostgreSQL lengkap, yang berikut ini berfungsi untuk saya:brew install libpq && brew link libpq --force
Andrew
1

Bagi yang mencoba menginstal Redmine, saya ketinggalan sudo apt-get install ruby-all-devsetelah mencoba semua hal di atas.

Kesalahan awal adalah mkmf.rb can't find header files for ruby at /usr/lib/ruby/include/ruby.h.

Matthieu
sumber
0

apt-get install ruby-dev bekerja untukku.

ssss4world
sumber
0

Pilihan lain adalah menggunakan Homebrew yang berfungsi di Linux dan macOS untuk menginstal hanya pustaka pendukung:

brew install libpq

kemudian

brew link libpq --force

( --forceopsi ini diperlukan karena bertentangan dengan rumus postgres.)

Andrew
sumber