Distri - การกระจายสำหรับการทดสอบเทคโนโลยีการจัดการแพ็คเกจที่รวดเร็ว

Michael Stapelberg ผู้เขียนตัวจัดการหน้าต่างแบบเรียงต่อกัน i3wm และอดีตนักพัฒนา Debian ที่ใช้งานอยู่ (ดูแลแพ็คเกจประมาณ 170 แพ็คเกจ) พัฒนา การกระจายการทดลอง การกระจาย และผู้จัดการแพ็คเกจที่มีชื่อเดียวกัน โครงการนี้อยู่ในตำแหน่งที่เป็นการสำรวจวิธีการที่เป็นไปได้ในการเพิ่มประสิทธิภาพของระบบการจัดการบรรจุภัณฑ์ และรวบรวมแนวคิดใหม่ ๆ สำหรับการจัดจำหน่ายอาคาร รหัสตัวจัดการแพ็คเกจเขียนเป็นภาษา Go และ จัดจำหน่ายโดย ภายใต้ใบอนุญาต BSD

คุณลักษณะสำคัญของรูปแบบแพ็คเกจของการแจกจ่ายคือ แพ็คเกจจะถูกส่งในรูปแบบของอิมเมจ SquashFS แทนที่จะเป็นไฟล์เก็บถาวร tar ที่บีบอัด การใช้ SquashFS ซึ่งคล้ายกับรูปแบบ AppImage และ Snap ช่วยให้คุณสามารถ “เมานต์” แพ็คเกจโดยไม่ต้องแตกแพ็ก ซึ่งช่วยประหยัดพื้นที่ดิสก์ ช่วยให้สามารถเปลี่ยนแปลงอะตอมมิก และทำให้เนื้อหาของแพ็คเกจสามารถเข้าถึงได้ทันที ในเวลาเดียวกัน แพ็คเกจ distri ในรูปแบบ "deb" แบบคลาสสิกมีเพียงส่วนประกอบแต่ละรายการที่เชื่อมโยงโดยการขึ้นต่อกันกับแพ็คเกจอื่น ๆ (ไลบรารีจะไม่ซ้ำกันในแพ็คเกจ แต่ถูกติดตั้งเป็นการขึ้นต่อกัน) กล่าวอีกนัยหนึ่ง distri พยายามรวมโครงสร้างแพ็คเกจแบบละเอียดของการแจกแจงแบบคลาสสิกเช่น Debian เข้ากับวิธีการส่งมอบแอปพลิเคชันในรูปแบบของคอนเทนเนอร์ที่เมาท์

แต่ละแพ็คเกจใน distri จะถูกเมานท์ในไดเร็กทอรีของตัวเองในโหมดอ่านอย่างเดียว (เช่น แพ็คเกจที่มี zsh นั้นมีอยู่ในชื่อ “/ro/zsh-amd64-5.6.2-3”) ซึ่งมีผลเชิงบวกต่อความปลอดภัยและ ป้องกันการเปลี่ยนแปลงโดยไม่ได้ตั้งใจหรือที่เป็นอันตราย ในการสร้างลำดับชั้นของไดเร็กทอรีบริการ เช่น /usr/bin, /usr/share และ /usr/lib จะใช้โมดูล FUSE พิเศษ ซึ่งรวมเนื้อหาของอิมเมจ SquashFS ที่ติดตั้งไว้ทั้งหมดเป็นหนึ่งเดียว (เช่น / ไดเร็กทอรี ro/share ช่วยให้สามารถเข้าถึงไดเร็กทอรีย่อยแบบแชร์จากแพ็คเกจทั้งหมด)

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

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

ได้รับการสนับสนุน คำสั่งการจัดการแพ็คเกจทั่วไปเช่น "distri install" และ "distri update" และแทนที่จะใช้คำสั่งข้อมูล คุณสามารถใช้ยูทิลิตี้ "ls" มาตรฐานได้ (เช่น หากต้องการดูแพ็คเกจที่ติดตั้ง เพียงแสดงรายการไดเรกทอรีในส่วน " /ro” และเพื่อดูว่าไฟล์นั้นรวมอยู่ในแพ็คเกจใด โปรดดูที่ลิงก์จากไฟล์นี้นำไปสู่ที่ใด)

ชุดแจกจ่ายต้นแบบที่เสนอสำหรับการทดลองประกอบด้วย 1700 ห่อ และพร้อม ภาพการติดตั้ง พร้อมตัวติดตั้งเหมาะสำหรับติดตั้งเป็นระบบปฏิบัติการหลักและใช้งานใน QEMU, Docker, Google Cloud และ VirtualBox รองรับการบูทจากพาร์ติชันดิสก์ที่เข้ารหัสและชุดแอปพลิเคชันมาตรฐานสำหรับการสร้างเดสก์ท็อปโดยใช้ตัวจัดการหน้าต่าง i3 (เบราว์เซอร์นำเสนอ Google Chrome) ที่ให้ไว้ ชุดเครื่องมือที่สมบูรณ์สำหรับการประกอบการแจกจ่าย การเตรียมและสร้างบรรจุภัณฑ์ การกระจายบรรจุภัณฑ์ผ่านกระจก ฯลฯ

ที่มา: opennet.ru

เพิ่มความคิดเห็น