Ubuntu'ya PostgreSQL'in pg gem'i nasıl kurulur?


292

Ruby için PostgreSQL'in pg gem'ini kurmaya çalışıyorum.

Aşağıdaki komutu verdim:

gem install pg

RVM kullanarak Ruby 1.9.2'yi yükledim.

Yukarıdaki komut bana aşağıdaki hatayı gösterir.

Hata:

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

Hatanın ne olduğunu bilmiyorum ...


1
apt install postgresql-server-dev-allUbuntu 18.04 için.
Richard Peck

Yanıtlar:


678

PostgreSQL dev paketini PostgreSQL üstbilgisiyle yüklemelisiniz

sudo apt-get install libpq-dev

Bunu önerinize göre yaptım ... follwoing olsun Arşiv 0B almanız gerekiyor. Paketten çıkarıldıktan sonra 5378kB serbest bırakılacaktır. Devam etmek istiyor musun? [E / h /?] Y Genişletilmiş durum bilgisi yazma ... Tamam (Veritabanı okunuyor ... 166183 dosya ve dizinler şu anda yüklü.) Bizon kaldırılıyor ... libnss3-dev kaldırılıyor ... libnspr4-dev kaldırılıyor ... Kaldırılıyor libqt4-core ... libqt4-test kaldırılıyor ... libsqlite3-dev kaldırılıyor ... man-db için tetikleyiciler
işleniyor

3
Benim için Ubuntu'ya gerçekten yeni olanlar için, ama sudo apt-get install aptitudeönce yeni kullanım için :)
Haris Krajina

1
her türlü kombinasyonu denedi. postgres ve libpq'i yeniden yükledikten sonra bile. şans yok .. hala aynı sorun
Krishnaprasad Varma

5
Cent / RedHat aromalı dağıtımlar için, istediğiniz paketyum install postgresql-devel
Kyril

1
Bu Ubuntu sürümleri nedeniyle bazı insanlar için çalışmıyor olabilir hissediyorum. Bu benim için 13.04 Postgres 9.1
Rebs

40

