Snap, AppImage, Flatpak: ĐỊnh dạng gói nào tốt nhất?

Snap, AppImage, Flatpak: Lựa chọn nào tốt nhất?

Chia sẻ kiến thức 01/10/2023

Snap, AppImage và Flatpak là ba định dạng gói nổi bật nhất dành cho Linux. Vậy lựa chọn nào là tốt nhất? Hãy tìm hiểu cùng FUNiX.

 

Hệ thống Linux phổ biến vì nhiều lý do, nhưng việc cài đặt ứng dụng không phải là một trong số đó. Các ứng dụng trong Linux được phân phối dưới dạng gói và có đủ loại. Các hệ thống đóng gói khác nhau về cơ chế cài đặt, khả năng sử dụng và cập nhật.

Dưới đây, FUNiX sẽ so sánh ba định dạng gói nổi bật: Snap, AppImage và Flatpak, tất cả đều không phụ thuộc vào bản phân phối.

Định dạng gói là gì?

Định dạng gói là các kho lưu trữ chứa code chương trình và siêu dữ liệu cần thiết để chạy chúng. Linux hỗ trợ một số định dạng gói và nhà phát triển có thể chọn đóng gói ứng dụng của họ theo bất kỳ định dạng nào họ muốn. Với tư cách là người dùng, bạn sẽ cần tải xuống gói được yêu cầu và cài đặt gói đó thông qua trình quản lý gói để chạy ứng dụng.

Ubuntu và các bản phân phối dựa trên Debian khác sử dụng định dạng gói .deb, trong khi Fedora, RHEL và CentOS sử dụng .rpm. Các gói gốc có tốc độ nhanh vì chúng được thiết kế và biên dịch riêng cho một hệ thống, đồng thời chúng cũng chia sẻ các thư viện, giúp ứng dụng nhỏ gọn hơn. Tuy nhiên, các gói gốc yêu cầu người dùng tự cập nhật và duy trì các phần phụ thuộc (dependencies).

Các gói phân phối độc lập như Snap, AppImage và Flatpak cung cấp các ứng dụng có thể chạy trên các máy khác nhau. Chúng loại bỏ các vấn đề phụ thuộc mà nhiều người dùng Linux gặp phải hàng ngày và giúp công việc của các nhà phát triển trở nên dễ dàng hơn rất nhiều. Tuy nhiên, điều này cũng dẫn đến các tệp nhị phân lớn hơn.

So sánh Snap, AppImage và Flatpak

Snap, AppImage và Flatpak đều cung cấp cách để đóng gói các ứng dụng độc lập với bản phân phối Linux. Hãy xem xét kỹ một số tính năng đáng chú ý cũng như ưu và nhược điểm của chúng.

1. Snap

Snap là một hệ thống đóng gói được phát triển bởi Canonical và có sự hỗ trợ đáng kể của công ty. Khi bạn cài đặt phiên bản snap của một ứng dụng, nó sẽ bao gồm tất cả các thư viện và phần phụ thuộc cần thiết để chạy ứng dụng đó. Điều này giúp người bảo trì ứng dụng tiết kiệm thời gian cần thiết để triển khai các bản dựng khác nhau cho các hệ thống khác nhau.

Bạn có thể cài đặt snaps từ Snap Store trực tiếp hoặc thông qua dòng lệnh. Nhiều bản phân phối Linux phổ biến đã sử dụng Snap, bao gồm Ubuntu, Manjaro, Debian, Kali và RHEL. Một lợi ích quan trọng khác của ứng dụng Snap là chúng cũng chạy trên hệ thống IoT và Đám mây mà không cần sửa đổi.

cửa hàng snap trong linux

Snaps cũng cho phép người dùng có nhiều phiên bản của cùng một ứng dụng. Tính chất tự cập nhật của snaps đảm bảo người dùng không phải lo lắng về việc cập nhật thủ công. Tuy nhiên, vì các gói snap chứa tất cả các phần phụ thuộc cần thiết nên chúng nặng hơn các gói vanilla .deb hoặc .rpm . Ngoài ra, phiên bản snap của nhiều ứng dụng chạy chậm hơn AppImages hoặc Flatpaks.

Dưới đây là một số lệnh snap hữu ích nếu bạn mới bắt đầu sử dụng chúng. Chức năng của mỗi lệnh được liệt kê dưới dạng chú thích (comment).

# install VLC Media Player (cài đặt VLC Media Player)
snap install vlc
 
# list installed snaps (liệt kê các snap đã cài đặt)
snap list
 
# update VLC Media Player (cập nhất VLC Media Player)
snap refresh vlc
 
# revert VLC Media Player to the prior version (chuyển VLC Media Player về phiên bản trước đó) 
snap revert vlc
 
# remove VLC Media Player (gỡ cài đặt VLC Media Player)
snap remove vlc
lệnh chụp nhanh trong Linux

2. AppImage

AppImage là một cách tuyệt vời để dùng thử các ứng dụng mới mà không cần cài đặt chúng trên máy. Ý tưởng đằng sau AppImage khá đơn giản: một tệp cho mỗi ứng dụng. Bằng cách này, các nhà phát triển có thể đảm bảo tính di động của ứng dụng và người dùng có thể dùng thử các gói mới mà không cần cài đặt. Ưu điểm chính của AppImages là chúng không yêu cầu quyền sudo trong Linux.

