Như một số người trả lời đã nói, không quá nhiều khi một định dạng gói nhất định rõ ràng là vượt trội. Về mặt kỹ thuật, chúng có thể ít nhiều có thể so sánh được. Từ quan điểm của tôi, rất nhiều sự khác biệt và tại sao mọi người thích cái này hơn cái kia, phải làm với:
- Triết lý của thiết kế gói ban đầu và đối tượng mục tiêu
- Quy mô cộng đồng, và bằng cách mở rộng, chất lượng và sự phong phú của các kho lưu trữ
Triết học:
Trong thế giới Ubuntu / Debian / Mint / ..., người dùng mong đợi gói được cài đặt sẽ "chỉ hoạt động" sau khi được cài đặt. Điều này có nghĩa là trong quá trình cài đặt, các gói được dự kiến sẽ chăm sóc mọi thứ cần thiết để thực sự làm cho chúng chạy tốt, bao gồm nhưng không giới hạn ở:
- thiết lập các công việc cần thiết hoặc tùy chọn
- thiết lập các lựa chọn / bí danh
- thiết lập các kịch bản khởi động / tắt máy
- bao gồm tất cả các tệp cấu hình cần thiết với mặc định có ý nghĩa
- giữ các phiên bản cũ của thư viện và thêm các liên kết tượng trưng được phiên bản phù hợp vào thư viện (.so) để tương thích ngược
- hỗ trợ sạch cho các nhị phân đa vòm (32 và 64 bit) trên cùng một máy, v.v.
Trong thế giới vòng / phút - phải thừa nhận rằng đây là tình huống vài năm trước và nó có thể đã được cải thiện kể từ đó - tôi thấy mình phải chạy các bước bổ sung (ví dụ: chkconfig, cho phép các công việc cron) thực sự làm cho các gói thực sự hoạt động. Điều này có thể ổn đối với các sysadins hoặc những người am hiểu về Unix, nhưng nó khiến những người mới trải nghiệm phải chịu đựng. Lưu ý rằng không phải chính định dạng gói RPM ngăn chặn điều này xảy ra, chỉ là nhiều gói không thực sự được "thực hiện đầy đủ" từ quan điểm của một người mới.
Quy mô cộng đồng, sự tham gia và sự phong phú của các kho lưu trữ:
Vì cộng đồng ubfox / debian / mint / ... lớn hơn, nhiều người hơn tham gia vào phần mềm đóng gói và thử nghiệm. Tôi thấy sự phong phú và chất lượng của các kho lưu trữ là vượt trội. Trong Ubuntu, tôi hiếm khi, nếu cần, phải tải xuống nguồn và xây dựng từ nó. Khi tôi chuyển từ Red Hat sang Ubuntu tại nhà, repo RHEL điển hình có ~ 3000 gói trong đó, đồng thời, ubfox + vũ trụ + đa vũ trụ có sẵn trực tiếp từ bất kỳ máy Canonical nào, có ~ 30.000 gói (khoảng 10 lần). Hầu hết các gói tôi đang tìm kiếm ở định dạng RPM, không thể truy cập dễ dàng thông qua tìm kiếm đơn giản và nhấp vào trình quản lý gói. Họ yêu cầu chuyển sang các kho lưu trữ thay thế, tìm kiếm trang web dịch vụ rpmfind, v.v. Điều này, trong hầu hết các trường hợp, thay vì giải quyết vấn đề, đã phá vỡ cài đặt của tôi bằng cách không giới hạn những gì phụ thuộc có thể hoặc không thể nâng cấp chính xác. Tôi đánh vào hiện tượng "địa ngục phụ thuộc", như được mô tả ở trên bởi Shawn J. Goff.
Ngược lại trong Ubuntu / Debian tôi thấy rằng tôi gần như không bao giờ cần phải xây dựng từ nguồn. Cũng vì:
- Chu kỳ phát hành Ubuntu nhanh (6 tháng)
- Sự tồn tại của PPA tương thích hoàn toàn hoạt động ra khỏi hộp
- Các kho lưu trữ nguồn đơn (tất cả được lưu trữ bởi Canonical) không cần tìm kiếm các kho thay thế / bổ sung
- Trải nghiệm người dùng liền mạch từ nhấp để chạy
Tôi chưa bao giờ phải thỏa hiệp với các phiên bản cũ hơn của các gói tôi quan tâm, ngay cả khi chúng không được các nhà phát triển chính thức (Canonical) duy trì. Tôi không bao giờ phải rời khỏi trình quản lý gói GUI thân thiện yêu thích của mình để thực hiện tìm kiếm thuận tiện theo từ khóa, để tìm và cài đặt bất kỳ gói nào tôi muốn. Ngoài ra, một vài lần tôi đã cài đặt các gói debian (không phải Canonical) trên Ubuntu và chúng hoạt động rất tốt, mặc dù khả năng tương thích này không được đảm bảo chính thức.
Lưu ý rằng điều này không có ý định bắt đầu một cuộc chiến rực lửa, nó chỉ là chia sẻ kinh nghiệm của tôi khi sử dụng song song cả hai thế giới trong vài năm (làm việc so với nhà).
debian
thư mục tồn tại trong thư mục mà nguồn ngược dòng được trích xuất và Debian rất coi trọng khái niệm tarball nguồn ngược nguyên sơ rất nhiều. Khi gói nguồn được xây dựng, có ba tệp (hai cho gói gốc) được gọi chung là gói nguồn: tarball ngược dòng (tốt nhất là nguyên sơ, chính sách Debian yêu cầu một số dự án được đóng gói lại), một tarball của thư mục debian cho định dạng 3.0 mới, (một khác cho định dạng 1.0 cũ) và .dsc.