เป็นไปได้หรือไม่ที่จะสร้าง Linux distro ที่รองรับทั้งแพ็คเกจ RPM และ. deb


29

ฉันสงสัยว่าเป็นไปได้ในทางทฤษฎีหรือไม่ที่จะสร้าง Linux distro ที่สามารถรองรับแพ็คเกจ rpm และ debian

มี distros ใดที่อยู่ที่นั่นสนับสนุนทั้งสอง?

และถ้าเป็นไปไม่ได้?


4
ถ้าเราไม่พิจารณาแพ็คเกจที่มีจำนวนการพึ่งพาที่ไม่สามารถคำนวณได้ฉันไม่เห็นว่าการติดตั้งแพ็กเกจนั้นเป็นไปไม่ได้ในทางทฤษฎี
Dmitry Grigoryev

2
มันจะเป็นไปได้ถ้าคุณทิ้งความละเอียดพึ่งพาให้กับผู้ใช้ :)
rackandboneman

@rackandboneman ในกรณีนั้น Slackware บวกalienกับการแปลงแพ็คเกจเป็นไฟล์. tgz จะทำงาน :) ถ้าคุณใช้ debs ต้นทางหรือ rpms LFS ก็ทำได้เช่นกัน
ivanivan

@DmitryGrigoryev IIRC การแก้ไขการพึ่งพานั้นสมบูรณ์แบบ NP เมื่อคุณอนุญาตการพึ่งพาเชิงลบ (ความขัดแย้ง)
user253751

@immibis NP-complete หมายถึงการคำนวณ หมายถึงไม่สามารถคำนวณได้เช่น "ถ้าโปรแกรมนี้วางสายกับ libc5, ติดตั้ง libc6"
Dmitry Grigoryev

คำตอบ:



42

ฉันไม่คิดว่าจะมีการแจกแจงใด ๆ ที่สนับสนุนทั้งสองอย่าง แต่กลับกลายเป็นว่ามีการพัฒนาอย่างหนึ่งBedrock Linux (ขอบคุณiMalinowskiสำหรับข้อมูล) คุณสามารถใช้เครื่องมือการแปลงเช่นalienการแปลงจากรูปแบบหนึ่งเป็นอีกรูปแบบ ซอฟต์แวร์ที่ใช้อะไรสามารถทำได้ให้เวลาและพลังงานอย่างเพียงพอดังนั้นจึงเป็นไปได้ที่จะสร้างการกระจายดังกล่าว (แต่ได้รับความแตกต่างระหว่างความสามารถของ.debและ.rpmแพ็คเกจค่อนข้างยาก)

แต่ทั้งหมดนี้อาจจะเกิดจากความคิดที่ว่าสนับสนุนทั้งรูปแบบแพคเกจที่จะทำให้ชีวิตง่ายเพราะคุณก็สามารถติดตั้งแพคเกจจากที่ใดก็ได้ (ดีทุกที่ให้.debหรือ.rpm) ในทางปรัชญานั้นมีข้อบกพร่อง การแจกจ่ายคือชุดของแพ็กเกจที่สอดคล้องกัน หากคุณต้องการจัดหาซอฟต์แวร์สำหรับการแจกจ่ายนั้นคุณต้องกำหนดเป้าหมายเป็นพิเศษซึ่งรวมถึงการใช้รูปแบบแพ็คเกจ (และที่สำคัญกว่านั้นคือเมทาดาทา) ไม่มีจุดในการสนับสนุนรูปแบบแพคเกจหลายอย่างโดยกำเนิด

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

คุณควรพิจารณาการกระจายของคุณเป็นฐานในการสร้างระบบที่คุณต้องการโดยยึดตามกฎและระบบนิเวศการกระจายของคุณโดยไม่ต้องผสมสิ่งต่าง ๆ จากการกระจายอื่น ๆ คุณต้องการ abstractions ระดับสูงกว่าเพื่อรองรับการผสมและการจับคู่ (หรือมากกว่านั้นเพื่อให้มีสภาพแวดล้อมการกระจายข้าม): รันไทม์ Steam, Flatpak ฯลฯ


10

ไม่ไม่ควรสร้างมอนสเตอร์ตัวนั้น ซึ่งแตกต่างจากชุดข้อมูลแอปพลิเคชัน MacOS ซึ่งโดยทั่วไปแล้วจะรวมทุกอย่างที่แอปพลิเคชันจำเป็นต้องใช้บนระบบปฏิบัติการแพ็คเกจ RPM และ. deb นั้นมักขึ้นอยู่กับแพ็คเกจอื่น ๆ เช่นไลบรารีที่ใช้ร่วมกัน แพ็กเกจ Linux แสดงรายการแพ็กเกจอื่นที่จำเป็นต้องมีและตัวจัดการแพ็กเกจจะช่วยบังคับใช้ข้อกำหนดเหล่านั้น นอกจากนี้ลีนุกซ์ลีนุกซ์แตกต่างกันในวิธีการทำงานของสิ่งต่าง ๆ (เช่น/etc/network/interfaces.dvs. /etc/sysconfig/network-scripts)