2 gün boyunca okuduktan ve döktükten ve diğer notlarda bulunan birçok şeyi denedikten sonra, aşağıdaki tek satır, bazı Maverick paketleri ve RVM (ruby 1.9.2-p290, rvm 1.10.2 rubygems ile karıştırılmış Ubuntu Lucid 10.04'te benim için tedavi oldu. 1.8.15, raylar 3.0.1, postgres 8.4.10):

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

sonuç:

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

{evet - sonunda başarı} !! pg_config komutunun çalıştığı çıktıda Ubuntu / Postresql kurulumumdaki LIBS değişkenindeki -lpq öğesi bulunmuyor!

ve neden belirli yerlerde pq'den pg'ye geçiş - acemi kafa karıştırıcı ??

hala anlamadığım şey çift - ve --with (seçenek ama yine de derinliğimin çok ötesindeyim)


2
'-' genellikle parametreleri ilk komuttan ikinciden ayırmak için kullanılır, bu durumda, extmodun yapılandırma betiği
Timothy Meade

1
Teşekkür ederim. Çözümünüz mükemmeldi.
Sid

Bu çözümü paylaştığınız için çok teşekkürler. bir günlüğüne takıldım. sevindim bu yazı ile karşılaştı.
whizcreed

30

Ubuntu 12.10 kullanıyorum ve şu komutu çalıştırıyorum:

apt-get install libpq-dev

bana yardımcı oldu - o koştu gem yüklemek pg-v "0.14.1", ve şimdi iyi



25

Ubuntu'da bu benim için çalışıyor, umarım size yardımcı oluruz:

sudo apt-get install libpq-dev

ve

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

24

Libpq-dev'i kurmak benim için işe yaramadı. Ayrıca derleme için gerekli kurulumu yapmam gerekiyordu

sudo apt-get install libpq-dev build-essential

16

Ubuntu kullanıcıları için basit bir çözüm ...

Önce tüm postgres paketlerini kaldırın, sonra bu komedileri çalıştırın ...

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

Ardından 'bundle install' komutunu çalıştırın. Her şey iyi olacak. İyi günler!


1
İnsanlar tüm postgres paketlerini nasıl kaldıracağını merak ediyorlarsa, sudo apt-get remove --purge postgresql postgresql-9.3 (veya postgres'in herhangi bir sürümü).
Tommyixi

9

.RVM kullanıcıları için daha iyi olacaktır:

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

benim için çalıştı (jdupont sürümünü gördükten sonra)


7

Libpq-dev yüklüyse ve hala bu sorunu yaşıyorsanız, muhtemelen OpenSSL'nin libssl ve arkadaşlarının çakışan sürümleri - / usr / lib'deki Ubuntu sistem sürümü (hangi libpq karşı inşa edilmiştir) ve $ olarak yüklenmiş ikinci bir sürüm RVM'den kaynaklanıyor olabilir. HOME / .rvm / usr / lib (veya bir sistem kurulumu ise / usr / local / rvm / usr / lib). $ HOME / .rvm / usr / lib dosyasını geçici olarak yeniden adlandırarak ve "gem install pg" nin çalışıp çalışmadığını görerek bunu doğrulayabilirsiniz.

Sorunu çözmek için sistem OpenSSL kitaplıklarını kullanarak rvm yeniden oluşturma (libssl. * Ve libcrypto. * Rvm / usr / lib dizininden el ile kaldırmanız gerekebilir):

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

Bu sonunda problemi Ubunto 12.04'te çözdü.


Bu cevap için teşekkürler! Ubuntu ne kadar yeni ve yakut yapı ne kadar büyük olursa OpenSSL uyumsuzluğu oluşma olasılığı o kadar yüksektir.
mikeycgto

Bunun dışında başka hiçbir şey işe yaramadı! Çok teşekkür ederim @ mike-blackwell. Kurtarmaya gelmeden önce neredeyse umudumu yitirmiştim.
varagrawal


5

Bu, her öneri başarısız olduktan sonra Ubuntu 12.04'te benim için sorunu çözdü.

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

Benim çözümüm neredeyse aynıydı; Ben rbenv kullanıyorum ve benim için çalıştı: `gem yükleme pg - --with-pg-lib = / usr / lib / postgresql / --with-pg-include = / usr / include / postgresql /`; Bir sürüm belirtmem gerekmedi.
Dan Tenenbaum

3

Yeni yüklenen Ubuntu 16.04'ümde bir Rails projesi kurmaya çalışıyordum. Paketi çalıştırırken de aynı sorunla karşılaştım. Koşu

sudo apt-get install aptitude

bunu takiben

sudo apt-get install libpq-dev

Benim için çözdüm.


3

Bu sayfadaki tüm yanıtları denedikten sonra hala sorun yaşayan herkes için aşağıdakiler (nihayet) çalıştı:

sudo apt-get install libgmp3-dev
gem install pg

Bundan sonra bu sayfada belirtilen her şeyi .

postgresql 9.5.8
Ubuntu 16.10


Ubuntu
18.04'te

1

Aynı sorunu yaşadım ve birçok farklı varyant denedim. Bazı denemelerden sonra yapabildim sudo gem install, ama yine de sudo olmadan yüklemekte sorun yaşıyorum .
Sonunda bir karar buldum - rvm yeniden yüklemek bana yardımcı oldu. Muhtemelen başkasına zaman kazandırabilir.


1

Bu sorunun bir başka çözümü de Homebrew / linuxbrew kullanarak PostgreSQL'i kurmaktır:

brew install postgresql

Bir alışkanlık meselesi olarak sudo kullanmam gerekmiyor.


Homebrew sadece Mac içindir.
IIllIIll

2
Bir Linux çatalı var.
echristopherson

PostgreSQL'in tamamını kurmak istemiyorsanız, aşağıdakiler benim için çalıştı:brew install libpq && brew link libpq --force
Andrew

1

Redmine kurmaya çalışanlar için özledim sudo apt-get install ruby-all-dev , yukarıdakilerin hepsini denedikten sonra .

Başlangıç ​​hatası mkmf.rb can't find header files for ruby at /usr/lib/ruby/include/ruby.h.



0

Başka bir seçenek de sadece destekleyici kütüphaneleri kurmak için Linux ve macOS üzerinde çalışan Homebrew'u kullanmaktır :

brew install libpq

sonra

brew link libpq --force

( --forceseçenek, postgres formülüyle çakıştığı için gereklidir.)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.