RPM: ตั้งค่าที่ต้องการ: somepackage> = 0.5.0 และ somepackage <0.6.0


14

เป็นไปได้ไหมที่จะตั้งข้อกำหนดของรุ่นที่เชื่อถือได้เช่นนี้

Required: somepackage >= 0.5.0 AND somepackage < 0.6.0

ดังนั้นบางแพคเกจ 0.5.xจะถูกติดตั้งโดยอัตโนมัติ

คำตอบ:


18

ใช่ง่ายมากที่จะทำ

แค่เขียน:

Requires: somepackage >= 0.5.0, somepackage < 0.6.0

ลงใน.specไฟล์ของคุณ

การเพิ่มข้อกำหนดของเวอร์ชัน

เมื่อแพ็คเกจมีความต้องการที่เข้มงวดมากขึ้นเป็นไปได้ที่จะต้องใช้แพคเกจบางเวอร์ชัน สิ่งที่จำเป็นทั้งหมดคือการเพิ่มหมายเลขรุ่นที่ต้องการนำหน้าด้วยหนึ่งในตัวดำเนินการเปรียบเทียบต่อไปนี้:

  • ต้องใช้แพคเกจที่มีรุ่นน้อยกว่ารุ่นที่ระบุ

  • ต้องการแพ็คเกจที่มีเวอร์ชันน้อยกว่าหรือเท่ากับเวอร์ชั่นที่ระบุ

  • ต้องใช้แพคเกจที่มีรุ่นเท่ากับรุ่นที่ระบุ

  • ต้องการแพ็คเกจที่มีเวอร์ชันเท่ากับหรือมากกว่ารุ่นที่ระบุ

  • ต้องใช้แพคเกจที่มีรุ่นมากกว่ารุ่นที่ระบุ

ต่อจากตัวอย่างของเราสมมติว่าเวอร์ชั่นแพคเกจที่ต้องการต้องมีอย่างน้อย 2.7 และแพคเกจ baz ต้องเป็นเวอร์ชั่น 2.1 - ไม่มีเวอร์ชั่นอื่นที่จะทำ นี่คือสิ่งที่บรรทัดแท็กต้องการจะมีลักษณะ: ต้องการ: บาร์> = 2.7, baz = 2.1

ที่มา: http://rpm.org/user_doc/more_dependencies.html

ระวังความสามารถ / ข้อเสนอเสมือน

ระบบที่อธิบายไว้ข้างต้นใช้งานได้กับแพ็คเกจส่วนใหญ่ อย่างไรก็ตามหากแพ็กเกจที่คุณต้องการมีให้เป็น [ความสามารถเสมือนจริง] [1] หรือมีการจัดไว้เป็นอย่างอื่น (เช่นคำหลัก "นำเสนอ:") โดยแพ็คเกจที่มีชื่อแตกต่างกัน (ซึ่งไม่ขัดแย้งกัน) อาจจบลงด้วยการติดตั้งแพ็กเกจที่แตกต่างกันสองแพคเกจแต่ละแพคเกจที่ตรงตามความต้องการ ตัวอย่างเช่นหากไฟล์ spec ของคุณมี:

Requires: postgresql-server >= 8.4, postgresql-server < 9.0

อาจส่งผลให้ (ถ้าคุณมีแพคเกจเหล่านี้พร้อมให้ยำ) การติดตั้ง:

  • postgresql-server 8.1.23-6.el5_8 (postgresql-server <9.0)
  • postgresql92-server 9.2.5-1PGDG.rhel5 (postgresql-server> = 8.4)

แต่จะไม่ติดตั้ง postgresql84-server ซึ่งอาจเป็นแพ็คเกจที่คุณคาดว่าจะติดตั้ง

(ในกรณีนี้การแก้ปัญหาจะต้องใช้เซิร์ฟเวอร์ postgresql84 อย่างไรก็ตามมีตัวอย่างอื่น ๆ ที่ไม่มีวิธีแก้ปัญหาที่ง่าย)


ฉันมีการพึ่งพาเสมือนกับ "somethingdev (name)> = 1.0.14" แต่เมื่อฉันไปที่ yum ติดตั้ง ... การพึ่งพาเสมือนไม่ได้ติดตั้งรุ่นที่ต้องการแม้จะอยู่ใน repo RPM ฉันต้องเปลี่ยนการพึ่งพาเสมือนเป็นชื่อของ RPM "something-name-dev> = 1.0.14" จากนั้นก็ใช้งานได้
เทรเวอร์บอยด์สมิ ธ

1

ไม่ชัดเจนสำหรับฉันถ้าคุณพยายามสร้างแพ็คเกจหรือติดตั้งแพ็คเกจและ "จำกัด " การขึ้นต่อกันของมัน

ฉันไม่เห็นวิธีสร้างเคสที่สองโดยไม่ต้องสร้างแพ็กเกจใหม่

คุณสามารถดึง SRPM และแก้ไขไฟล์ข้อมูลจำเพาะและเพื่อเพิ่ม / แก้ไขรายการที่ต้องการ (คุณต้องการ somepackage 0.5.x ใช่ไหม?) กลับไปที่สิ่งนี้:

Requires: somepackage = 0.5.0

แล้วสร้างใหม่ด้วย

rpmbuild -bb -v yourpackage.spec

หากคุณไม่เคยทำมาก่อนดูเหมือนจะเป็นการข่มขู่ แต่จะช่วยแก้ปัญหาของคุณได้ โปรดทราบว่าหากกำลังสร้างแพคเกจสาธารณะสำหรับ distro คุณอาจต้องการอ่านคำแนะนำเนื่องจากตั้งค่าการพึ่งพาวิธีนี้โดยทั่วไปไม่แนะนำ


2
ฉันไม่สามารถพูดถึง OP ได้ แต่บางครั้งคุณต้องการอัปเดตล่าสุดในซีรี่ส์รุ่นที่ระบุไม่ใช่เฉพาะรุ่นที่เจาะจง ตัวอย่างเช่นคุณอาจรู้ว่าคุณต้องการ Apache 2.2.x เนื่องจาก 2.4.x ทำงานไม่ถูกต้องกับแพ็คเกจของคุณ ต้องการ 2.2.23 โดยเฉพาะจะไม่อนุญาตให้ติดตั้งการอัปเดตในอนาคตใน 2.2.x
Alan Krueger
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.