จะติดตั้ง pg gem ของ PostgreSQL บน Ubuntu ได้อย่างไร


292

ฉันพยายามติดตั้ง pg gem ของ PostgreSQL สำหรับ Ruby

ฉันออกคำสั่งต่อไปนี้:

gem install pg

ฉันติดตั้ง Ruby 1.9.2 โดยใช้ RVM

คำสั่งดังกล่าวแสดงให้ฉันเห็นข้อผิดพลาดดังต่อไปนี้

ข้อผิดพลาดคือ:

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

ฉันไม่รู้ว่าเกิดข้อผิดพลาดอะไร ...


1
apt install postgresql-server-dev-allสำหรับ Ubuntu 18.04
Richard Peck

คำตอบ:


678

คุณต้องติดตั้งแพ็คเกจ postgreSQL dev ที่มีส่วนหัวของ PostgreSQL

sudo apt-get install libpq-dev

ฉันทำอย่างนั้นตามคำแนะนำของคุณ ... การได้รับ follwoing จำเป็นต้องได้รับจดหมายเหตุ 0B หลังจากเอาออก 5378kB จะได้รับการปลดปล่อย คุณต้องการทำต่อไปหรือไม่? [Y / n /?] Y กำลังเขียนข้อมูลสถานะเพิ่มเติม ... เสร็จสิ้น (กำลังอ่านฐานข้อมูล ... 166183 ไฟล์และไดเรกทอรีที่ติดตั้งอยู่ในปัจจุบัน) การลบกระทิง ... การลบ libnss3-dev ... การลบ libnspr4-dev ... การลบ libqt4-core ... การลบการทดสอบ libqt4 ... การลบ libsqlite3-dev ... การประมวลผลทริกเกอร์สำหรับ man-db ..
palani

3
สำหรับผู้ที่จริงๆใหม่เพื่ออูบุนตูเป็นผม แต่ใช้จริงๆใหม่sudo apt-get install aptitudeครั้งแรก :)
Haris จินา

1
ลองชุดค่าผสมทั้งหมด แม้หลังจากติดตั้ง postgres และ libpq ใหม่ ไม่มีโชค .. ยังคงเป็นปัญหาเดียวกัน
Krishnaprasad Varma

5
สำหรับ Cent / RedHat-distoured flavored แพคเกจที่คุณต้องการคือyum install postgresql-devel
Kyril

1
ฉันมีความรู้สึกว่านี่อาจไม่ทำงานสำหรับบางคนเนื่องจากเวอร์ชัน Ubuntu ของพวกเขา สิ่งนี้ล้มเหลวสำหรับฉันเมื่อวันที่ 13.04 กับ Postgres 9.1
Rebs

40

หลังจากอ่านและฟาดฟันเป็นเวลา 2 วันและลองหลายสิ่งหลายอย่างที่พบในโน้ตอื่น ๆ บรรทัดต่อไปนี้คือการรักษาสำหรับฉันบน Ubuntu Lucid 10.04 ผสมกับแพ็คเกจที่ไม่ฝักใฝ่ฝ่ายใดและ RVM (ruby 1.9.2-p290, rvm 1.10.2 rubygems 1.8.15, ราง 3.0.1, postgres 8.4.10):

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

ผลลัพธ์:

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

{ใช่ - สำเร็จในที่สุด} !! ! ทราบว่าผลลัพธ์จากการทำงาน pg_config ขาดรายการ -lpq ในตัวแปร LIBS บน Ubuntu / Postresql ของฉันติดตั้ง !!

และทำไมเปลี่ยนจาก pq เป็น pg ในบางสถานที่ - สับสนกับมือใหม่?

