Distri - một bản phân phối để thử nghiệm các công nghệ quản lý gói nhanh

Michael Stapelberg, tác giả của trình quản lý cửa sổ lát gạch i3wm và cựu nhà phát triển Debian đang hoạt động (duy trì khoảng 170 gói), phát triển phân phối thử nghiệm phân phối và một người quản lý gói cùng tên. Dự án được định vị là sự khám phá những cách khả thi để tăng hiệu suất của hệ thống quản lý gói và thể hiện một số ý tưởng mới để xây dựng hệ thống phân phối. Mã quản lý gói được viết bằng Go và phân phối bởi theo giấy phép BSD.

Một tính năng chính của định dạng gói của bản phân phối là gói được phân phối dưới dạng hình ảnh SquashFS, thay vì kho lưu trữ tar nén. Việc sử dụng SquashFS, tương tự như các định dạng AppImage và Snap, cho phép bạn “gắn kết” một gói mà không cần phải giải nén, điều này giúp tiết kiệm dung lượng ổ đĩa, cho phép thay đổi nguyên tử và giúp nội dung của gói có thể truy cập được ngay lập tức. Đồng thời, các gói distri, như ở định dạng “deb” cổ điển, chỉ chứa các thành phần riêng lẻ được liên kết bởi các phần phụ thuộc với các gói khác (thư viện không được sao chép trong các gói mà được cài đặt dưới dạng phần phụ thuộc). Nói cách khác, distri cố gắng kết hợp cấu trúc gói chi tiết của các bản phân phối cổ điển như Debian với các phương pháp phân phối ứng dụng dưới dạng các thùng chứa được gắn.

Mỗi gói trong distri được gắn vào thư mục riêng ở chế độ chỉ đọc (ví dụ: gói có zsh có sẵn dưới dạng “/ro/zsh-amd64-5.6.2-3”), điều này có tác động tích cực đến bảo mật và bảo vệ chống lại những thay đổi ngẫu nhiên hoặc độc hại. Để tạo thành một hệ thống phân cấp các thư mục dịch vụ, chẳng hạn như /usr/bin, /usr/share và /usr/lib, một mô-đun FUSE đặc biệt được sử dụng, kết hợp nội dung của tất cả các hình ảnh SquashFS đã cài đặt thành một tổng thể (ví dụ: / thư mục ro/share cung cấp quyền truy cập để chia sẻ thư mục con từ tất cả các gói).

Các gói về cơ bản ở phân phối đã giao hàng từ các trình xử lý được gọi trong khi cài đặt (không có hook hoặc trình kích hoạt) và các phiên bản khác nhau của một gói có thể cùng tồn tại với nhau, do đó có thể cài đặt song song các gói. Cấu trúc đề xuất chỉ giới hạn hiệu suất của trình quản lý gói ở thông lượng mạng mà qua đó các gói được tải xuống. Việc cài đặt hoặc cập nhật thực tế của gói được thực hiện nguyên tử và không yêu cầu sao chép nội dung.

Xung đột khi cài đặt các gói được loại bỏ do mỗi gói được liên kết với thư mục riêng và hệ thống cho phép hiện diện các phiên bản khác nhau của một gói (nội dung của thư mục có phiên bản mới hơn của gói được bao gồm trong thư mục hợp nhất). Các gói xây dựng cũng rất nhanh và không yêu cầu cài đặt các gói trong môi trường xây dựng riêng biệt (các biểu diễn của các phần phụ thuộc cần thiết từ thư mục /ro được tạo trong môi trường xây dựng).

Được hỗ trợ các lệnh quản lý gói thông thường, chẳng hạn như “distri install” và “distri update”, và thay vì các lệnh thông tin, bạn có thể sử dụng tiện ích “ls” tiêu chuẩn (ví dụ: để xem các gói đã cài đặt, chỉ cần hiển thị danh sách các thư mục trong “ /ro” và để tìm ra gói nào chứa tệp, hãy xem liên kết từ tệp này dẫn đến đâu).

Bộ phân phối nguyên mẫu được đề xuất để thử nghiệm bao gồm khoảng 1700 gói và sẵn sàng hình ảnh cài đặt với trình cài đặt, phù hợp cho cả việc cài đặt làm hệ điều hành chính và chạy trong QEMU, Docker, Google Cloud và VirtualBox. Nó hỗ trợ khởi động từ phân vùng đĩa được mã hóa và một bộ ứng dụng tiêu chuẩn để tạo máy tính để bàn dựa trên trình quản lý cửa sổ i3 (Google Chrome được cung cấp dưới dạng trình duyệt). Cung cấp một bộ công cụ hoàn chỉnh để lắp ráp một bản phân phối, chuẩn bị và tạo các gói, phân phối các gói thông qua các máy nhân bản, v.v.

Nguồn: opennet.ru

Thêm một lời nhận xét