ราง & การพึ่งพาที่น่ารังเกียจ libpq-dev


12

ฉันไม่ทราบว่าคำถามนี้เป็นของที่นี่ แต่ฉันจะยิง สวัสดี ฉันใช้งานอูบุนตู 11.10 ดูอัลบูตด้วย windows vista บนเครื่องของฉัน บน Ubuntu ฉันได้ติดตั้ง RVM Rails gem และ PostgreSQL (เซิร์ฟเวอร์ postgres ไคลเอนต์และแพ็คเกจอื่น ๆ เช่น libpq5 เพราะฉันติดตั้งผ่านศูนย์ซอฟต์แวร์)

ฉันพยายามปรับใช้แอพของฉันใน heroku แต่ดูเหมือนว่าฉันต้องติดตั้งpg gem ฉันพยายามติดตั้ง แต่มีข้อผิดพลาดนี้แทน:

ข้อผิดพลาด: ไม่สามารถสร้างส่วนขยายดั้งเดิมของอัญมณี

/home/pcr/.rvm/rubies/ruby-1.9.3-p0/bin/ruby extconf.rb กำลังตรวจสอบ pg_config ... ใช่

การใช้ค่ากำหนดจาก / usr / bin / pg_config

คุณต้องติดตั้ง postgresql-server-dev-XY สำหรับการสร้างส่วนขยายฝั่งเซิร์ฟเวอร์หรือ libpq-dev สำหรับการสร้างแอปพลิเคชันฝั่งไคลเอ็นต์ คุณต้องติดตั้ง postgresql-server-dev-XY สำหรับการสร้างส่วนขยายฝั่งเซิร์ฟเวอร์หรือ libpq-dev สำหรับการสร้างแอปพลิเคชันฝั่งไคลเอ็นต์

การตรวจสอบ libpq-fe.h ... * extconf.rb ล้มเหลว *

หลังจากค้นหา google & stackoverflow มาระยะหนึ่งหลายคนบอกว่าต้องติดตั้ง libpq-dev ฉันพยายามผ่านทางศูนย์ซอฟต์แวร์ แต่ไม่สามารถทำได้เพื่อไม่พึ่งพาการพึ่งพา ฉันพยายามผ่าน apt-get มันบอกว่าฉันต้องการ libkrb5-dev และ krb5-multidev ฉันพยายามsudo apt-get install libpq-dev libkrb5-dev krb5-multidevแล้วได้สิ่งนี้:

แพ็กเกจต่อไปนี้มีการพึ่งพาแบบไม่แน่นอน: krb5-multidev:

ขึ้นอยู่กับ: libkrb5-3 (= 1.9.1 + dfsg-1ubuntu1) แต่จะต้องติดตั้ง 1.9.1 + dfsg-1ubuntu2.1

ขึ้นอยู่กับ: libk5crypto3 (= 1.9.1 + dfsg-1ubuntu1) แต่จะต้องติดตั้ง 1.9.1 + dfsg-1ubuntu2.1

ขึ้นอยู่กับ: libgssapi-krb5-2 (= 1.9.1 + dfsg-1ubuntu1) แต่จะต้องติดตั้ง 1.9.1 + dfsg-1ubuntu2.1 E: E ไม่สามารถแก้ไขปัญหาได้

แต่ฉันมี libkrb5-3, libk5crypto3 และ libgssapi-krb5-2 แล้ว (ทั้งหมดมีรุ่น 1.9.1 + dfsg-1ubuntu2.1) ในระบบของฉัน! ฉันคิดว่ารุ่นที่ต้องการอาจเป็น 1.9.1 + dfsg-1ubuntu1 ดังนั้นฉันอาจต้องลบแพ็คเกจ 1.9.1 + dfsg-1ubuntu2.1 ก่อน คุณคิดว่ามันปลอดภัยไหมที่จะลบออก? ฉันพยายามลบหนึ่งในนั้น แต่ศูนย์ซอฟต์แวร์เตือนฉันว่ามันจะลบ postgres, openssl-client, smbclient, ถ้วยและแพ็คเกจอื่น ๆ อีกมากมาย

ฉันควรทำอย่างไรเพื่อแก้ไขปัญหานี้ และจำเป็นต้องมีการติดตั้ง pg gem บนเครื่องท้องถิ่นของฉันเพื่อสร้างแอพ rails ที่มี postgres เป็น dbms หรือไม่? มีวิธี "ส่งมอบ" ความรับผิดชอบในการรวม pg gem ลงใน heroku แทนหรือไม่?

คำตอบ:


8

ทางออกที่แท้จริงคือAmit Patel ที่ถูกต้องซึ่งชี้ให้เห็นอย่างถูกต้องในการติดตั้งlibpq-dev


นี่เป็นวิธีแก้ไขหากคุณไม่สามารถตั้งค่า pg ที่เครื่องพัฒนาของคุณได้ คุณสามารถใช้ sqlite ในเครื่องท้องถิ่นและ pg ของคุณใน Heroku นี่คือสิ่งที่คุณควรมีใน Gemfile ของคุณ

group :production do
  gem 'pg'
end

group :development, :test do
  gem 'sqlite3'
end

และใช้คำสั่งนี้สำหรับการติดตั้งบันเดิลเพื่อละเว้นอัญมณีการผลิต:

bundle install --without production

โปรดทราบว่าไม่แนะนำให้ใช้เครื่องที่ไม่มีสภาพแวดล้อมเดียวกันในการผลิตและการพัฒนา


ใช่นี่คือคำตอบที่ถูกต้อง +1 ฉันทำสิ่งนี้ตลอดเวลา
jrg

@jrg คุณประสบปัญหาโดยการทำเช่นนี้? ฉันถามเพราะ heroku บอกว่า "ไม่แนะนำ"
PatrixCR

Heroku ไม่แนะนำเพราะโดยทั่วไปคุณต้องการ env การพัฒนาเช่นเดียวกับเซิร์ฟเวอร์ - อย่างไรก็ตามตราบใดที่คุณใช้ ActiveRecord หรือ DataMapper และคุณไม่ได้เขียน SQL ดิบคุณควรจะปรับ 99% ของเวลา :)
jrg

1
@PatrixCR ไม่ heroku จะทำเพื่อคุณ
jrg

1
การใช้ sqlite เป็นวิธีแก้ปัญหา การแก้ปัญหาคืออะไร?
Amit Patel

32

วันนี้ฉันมีปัญหาเดียวกัน ฉันตามข้อความคุณต้องติดตั้ง postgresql-server-dev-XY สำหรับการสร้างส่วนขยายฝั่งเซิร์ฟเวอร์หรือ libpq-dev สำหรับการสร้างแอปพลิเคชันฝั่งไคลเอ็นต์ ดังนั้นจึงติดตั้งแอป libpq-dev และชุดรางอีกครั้งและข้อผิดพลาดหายไป

$ sudo apt-get install libpq-dev
$ bundle install

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