Mọi thứ bạn cần biết về trình quản lý gói Snap và Snap Store

Mọi thứ bạn cần biết về Snap và Snap Store

Chia sẻ kiến thức 20/08/2022

Bạn bị choáng ngợp khi làm quen với các trình quản lý gói dòng lệnh? Bắt đầu với Snap và Snap Store ngay hôm nay.

Trình quản lý gói là một tập hợp các dịch vụ tích hợp hỗ trợ việc cài đặt, cập nhật, gỡ bỏ và cấu hình các gói hoặc chương trình trên máy tính.

Trong hệ điều hành Linux, bạn có thể lựa chọn từ nhiều trình quản lý gói như APT, YUM, RPM và Pacman. Mỗi lựa chọn lại một số tính năng riêng biệt khác nhau. 

Tuy nhiên, Snap, một trình quản lý gói tương đối mới, đã nổi lên như một giải pháp thay thế khả thi cho các trình quản lý gói truyền thống. Hãy cùng FUNiX tìm hiểu về Snap, ưu và nhược điểm của nó cũng như cách cài đặt và sử dụng nó trên Linux.

1. Snap là gì?

Snap là một hệ thống đóng gói và triển khai đa nền tảng do nhà sản xuất Ubuntu Canonical phát triển cho nền tảng Linux. Nó tương thích với hầu hết các bản phân phối Linux chính như Ubuntu, Debian, Arch Linux, Fedora, CentOS và Manjaro.

Snap có ba thành phần cơ bản:

1.1 Snaps

Cũng giống như bất kỳ trình quản lý gói nào khác, Snap cũng có các gói được gọi là snaps. Không giống như các gói từ các trình quản lý gói truyền thống, snaps không có phần phụ thuộc (dependencies) và dễ cài đặt.

Snaps có phần mở rộng là .snap, về cơ bản đây là một hệ thống tệp nén sử dụng định dạng SquashFS và chứa toàn bộ mô-đun gói, bao gồm ứng dụng, các thư viện phụ thuộc và siêu dữ liệu bổ sung.

1.2 Snapd

Snapd (hoặc snap daemon) sử dụng siêu dữ liệu snap để thiết lập hộp cát an toàn cho các ứng dụng trên hệ thống của bạn. Vì nó là một daemon* nên toàn bộ nhiệm vụ duy trì và quản lý môi trường snap sẽ diễn ra ở chế độ nền.

*Daemon: loại chương trình trên các hệ điều hành Linux hoạt động ẩn trong background không cần sự kiểm soát của người dùng. 

1.3 Snap Store (Cửa hàng Snap)

Snaps nằm trong Snap Store và bạn có thể tìm và tải chúng xuống tương tự như cách làm với các trình quản lý gói khác. Ngoài ra, bạn cũng có thể trực tiếp xuất bản các gói snap của riêng mình lên Snap Store, điều này không thể thực hiện được với các trình quản lý gói truyền thống.

Bên cạnh những yếu tố này, Snap còn có một thành phần thiết yếu khác được gọi là channel (kênh). Một channel chịu trách nhiệm xác định phiên bản snap nào được cài đặt và theo dõi các bản cập nhật trên hệ thống của bạn. Do đó, khi bạn cài đặt hoặc cập nhật snaps, bạn có khả năng chỉ định channel bạn muốn tiếp tục cho từng thao tác này.

Tóm lại:

  • Snap: Được dùng để chỉ cả định dạng gói ứng dụng và giao diện dòng lệnh.
  • Snapd: Một daemon Snap giúp quản lý và duy trì các snaps.
  • Snap store: Trang chủ của tất cả các snaps; cho phép bạn tải lên snaps của riêng mình và cài đặt snaps mới.
  • Snapcraft: Một framework giúp bạn xây dựng các snaps của riêng mình.

2. Ưu và nhược điểm của Snap

Kể từ khi Canonical công bố Snap, cộng đồng Linux đã xôn xao về việc liệu Snap có phải là một sự cải thiện cách phân phối gói trên Linux hay không. 

Dưới đây là bảng phân tích Ưu và nhược điểm của Snap:

2.1 Ưu điểm của Snap

  1. Snaps đi kèm với các phần phụ thuộc (thư viện) tạo điều kiện truy cập tức thì vào một chương trình, do bạn không còn phải cài đặt thủ công các phụ thuộc bị thiếu để làm cho nó hoạt động trên hệ thống của bạn.
  2. Mỗi snap chạy trong hộp cát chứa riêng để tránh can thiệp vào các gói hệ thống khác. Do đó, khi bạn loại bỏ snap, hệ thống sẽ loại bỏ tất cả dữ liệu của nó, bao gồm cả các phần phụ thuộc, mà không ảnh hưởng đến các gói khác. Điều này rõ ràng cũng cung cấp một môi trường an toàn hơn vì một gói không thể truy cập thông tin của gói khác.
  3. Cập nhật nhanh chóng tự động chụp theo các khoảng thời gian đã định. Do đó, bạn luôn chạy phiên bản mới nhất của chương trình trên hệ thống của mình.
  4. Snap giúp cho việc các nhà phát triển trực tiếp phân phối phần mềm đến người dùng được dễ dàng hơn, vì vậy họ không phải đợi bản phân phối Linux của mình được phát hành. 
  5. Thêm vào điểm trước đó, một lợi thế khác của việc để tự các nhà phát triển chịu trách nhiệm đóng gói và phân phối phần mềm của họ là họ không phải tạo các gói cho từng bản phân phối cụ thể, vì nó đi kèm với các phụ thuộc bắt buộc.

2.2 Nhược điểm của Snap

  1. Vì snaps đi kèm với các phụ thuộc, chúng có kích thước lớn hơn và chiếm nhiều dung lượng hơn so với các gói từ các trình quản lý gói khác.
  2. Do các phụ thuộc đi kèm, snaps được phân phối dưới dạng hình ảnh hệ thống tệp nén và bạn cần phải gắn kết (mount) chúng trước khi cài đặt. Do đó, snaps chạy chậm hơn các gói truyền thống.
  3. Mặc dù Snap cho phép các nhà phát triển trực tiếp phân phối các snaps của họ cho người dùng, nhưng quy trình phân phối yêu cầu họ phải thiết lập một tài khoản với Canonical và lưu trữ snaps của họ trên đó. Điều này đi ngược lại bản chất thực sự của phương pháp mã nguồn mở bởi vì mặc dù phần mềm vẫn là mã nguồn mở, hệ thống quản lý gói được kiểm soát bởi một thực thể.
  4. Một nhược điểm khác của việc cho phép các nhà phát triển phân phối các gói là các gói không được cộng đồng kiểm tra và đánh giá nghiêm ngặt và do đó có nguy cơ chứa phần mềm độc hại.
  5. Do back-end của Snap vẫn là mã nguồn đóng và được kiểm soát bởi Canonical, nhiều bản phân phối Linux lớn không muốn đặt Snap làm trình quản lý gói mặc định trên hệ thống của họ.

Liên quan đến nguy cơ phần mềm độc hại, Snap hiện sử dụng tính năng kiểm tra phần mềm độc hại tự động để quét các gói do người dùng tải lên để tìm mã độc trước khi nó được phân phối trên Snap Store.

3. Cách cài đặt snapd trong Linux

Vì snapd là một thành phần thiết yếu của Snap nên đây là thứ đầu tiên bạn cần cài đặt trên hệ thống. Tuy nhiên, nếu bạn đang chạy bất kỳ bản phân phối Linux nào sau đây, bạn đã được cài đặt sẵn snapd trên hệ thống của mình: KDE Neon, Manjaro, Ubuntu (16.04/4 LTS và 20.04 LTS), Zorin OS.

Với các bản phân phối Linux khác, bạn sẽ cần cài đặt snapd theo cách thủ công.

Trên Debian/Ubuntu:

sudo apt update
sudo apt install snapd

Trên CentOS và các bản phân phối dựa trên RHEL khác:

yum install epel-release
yum install snapd

Trên Fedora:

sudo dnf install snapd

Trên Arch Linux:

git clone https://aur.archlinux.org/snapd.git
cd snapd
makepkg -si

CÓ LIÊN QUAN: Cách Cài Đặt Và Gỡ Bỏ Các Gói Trong Arch Linux

Trên Manjaro Linux:

sudo pacman -S snapd

Sau khi cài đặt, bạn cần bật đơn vị systemd chịu trách nhiệm quản lý thông tin liên lạc của Snap trên (một số) bản phân phối Linux trước khi có thể sử dụng Snap.

Nếu bạn đang sử dụng bản phân phối Linux không phải Ubuntu và các bản phân phối dựa trên nó, hãy chạy lệnh sau để bật đơn vị snapd systemd:

sudo systemctl enable --now snapd.socket

Cuối cùng, khởi động lại hệ thống của bạn bằng:

sudo reboot