คุณไม่ควรผสมแพ็กเกจจากที่เก็บโดยพลการภายในแพ็คเกจรูปแบบเดียวกัน นั่นคือการติดตั้งแพคเกจ SuSE บนเครื่อง CentOS เป็นเพียงการถามถึงปัญหาแม้ว่าพวกเขาทั้งสองจะใช้ RPM ฉันไม่แม้แต่จะติดตั้งแพ็คเกจสำหรับระบบปฏิบัติการรุ่นเดียวกัน (เช่น Ubuntu 14.04 แพ็คเกจในระบบ 16.04) เว้นแต่ฉันจะรู้ว่ากำลังทำอะไรอยู่

ดังนั้นการพยายามสนับสนุนทั้ง RPM และ. deb บนระบบเดียวกันนั้นเป็นไปไม่ได้ ในสถานการณ์ที่สิ้นหวังบางอย่างคุณสามารถแปลงแพคเกจเฉพาะที่ใช้alienแต่คุณควรคาดหวังว่าจะใช้ความพยายามอย่างมากในการแก้ไขปัญหาที่อาจเกิดขึ้นจากแฮ็กเหล่านั้นอย่างหลีกเลี่ยงไม่ได้


3
แม้กระทั่ง distros ที่มาจากตระกูลเดียวกันการผสมแพ็คเกจอาจเป็นความคิดที่ไม่ดี ตัวอย่างเช่น Debian และ Ubuntu เป็นทั้ง. deb แต่ Ubuntu ได้ทำการตัดสินใจการออกแบบที่แตกต่างจาก Debian ดังนั้นการใช้แพ็คเกจ Ubuntu ใน Debian อาจไม่ได้ผลเสมอไป
slebetman

1
แม้แต่การผสมเวอร์ชั่นเดเบียน distro ก็เป็นความคิดที่ไม่ดี: wiki.debian.org/DontBreakDebian#Don.27t_make_a_FrankenDebian
stanri

จากนั้นก็มีมิ้นต์ที่ใช้ Ubuntu เป็นพื้นฐานสำหรับเดเบียน ... :-)
DevSolar

1
ฉันจะไม่บอกว่าฉันคิดว่ามันเป็นความคิดที่ดี ในเวลาเดียวกันฉันไม่ได้เห็นว่าทำไมมันเป็นความคิดที่น่ากลัว ฉันคิดว่าปัญหาเหล่านี้สามารถเอาชนะได้ - เพียงแค่ไม่มีรางวัลที่แท้จริงสำหรับการทำเช่นนั้น
emory

9

ดีมีalien( หน้าคน ) ที่สามารถแปลงระหว่างrpm, debฯลฯ แต่ฉันจะถือว่าปัญหาที่เกิดขึ้นจริงจากการใช้งานมาอ้างอิง (ชื่อแพคเกจที่แตกต่างกันสำหรับซอฟต์แวร์) และตำแหน่งของแฟ้มการกำหนดค่า

แน่นอนถ้าคุณหมายถึงว่าแพ็คเกจทั้งสองประเภทนั้นอาจมาจากการกระจายตัวเองนั่นอาจเป็นวิธีแก้ปัญหา แต่ทำไมคนอื่นถึงทำอย่างนั้น ... (และคุณยังต้องแปลงทุกอย่างเป็นอย่างใดอย่างหนึ่ง เนื่องจากฉันคิดว่าไม่dpkgทราบวิธีการอ่านฐานข้อมูลrpmและในทางกลับกัน)


3

ใช่มันเป็นไปได้ แต่มันทำลายการกระจาย

แพคเกจไม่ได้เป็นเพียงรูปแบบซึ่งสามารถย้ายได้ง่ายจากรูปแบบหนึ่งไปยังอีกรูปแบบหนึ่ง

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

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

ใน Debian เราต้องการให้แพ็คเกจนั้นสามารถสร้างได้ง่ายโดยผู้ใช้ (จากแหล่งที่มา) เพื่อให้สามารถกำหนดแพ็คเกจที่สำคัญ (สำหรับเขา) ได้ สิ่งนี้ต้องการโครงสร้างพื้นฐานจำนวนมากซึ่งผู้เขียนต้นน้ำส่วนใหญ่ไม่สามารถให้ได้ (สร้างและทดสอบอัตโนมัติกับสถาปัตยกรรมที่หลากหลายและทำเป็นครั้งคราว) และข้อกำหนดเฉพาะของเดเบียนก็คือข้อกำหนดสิทธิการใช้งานเพื่อให้แยกแพคเกจหรือการแจกจ่ายได้ง่ายขึ้นโดยไม่จำเป็นต้องตรวจสอบแพ็คเกจทั้งหมด

ในตอนท้ายการกระจายจะทำโดยแพคเกจที่สอดคล้องกันไม่ใช่แค่โดยแพ็คเกจ


0

ใช่และส่วนใหญ่. deb ที่อิงเบสทำอยู่แล้ว แต่ ...

ใน Debian และตระกูลที่เกี่ยวข้องอย่างน้อยคุณก็มีalienซึ่งจะอนุญาตให้คุณติดตั้งแพ็คเกจ RPM

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


0

ใช่และไม่. deb และ rpm เป็นเพียงรูปแบบ คุณสามารถรองรับทั้งสองรูปแบบ แต่ไม่มีจุดหมาย โดยทั่วไปแพคเกจนั้นไม่สามารถเทียบเคียงได้ระหว่างการแจกแจงโดยเฉพาะอย่างยิ่งการแจกแจงที่ไม่ได้มีพื้นฐานมาจากสิ่งอื่น

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

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

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