สิ่งที่ฉันยังไม่เข้าใจคือชุดคู่ของ - และ - พร้อม (ตัวเลือก แต่ฉันเกินกว่าความลึกของฉันอยู่ดี


2
'-' มักใช้เพื่อแยกพารามิเตอร์เป็นคำสั่งแรกจากที่สองในกรณีนี้สคริปต์กำหนดค่าของ extmod
Timothy Meade

1
ขอบคุณ. ทางออกของคุณสมบูรณ์แบบ
Sid

ขอบคุณมากที่แบ่งปันโซลูชันนี้ ติดอยู่กับสิ่งนี้เป็นเวลาหนึ่งวัน ดีใจที่ฉันพบโพสต์นี้
หวือที่

30

ฉันใช้ Ubuntu 12.10 และใช้คำสั่งนี้:

apt-get install libpq-dev

ช่วยฉัน - หลังจากนั้นติดตั้ง gem ติดตั้ง pg -v "0.14.1" และทุกอย่างดีตอนนี้



25

ใน Ubuntu นี่ใช้งานได้สำหรับฉันฉันหวังว่าจะช่วยคุณ:

sudo apt-get install libpq-dev

และ

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

24

การติดตั้ง libpq-dev ไม่ได้ผลสำหรับฉัน ฉันยังต้องติดตั้ง build-essential

sudo apt-get install libpq-dev build-essential

16

ทางออกที่ง่ายสำหรับผู้ใช้ Ubuntu ...

ถอนการติดตั้งแพ็กเกจ postgres ทั้งหมดก่อนจากนั้นจึงเรียกใช้งานคอมม่า

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

จากนั้นเรียกใช้ 'การติดตั้งมัด' ทุกอย่างจะต้องเรียบร้อย. ขอให้มีความสุขในวันนี้!


1
หากผู้คนอยากรู้วิธีการลบแพ็คเกจ postgres ทั้งหมด sudo apt-get remove --purge postgresql postgresql-9.3 (หรือรุ่นใด ๆ ของ postgres ที่คุณมี)
Tommyixi

9

สำหรับผู้ใช้. RVM มันจะดีกว่า:

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

มันทำงานได้สำหรับฉัน (หลังจากฉันเห็นรุ่น jdupont)


7

หากคุณติดตั้ง libpq-dev และยังคงประสบปัญหานี้อาจเนื่องมาจาก libssl และเพื่อนของ OpenSSL เวอร์ชันที่ขัดแย้งกัน - เวอร์ชันระบบ Ubuntu ใน / usr / lib (ซึ่ง libpq สร้างขึ้น) และรุ่นที่สองที่ติดตั้ง RVM ใน $ HOME / .rvm / usr / lib (หรือ / usr / local / rvm / usr / lib หากเป็นการติดตั้งระบบ) คุณสามารถตรวจสอบสิ่งนี้ได้โดยเปลี่ยนชื่อ $ HOME / .rvm / usr / lib ชั่วคราวและดูว่า "gem install pg" ทำงานหรือไม่

ในการแก้ปัญหามีการสร้าง rvm ใหม่โดยใช้ไลบรารี OpenSSL ของระบบ (คุณอาจต้องลบ libssl. * และ libcrypto. * ออกจาก rvm / usr / lib dir ด้วยตนเอง):

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

ในที่สุดก็แก้ปัญหาให้ฉันใน Ubunto 12.04


ขอบคุณสำหรับคำตอบนี้! ใหม่กว่า Ubuntu และทับทิมรุ่นเก่ามีแนวโน้มว่าจะเกิดความไม่ตรงกันของ OpenSSL
mikeycgto

ไม่มีอะไรทำงานยกเว้นนี้! ขอบคุณมาก @ mike-blackwell ฉันเกือบหมดหวังก่อนที่คุณจะมาช่วย
varagrawal

6

ลองสิ่งนี้

sudo apt-get install postgresql postgresql-contrib libpq-dev

คุณควรติดตั้งเซิร์ฟเวอร์ฐานข้อมูล PG ตั้งแต่แรกเพื่อติดตั้งไคลเอนต์ หลังจากนั้นคุณติดตั้งไคลเอนต์

ดูบล็อกโพสต์นี้เพื่อทราบเกี่ยวกับการตั้งค่า PostGresSQL เป็นครั้งแรกสำหรับการพัฒนา Ruby on Rails


5

วิธีนี้แก้ไขปัญหาสำหรับฉันใน Ubuntu 12.04 หลังจากข้อเสนอแนะทุกข้อที่นี่ล้มเหลว

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

โซลูชันของฉันเกือบจะเหมือนกัน ฉันใช้ rbenv และสิ่งที่ใช้ได้ผลสำหรับฉันคือ: `gem install pg - - with-pg-lib = / usr / lib / postgresql / - ด้วย -pg-include = / usr / include / postgresql /`; ฉันไม่จำเป็นต้องระบุเวอร์ชัน
Dan Tenenbaum

3

ฉันพยายามติดตั้งโครงการ Rails ใน Ubuntu 16.04 ที่เพิ่งติดตั้งใหม่ ฉันพบปัญหาเดียวกันขณะที่เรียกใช้ชุดข้อมูล วิ่ง

sudo apt-get install aptitude

ติดตามโดย

sudo apt-get install libpq-dev

แก้ไขเพื่อฉัน


3

สำหรับทุกคนที่ยังคงมีปัญหาหลังจากลองคำตอบทั้งหมดในหน้านี้การทำงานต่อไปนี้ (ในที่สุด):

sudo apt-get install libgmp3-dev
gem install pg

นี่คือหลังจากทำทุกอย่างที่กล่าวถึงในหน้านี้

postgresql 9.5.8
Ubuntu 16.10


นี่คือสิ่งที่ฉันต้องการใน Ubuntu 18.04
Weston Ganger

1

ฉันมีปัญหาเดียวกันและลองใช้ชุดตัวเลือกต่างๆมากมาย หลังจากพยายามบางอย่างฉันก็สามารถsudo gem installแต่ก็ยังมีปัญหาในการติดตั้งโดยไม่ต้อง sudo
ในที่สุดฉันก็พบว่าการตัดสินใจ - การติดตั้ง rvm ใหม่ช่วยฉันได้ อาจจะช่วยประหยัดเวลากับคนอื่นได้


1

อีกวิธีในการแก้ไขปัญหานี้คือการติดตั้ง PostgreSQL โดยใช้ Homebrew / linuxbrew:

brew install postgresql

เป็นเรื่องของนิสัยฉันไม่ชอบใช้ sudo เว้นแต่ฉันจะต้องทำ


Homebrew สำหรับ Mac เท่านั้น
IIllIIll

2
มี Linux fork
echristopherson

หากคุณไม่ต้องการติดตั้ง PostgreSQL แบบเต็มต่อไปนี้ใช้งานได้สำหรับฉัน:brew install libpq && brew link libpq --force
Andrew

1

สำหรับผู้ที่พยายามติดตั้ง Redmine ฉันพลาดsudo apt-get install ruby-all-devหลังจากลองทั้งหมดข้างต้น

mkmf.rb can't find header files for ruby at /usr/lib/ruby/include/ruby.hเป็นข้อผิดพลาดครั้งแรก



0

ตัวเลือกอื่นคือใช้Homebrewซึ่งทำงานบน Linux และ macOS เพื่อติดตั้งเฉพาะไลบรารีที่สนับสนุน:

brew install libpq

แล้วก็

brew link libpq --force

( --forceจำเป็นต้องมีตัวเลือกเนื่องจากขัดแย้งกับสูตร postgres)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.