TÌM HIỂU THÊM: Cách Quản Lý Dịch Vụ Hệ Thống Bằng Lệnh Systemctl

4. Cách sử dụng Snap trên Linux

Sử dụng Snap khá giống với việc sử dụng các trình quản lý gói khác. Vì bạn đã cài đặt snapd trên hệ thống ở bước trước, nên giờ đây bạn có thể truy cập công cụ snap và tương tác với snap từ Snap Store một cách dễ dàng.

4.1 Tìm một Snap

Với Snap, bạn có thể khám phá Snap Store và tìm các gói trên các danh mục khác nhau. Vì vậy, nếu bạn muốn tìm kiếm snaps trong một danh mục cụ thể, hãy sử dụng cú pháp lệnh sau:

snap find package_category

Ví dụ:

snap find development

Nếu bạn tình cờ gặp một gói và muốn biết thêm về nó, hãy sử dụng phương thức info với lệnh mặc định.

snap info package_name

Ví dụ: để trích xuất thông tin về GIMP snap:

snap info gimp

4.2 Cài đặt Snap

Khi bạn tìm thấy một snap đáp ứng yêu cầu của mình, bạn có thể cài đặt nó bằng cách chạy:

sudo snap install package_name

Sau khi cài đặt, bạn có thể tìm thấy chương trình trong  menu Ứng dụng (Applications) của bản phân phối Linux của mình. Sau đó, bạn có thể thực thi nó trực tiếp từ menu hoặc thông qua terminal bằng cách nhập tên của nó.

4.3 Danh sách Snaps đã cài đặt

Để xem  danh sách tất cả các snaps đã cài đặt trên hệ thống:

snap list

4.4 Xem thông tin phiên bản của một Snap

Để biết phiên bản hiện tại của snap, hãy chạy:

snap list package_name

4.5 Cập nhật Snaps

Snap tự động cập nhật các gói được cài đặt trên hệ thống của bạn. Để tạo điều kiện thuận lợi cho việc này, snapd được đặt để kiểm tra các bản cập nhật bốn lần một ngày theo mặc định. Tuy nhiên, bạn có thể sửa đổi tần suất làm mới này nếu muốn. 

Hơn nữa, nếu được yêu cầu, bạn có thể thực hiện làm mới ngay lập tức bằng cách chạy:

snap refresh

Tương tự, bạn cũng có thể kiểm tra bản cập nhật với:

sudo snap refresh package_name

Lúc này, Snap sẽ kiểm tra kênh được theo dõi bằng snap để tìm phiên bản mới hơn. Nếu có bản cập nhật, nó sẽ tự động tải xuống và cài đặt.

4.6 Hoàn nguyên về phiên bản Snap đã sử dụng trước đây

Nếu bạn đang gặp sự cố sau khi cập nhật nhanh, bạn có thể hoàn nguyên về phiên bản trước đó bằng cách chạy:

sudo snap revert package_name

4.7 Tắt và bật Snap

Nếu bạn không sử dụng snap nhưng có thể cần đến trong tương lai, bạn có thể tắt tạm thời và bật lại khi cần thiết để không phải trải qua quá trình gỡ cài đặt và cài đặt lại một lần nữa:

Để vô hiệu hóa snap, hãy nhập:

sudo snap disable package_name

Khi bạn muốn kích hoạt nó, chỉ cần chạy:

sudo snap enable package_name

4.8 Loại bỏ một Snap

Cuối cùng, để xóa các snaps không sử dụng trên hệ thống:

sudo snap remove package_name

5. Thiết lập thành công Snap trên Linux

Giờ đây bạn đã có Snap chạy trên hệ thống Linux của mình. Bạn đã có thể tìm và tải xuống hầu hết các gói bạn cần. 

Tuy nhiên, như đã nói ở trên, việc sử dụng Snap đi cùng với cả ưu và nhược điểm mà bạn nên xem xét trước khi bắt đầu. Nếu bạn muốn một lựa chọn thay thế cho Snap — một ứng dụng phù hợp với phương pháp miễn phí và mã nguồn mở — hãy tìm hiểu về Flatpaks để biết trình quản lý gói nào có cửa hàng tốt hơn để tải xuống các ứng dụng Linux.

>>> Nếu bạn đang có nhu cầu học lập trình trực tuyến, tìm hiểu ngay tại đây:

>>> Xem thêm các chủ đề hữu ích:

 

Vân Nguyễn

Dịch từ: https://www.makeuseof.com/everything-you-need-to-know-about-snap-and-snap-store/

ĐĂ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