วิธีติดตั้งสองแพ็คเกจที่เขียนไฟล์เดียวกัน


14

ฉันมีสองแพ็คเกจที่แต่ละสร้าง / usr / bin / ffprobe หนึ่งในนั้นคือ ffmpeg จากที่เก็บ Deb Multimedia ในขณะที่อีกอันคือ ffmbc 0.7-rc5 ที่สร้างจากแหล่งที่มา มือรีดมีความสำคัญต่อธุรกิจและเราเคยติดตั้งจากแหล่งที่จำเป็นทุกที่ ฉันสามารถสันนิษฐานได้ว่ามันจะอุดตันไฟล์ ffmpeg และไม่มีผลร้ายใด ๆ

ในทางทฤษฎีมันควรเป็นที่ยอมรับสำหรับแพ็คเกจ ffmbc ของเราเพื่อเขียนทับไฟล์จากแพ็คเกจ ffmpeg ข้อเสียคือการอัพเดท ffmpeg จะเขียนทับไบนารี ffmbc มีวิธีง่าย ๆ ในการกระทบยอดนี้หรือไม่?

คำตอบ:


12

ในระบบตาม Debian มี dpkg (ด้านล่างฉลาด) จะมีการเบี่ยงเบนการติดตั้งโดยใช้คำสั่งdpkg-โอน

dpkg-divert เป็นยูทิลิตี้ที่ใช้ในการตั้งค่าและอัปเดตรายการนักดำน้ำ

การเปลี่ยนไฟล์เป็นวิธีการบังคับใช้ dpkg (1) ไม่ให้ติดตั้งไฟล์ลงในที่ตั้ง แต่เป็นการเปลี่ยนตำแหน่ง ... ผู้ดูแลระบบยังสามารถใช้เพื่อแทนที่ไฟล์การกำหนดค่าของแพ็คเกจหรือเมื่อใดก็ตามที่ไฟล์บางไฟล์ (ซึ่งไม่ได้ทำเครื่องหมายว่า 'conffiles') จะต้องได้รับการดูแลรักษาโดย dpkg เมื่อทำการติดตั้งแพคเกจเวอร์ชั่นใหม่ที่มีไฟล์เหล่านั้น .

ดังนั้นสำหรับกรณีของคุณคุณอาจใช้คำสั่งเช่นนี้เพื่อตั้งค่าความหลากหลาย (ฉันยังไม่ได้ทดสอบให้ตรวจสอบหน้า man และตรวจสอบว่ามันถูกต้อง)

dpkg-divert --local --divert /usr/bin/ffprobe.ffmpeg --rename /usr/bin/ffprobe

8

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

./configure --prefix=/usr/local

สำหรับแพ็คเกจ Debian สิ่งนี้จะอยู่ในไฟล์ $ {package} / debian / rules ดังนี้:

override_dh_auto_configure:
    ./configure --enable-gpl --prefix=/usr/local

ด้วยการใส่ไฟล์ ffmbc /usr/localฉันสามารถเก็บไฟล์ ffmpeg ไว้/usrและอนุญาตให้แต่ละแพ็คเกจอัปเดตได้อย่างอิสระ


3
แพคเกจไม่ควรติดตั้งอะไรเพื่อ/usr/local- เป็นการละเมิดนโยบาย จุดทั้งหมดของ/usr/localมันเพื่อให้ไฟล์ภายใต้การจัดการแพคเกจและติดตั้งไฟล์ด้วยตนเอง ดูการสนทนาที่เกี่ยวข้องกับ FHS ดังต่อไปนี้: unix.stackexchange.com/questions/30/…
Onlyjob

-1

แพคเกจที่ให้ไฟล์เดียวกันควรขัดแย้งกัน - มันไม่ได้เป็นข้อผิดพลาด (โปรดพิจารณารายงานกรณีดังกล่าว) หากคุณสร้างซอฟต์แวร์จากแหล่งที่มาและติดตั้งโดยใช้make install(หรือคล้ายกัน) ให้แน่ใจว่ามันจะไป/usr/localเพื่อหลีกเลี่ยงความขัดแย้งกับการจัดการแพคเกจ

โปรดทราบว่าdeb-multimedia.orgไม่สนับสนุนที่เก็บข้อมูลที่ไม่เป็นทางการซึ่งก่อให้เกิดความขัดแย้งกับแพ็คเกจอย่างเป็นทางการ

หากซอฟต์แวร์ที่คุณต้องการไม่ได้รับการบรรจุสำหรับDebianคุณสามารถส่งคำขอบรรจุภัณฑ์RFP ได้แต่โปรดตรวจสอบคำขอที่มีอยู่ก่อน

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