Để dùng thử AppImage, tất cả những gì bạn cần làm là tải xuống gói, làm cho nó có thể thực thi được (executable) và chạy nó. Nó tương tự như cách hoạt động của tệp .exe trong Windows.

AppImageHub là kho lưu trữ trung tâm cho các gói AppImage và chứa nhiều ứng dụng phổ biến. Bạn cũng có thể tải xuống AppImages từ trang web của nhà cung cấp nếu được cung cấp. Nhưng hãy tránh xa các AppImage được tải xuống từ nguồn không đáng tin cậy.

gói hình ảnh ứng dụng trình phát video vlc

AppImages thường nhanh hơn snaps hoặc Flatpak và cần ít dung lượng lưu trữ hơn. Chúng cũng dễ dàng xóa vì bạn có thể xóa các tệp AppImage bất cứ lúc nào mà không làm gián đoạn các quy trình hệ thống khác.

Dưới đây là các lệnh cần thiết để chạy tệp AppImage trong Linux từ dòng lệnh:

# grant execute permission to the file (cấp quyền thực thi cho file)
chmod a+x *.AppImage 
   
# execute the AppImage (thực thi AppImage)
./*.AppImage 

3. Flatpak

Flatpak là một hệ thống đóng gói phân phối khác cung cấp các ứng dụng có phần phụ thuộc cần thiết. Người dùng có thể tìm và cài đặt Flatpak từ cửa hàng phân phối của các hệ thống Linux phổ biến hoặc thông qua CLI.

Flatpak là một hệ thống phi tập trung, nghĩa là bạn có thể nhận các gói từ một số kho lưu trữ. Flathub là kho lưu trữ phổ biến nhất và có hàng nghìn ứng dụng.

ứng dụng Flatpak phổ biến

Các ứng dụng Flatpak chạy trong hộp cát (sandbox) theo mặc định, một môi trường ứng dụng tách biệt với thời gian chạy của hệ thống máy chủ. Hộp cát này bao gồm mọi thứ cần thiết để chạy phần mềm. Bản chất biệt lập của các gói Flatpak khiến chúng vốn đã an toàn và các thay đổi hệ thống chỉ có thể xảy ra nếu người dùng cung cấp quyền rõ ràng.

Tuy nhiên, các gói Flatpak thường chiếm nhiều dung lượng hơn Snaps hoặc AppImages. Chúng cũng chậm hơn so với AppImages nhưng nhanh hơn gói Snap. Flatpak được cài đặt mặc định trên các bản phân phối Linux hiện đại. Nếu không phải như vậy, bạn có thể cài đặt nó bằng các lệnh sau:

Trên Ubuntu/Debian:

sudo apt install flatpak

Trên Arch Linux:

sudo pacman -S flatpak 

Trên Fedora, RHEL và CentOS:

sudo dnf install flatpak

Bạn có thể thêm repo Flathub vào hệ thống của mình bằng đoạn code bên dưới:

flatpak remote-add --if-not-exists flathub \ https://flathub.org/repo/flathub.flatpakrepo

Sử dụng lệnh install Flatpak để cài đặt gói. Lệnh dưới đây cài đặt VLC Flatpak từ Flathub:

flatpak install flathub org.videolan.VLC

Snap, AppImage và Flatpak: Lựa chọn nào tốt nhất?

Vì cả ba định dạng gói đều độc lập với hệ điều hành nên bạn có thể chọn sử dụng bất kỳ định dạng nào. Tuy nhiên, có những tình huống mà một lựa chọn sẽ vượt trội hơn. Ví dụ: nếu tốc độ ứng dụng và kích thước chương trình quan trọng nhất với bạn thì AppImage sẽ là giải pháp lý tưởng.

Nhưng nếu bạn muốn chạy ứng dụng của mình trên các nền tảng khác nhau, Snaps sẽ là lựa chọn phù hợp. Mặt khác, Flatpaks cung cấp nhiều quyền kiểm soát hơn cho các nhà phát triển. Vì vậy, nếu bạn là nhà phát triển, bạn có thể chọn Flatpak thay vì Snaps. Tính sẵn có của ứng dụng cũng là một yếu tố quan trọng khi lựa chọn giữa Snap, AppImage và Flatpak.

Tìm hiểu ngay chương trình học công nghệ thông tin trực tuyến tại FUNiX ở đây:

Vân Nguyễn

Dịch từ: https://www.makeuseof.com/snap-vs-appimage-vs-flatpak/

ĐĂNG KÝ TƯ VẤN HỌC LẬP TRÌNH TẠI FUNiX

Bình luận (
0
)

Bài liên quan

  • Tầng 0, tòa nhà FPT, 17 Duy Tân, Q. Cầu Giấy, Hà Nội
  • info@funix.edu.vn
  • 0782313602 (Zalo, Viber)        
Chat Button
FUNiX V2 GenAI Chatbot ×

yêu cầu gọi lại