Sự khác biệt giữa snaps, appimage, Flatpak và những người khác là gì?


105

Gần đây tôi đã nhận được câu hỏi này từ các sinh viên và mặc dù tôi có rất nhiều thông tin để cung cấp, tôi không tìm thấy một nguồn nào để tôi có thể chỉ cho mọi người biết nơi họ có thể đọc câu trả lời cập nhật (tôi đã tìm thấy rất nhiều thông tin sai lệch và lỗi thời ). Vì vậy, một số câu hỏi tôi có cho các định dạng gói như snap, appimage, Flatpak và các câu hỏi khác trong sự phát triển của các hệ thống đóng gói phổ quát này là:

  • Ai tạo ra định dạng gói?
  • Nó cung cấp những tính năng gì?
  • Những tính năng duy nhất cho nó? (Điều mà những người khác chưa có)
  • Ai ủng hộ nó?
  • Những gì phân phối sử dụng nó?
  • Gói tập trung vào cái gì? (Dành cho Máy tính để bàn, Đám mây, Di động, v.v.)
  • Cái nào được phát triển tích cực hơn?

Câu trả lời:


68

Dưới đây là bảng so sánh dài của các tính năng AppImage so với Snap so với Flatpak. Đó là từ Wiki AppImage trên GitHub :

So sánh giữa AppImage và Snap so với Flatpack


43
Tôi nghĩ rằng đáng để chỉ ra rằng biểu đồ này được xây dựng từ góc độ AppImage. Có nghĩa, bộ tính năng mặc định là bộ tính năng của AppImage và các tính năng khác được so sánh với các tính năng của nó. Điều đó mang lại lợi thế cho AppImage. Nó cũng hơi lỗi thời. Chẳng hạn, Snap đã thêm chủ đề hỗ trợ vào mùa thu này.
Dan

1
@Dan: Nếu bạn biết về hỗ trợ họ đã thêm của Snap - tại sao bạn không đơn giản chỉnh sửa vào biểu đồ? Ngoài ra, nếu bạn biết về các tính năng khác có trong Snap và / hoặc Flatpak: cảm thấy được mời sửa đổi biểu đồ với các mục tương ứng trong wiki AppImage ...
Kurt Pfeifle

11
Tôi không chắc làm thế nào bạn có thể nói rằng @Kurt. Hãy xem phần "Mục tiêu" làm ví dụ. Nó chỉ hiển thị các mục tiêu của AppImage, như thể không có dự án nào khác có bất kỳ mục tiêu nào. Như thể chỉ có các mục tiêu mà AppImage có vấn đề.
Dân

5
Tôi có quan điểm của bạn - tôi có thể chỉnh sửa wiki. Tuy nhiên, câu trả lời của bạn là một hình ảnh khổng lồ có lẽ sẽ tồn tại mãi mãi, ngay cả khi wiki thay đổi. Tôi nghĩ rằng sự thiên vị đáng được đề cập trong bối cảnh câu trả lời của bạn cho những người đọc Ubuntu trong tương lai.
Dan

2
@Dan: Tôi đã chỉnh sửa câu trả lời vào ngày 4 tháng 7 để chèn một phiên bản cập nhật của ảnh chụp màn hình từ trang web (chính xác để bao gồm một số sửa đổi xảy ra với wiki). Đâu là vấn đề cho bạn trong việc chỉnh sửa Wiki gốc, tạo ảnh chụp màn hình mới và sau đó đề xuất sửa đổi câu trả lời này với ảnh chụp màn hình mới?
Kurt Pfeifle

51

Snaps được tạo bởi Canonical cho Ubuntu. Những ưu điểm chính của snaps là:

  • Độc lập về phụ thuộc - tất cả các thư viện và phụ thuộc được bao gồm trong gói. Điều này cũng cho phép có nhiều phiên bản của cùng một chương trình.
  • Sandboxing - snaps đang sử dụng AppArmor đã sửa đổi để sandbox các ứng dụng
  • Cập nhật Delta - snaps cũng nên cho phép cập nhật delta

Hạn chế chính của snaps là phần mềm chỉ có thể sử dụng các thư viện có trong gói. Đây là một rủi ro bảo mật tiềm ẩn vì tác giả của gói cần phải giữ tất cả các thư viện được vá và cập nhật.

Snaps hiện có thể chạy trong Ubuntu, Arch Linux, Fedora, Linux Mint, CentOS và Gentoo. Chúng cũng được sử dụng trong Ubuntu Touch. Chúng được thiết kế cho máy tính để bàn, máy chủ, điện thoại, IoT và bộ định tuyến.

Flatpak có những lợi thế tương tự như snaps. Tuy nhiên, nó sử dụng Không gian tên thay vì AppArmour cho hộp cát. Sự khác biệt chính là Flatpaks có thể sử dụng cả các thư viện được bao gồm trong gói và thư viện dùng chung từ một Flatpak khác.

Nhà phát triển của Flatpak là nhân viên của Red Hat Alexander Larsson. Phần mềm Flatpak hiện có sẵn trong Arch Linux, Debian, Fedora, Mageia, Solus và Ubuntu. Nó chỉ tập trung vào máy tính để bàn.

Hình ảnh được phát triển bởi Simon Peter. Như trong snaps hoặc Flatpak, gói bao gồm tất cả các thư viện cần thiết để chạy chương trình. Các chương trình AppImage không được sandbox và chúng không yêu cầu quyền root để chạy. Theo trang web của dự án, AppImages nên chạy trên Arch Linux, Centos, Debian, Fedora, OpenSUSE, Red Hat Linux và Ubuntu.


3
Solus đã công bố hỗ trợ cho Flatpak vào tháng 1 năm 2017
Anthon

8
Tất cả chúng nên được xây dựng dựa trên sự xuất hiện. Thay vì phát minh lại cùng một hệ tư tưởng và đưa ra sự phân mảnh và nhầm lẫn. Cũng lưu ý rằng vì các gói di động này có tất cả các thư viện, chúng sẽ có kích thước nặng hơn đáng kể so với một ứng dụng sử dụng các thư viện dùng chung được cài đặt qua apt hoặc .deb. Nếu bạn phải biết cái nào phổ biến hơn, Flatpak hiện đang đánh snaps.
answerSeeker

Với cuộc tấn công Spectre hiện đang diễn ra, tôi nghi ngờ sẽ có ít sự quan tâm đến các thư viện dùng chung vì lý do bảo mật. :-)
Chris

4
@answerSeeker: nhận xét của bạn về các gói di động "có kích thước nặng hơn đáng kể so với ứng dụng sử dụng thư viện dùng chung được cài đặt qua apt hoặc .deb" không nhất thiết phải được hỗ trợ bởi các sự kiện thực tế. AppImages và Snaps được nén thành hình ảnh SquashFS (không đúng với Flatpak). Chúng không bao giờ được trích xuất vào đĩa, ngay cả trong thời gian chạy. Các ứng dụng, khi chạy, tự gắn vào một điểm gắn kết được tạo tạm thời /tmp/.mount_<random-chars>và chạy từ đó - vẫn được nén! Xem các số cho ví dụ LibreScript trong ảnh chụp màn hình câu trả lời của tôi bên dưới ...
Kurt Pfeifle

1
@PabloBianchi: AppImages mới hơn (thuộc loại 'loại 2' gần đây hơn ) có thể có cơ chế cập nhật dựng sẵn. Điều này tải xuống một delta delta khác với vị trí AppImage ban đầu, tiết kiệm kích thước và thời gian tải xuống, một khi có phiên bản mới và sau khi người dùng chỉ ra họ muốn. Các công cụ appimageupdatetool(CLI) và AppImageUpdate-Qt(GUI) trợ giúp việc này.
Kurt Pfeifle
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.