Cách làm việc với các gói Snap trên Linux

Khi bạn cài đặt các gói phần mềm Linux chỉ trong tích tắc, bạn có thể tạm biệt địa ngục phụ thuộc và làm rối tung các ứng dụng đang chạy khác. Các gói Snap ban đầu được thiết kế cho Ubuntu nhưng hiện đã có trên nhiều bản phân phối Linux khác nhau.

Gói Snap là gì?

Trước đây, việc cài đặt các ứng dụng trên Linux là một trải nghiệm khó chịu. Bạn sẽ chỉ cài đặt một cái gì đó để tìm một thư viện cụ thể hoặc phần phụ thuộc khác bị thiếu hoặc lỗi thời. Sau đó, bạn tìm kiếm tài nguyên bị thiếu và cài đặt nó, chỉ để tìm một ứng dụng khác phụ thuộc vào phiên bản của thư viện mà bạn vừa thay thế. Sửa một cái, hỏng một cái, lặp lại.

Điều này đã được cải thiện với các hệ thống quản lý gói tốt hơn như apt, dnf và pacman. Tuy nhiên, bạn vẫn gặp sự cố nếu cần cài đặt các phiên bản khác nhau của cùng một ứng dụng. Hoặc nếu bạn đang sử dụng hai ứng dụng xung đột vì chúng được liên kết với các phiên bản cụ thể – nhưng khác nhau – của một thư viện.

Một giải pháp cho những vấn đề này là các hệ thống triển khai và đóng gói ứng dụng. Lively là một trong những phổ biến hơn. Nó dựa trên một hệ thống đóng gói và triển khai có tên là Click, bắt nguồn từ sáng kiến ​​Ubuntu Touch. AppImage và FlatPack hoặc có những cái khác mà bạn có thể đã gặp.

Các hệ thống này đóng gói ứng dụng cùng với tất cả các phụ thuộc và các yêu cầu khác trong một tệp nén. Sau đó, ứng dụng sẽ chạy trong một loại thùng chứa nhỏ. Nó được đóng hộp cát và tách biệt với các ứng dụng khác. Các thư viện và các tài nguyên khác mà một ứng dụng cung cấp hoặc yêu cầu chỉ có sẵn cho ứng dụng đó.

Chúng không được cài đặt theo nghĩa truyền thống, vì vậy chúng không gây ra sự cố với các ứng dụng khác yêu cầu các phiên bản khác nhau của cùng một tài nguyên. Bạn thậm chí có thể cài đặt và chạy các ứng dụng yêu cầu các phiên bản xung đột của thư viện vì mỗi ứng dụng nằm trong hộp cát riêng.

Tuy nhiên, nếu chúng không được cài đặt theo cách thông thường thì chúng sẽ được xử lý như thế nào? Chà, một tệp gói duy nhất được tải xuống, giải nén và gắn kết dưới dạng hệ thống tệp ảo SquashFS. Sau đó nó được trình bày như một môi trường ảo. Tất cả điều này diễn ra đằng sau hậu trường. Bạn sẽ chỉ biết rằng mình đã cài đặt ứng dụng và có quyền truy cập vào nó.

Tất nhiên, vì mỗi tệp gói phải chứa tất cả các tài nguyên mà ứng dụng cần, tệp gói có thể lớn. Cũng dễ dàng sao chép một tài nguyên mà bạn thường chỉ cài đặt một lần, chẳng hạn như MySQL hoặc Apache. Nếu hai ứng dụng snap khác nhau yêu cầu cùng một tài nguyên, thì mỗi ứng dụng sẽ cung cấp bản sao của riêng mình.

Tuy nhiên, điều này phải trả giá bằng việc cài đặt đơn giản và loại bỏ các vấn đề xung đột tài nguyên.

cài đặt snapd

Snappy đã được giới thiệu trong Ubuntu 16.04, vì vậy nếu bạn đang sử dụng phiên bản đó hoặc mới hơn, thì bạn nên sử dụng. Trên máy của chúng tôi, Snappy đã được cài đặt trên Manjaro 18.04, nhưng chúng tôi phải cài đặt nó trên Fedora 31.

snap vừa là tên của các tệp gói vừa là lệnh được sử dụng để tương tác với chúng. Trong nền, daemon snapd cũng là tên của gói bạn cần cài đặt nếu bạn chưa có Snappy trên máy tính của mình.

Để cài đặt snapd trên Fedora, hãy nhập lệnh sau:

sudo dnf install snapd

Tập tin

Nếu bạn muốn cài đặt nó trên Manjaro, hãy sử dụng các lệnh sau:

sudo pacman -Sy snapd
sudo systemctl enable --now snapd.socket

Bạn có thể sử dụng lệnh snap version để xem phiên bản của ứng dụng khách snap, daemon snapd và số sê-ri phần mềm. Tên và ấn bản của bản phân phối Linux và phiên bản nhân của bạn cũng sẽ được hiển thị.

Nhập các thông tin sau:

snap version

Tập tin

Cài đặt gói snap

Việc cài đặt gói snap-in khá đơn giản. Bạn có thể sử dụng snap để tìm kiếm các gói snap và sau đó cài đặt gói bạn muốn.

Chúng tôi nhập thông tin sau để tìm kiếm và cài đặt trình chỉnh sửa hình ảnh gimp:

snap find gimp

Tập tin

chụp các tìm kiếm phù hợp với đầu mối tìm kiếm “gimp” và trả về kết quả. Nó sẽ tìm thấy bất cứ thứ gì phù hợp hoặc đề cập đến cụm từ tìm kiếm của bạn.

Để cài đặt một trong các gói, chúng tôi sử dụng giá trị từ cột Tên như hình dưới đây:

sudo snap install gimp

Tập tin

Khi quá trình tải xuống diễn ra, tỷ lệ phần trăm hoàn thành tăng lên và thanh tiến trình di chuyển dọc theo phía bên trái của cửa sổ đầu cuối. Khi quá trình cài đặt hoàn tất, một thông báo sẽ xuất hiện (như hình bên dưới) thông báo rằng gói đã được cài đặt.

PHÍA SAU

Bạn có thể sử dụng lệnh df để kiểm tra dung lượng và mức sử dụng của các hệ thống tệp khác nhau được định cấu hình trên PC Linux của mình. Nếu chúng tôi xuất kết quả của nó sang lệnh grep và tìm kiếm “gimp”, chúng tôi trích xuất mục nhập cho gói mà chúng tôi vừa cài đặt.

Chúng tôi nhập:

df | grep gimp

Tập tin

Điều này cho chúng ta thấy rằng gói snap đã được gắn kết như thể nó là một hệ thống tệp. Điểm gắn kết nằm trong thư mục snap ở đây: /snap/gimp/252. “252” là số phát hành của phiên bản gimp này.

Hệ thống tệp được liệt kê là: /dev/loop18. Các tệp thiết bị vòng lặp được sử dụng để hiển thị các tệp thông thường dưới dạng thiết bị khối. Chúng thường được sử dụng để gắn các hệ thống tệp trong ảnh đĩa. Trong trường hợp này, họ gắn hệ thống tệp SquashFS trong gói snap. “18” có nghĩa đây là tệp thiết bị thứ 18 /dev/loop được sử dụng trên máy Linux này.

Chúng ta có thể nhanh chóng kiểm tra điều này bằng lệnh df. Chúng tôi sẽ sử dụng tùy chọn -t (loại) để chỉ giới hạn đầu ra ở các loại tệp SquashFS.

Chúng tôi nhập:

df -t squashfs

Tập tin

Các hệ thống tệp SquashFS đã gắn được hiển thị. Tệp thiết bị /dev/loop xử lý từng cái và có 18 cái.

Hệ thống tệp SquashFS được liệt kê trong cửa sổ đầu cuối.

Mỗi hệ thống tập tin được gắn vào một thư mục trong thư mục /snap. Tuy nhiên, điều này không có nghĩa là có 18 gói đính vào khác nhau được cài đặt trên máy tính này. Đây là một bản phân phối Ubuntu, vì vậy một số gói snap được cài đặt sẵn và chúng tôi chỉ cài đặt một gói khác.

Ngoài ra, khi bạn cài đặt snapd, nó sẽ cài đặt một số gói snap lõi để đáp ứng nhu cầu của các gói snap khác.

Chúng ta có thể sử dụng lệnh snap list như hình bên dưới để liệt kê các gói snap đã cài đặt:

snap list

Danh sách các phần đính vào trong cửa sổ đầu cuối.

Kết quả hơi rộng, vì vậy phần cuối của danh sách được hiển thị bên dưới.

Phần cuối của danh sách snaps trong cửa sổ đầu cuối.

Đây là toàn bộ danh sách:

Name                 Version                    Rev   Tracking  Publisher    Notes
core                 16-2.43.3                  8689  stable    canonical*   core
core18               20200124                   1668  stable    canonical*   base
gimp                 2.10.18                    252   stable    snapcrafters -
gnome-3-26-1604      3.26.0.20191114            98    stable/…  canonical*   -
gnome-3-28-1804      3.28.0-16-g27c9498.27c9498 116   stable    canonical*   -
gnome-calculator     3.34.1+git1.d34dc842       544   stable/…  canonical*   -
gnome-characters     v3.32.1+git3.b9120df       399   stable/…  canonical*   -
gnome-logs           3.34.0                     81    stable/…  canonical*   -
gnome-system-monitor 3.32.1-3-g0ea89b4922       127   stable/…  canonical*   -
gtk-common-themes    0.1-28-g1503258            1440  stable/…  canonical*   -

Như bạn có thể thấy, có 10 gói snap được cài đặt, không phải 18. Tuy nhiên, 10 gói này sinh ra 18 hệ thống tệp SquashFS. Các cột trong bảng khá dễ hiểu, nhưng sau đây là một số giải thích rõ ràng:

Tên: Tên của gói phần đính vào đã được cài đặt.
Phiên bản: Số phiên bản của phần mềm trong gói đính kèm.
Phiên bản: Số phiên bản của gói đính kèm.
Theo dõi: Kênh mà gói đính vào này theo dõi các bản cập nhật. Có bốn:
Ổn định: Kênh mặc định. Như tên cho thấy, kênh này chứa các gói ổn định nhất.
Ứng viên: Kênh này kém ổn định hơn nhưng rất gần với nó vì nó chứa phần mềm cấp ứng viên phát hành hoàn chỉnh trong mã. Nó đang trải qua thử nghiệm cuối cùng trước khi được chuyển sang kênh ổn định.
Beta: Kênh này phát triển muộn nhưng không đảm bảo ổn định.
Cạnh: dành cho người thử nghiệm bản dựng sớm. Bạn không nên sử dụng kênh này cho công việc quan trọng hoặc trên máy sản xuất. Đây là những con rồng!

Nhà xuất bản: Người, công ty hoặc tổ chức đã phát hành gói đính kèm. Nếu đó là nhà xuất bản đã được xác minh (và cửa sổ đầu cuối của bạn hỗ trợ Unicode), bạn sẽ thấy dấu kiểm màu lục bên cạnh tên của nhà xuất bản. Nếu nó không thể hiển thị dấu kiểm, bạn sẽ thấy dấu hoa thị
.

Ghi chú: Mọi nhận xét hoặc thông tin bổ sung sẽ xuất hiện ở đây.

Chụp kênh

Bạn có thể sử dụng tùy chọn thông tin để nhận mô tả gói nhanh.

snap info gtk-common-themes

Để làm điều này, chúng tôi nhập:

Tập tin

Chúng ta có thể xem kênh nào đang theo dõi gói và phiên bản phần mềm trong các gói snap trong mỗi kênh trong số bốn kênh. Trong hầu hết các trường hợp, bạn nên ở trên kênh ổn định.

Bộ ứng dụng Snap kiểm tra bốn lần một ngày để xem liệu có phiên bản mới hơn của phần mềm trên kênh mà bạn đang xem hoặc “theo dõi” hay không. Nếu bạn muốn thay đổi kênh mà gói snap đang theo dõi, bạn có thể sử dụng các tùy chọn làm mới và -channel.

sudo snap refresh gtk-common-themes --channel=beta

Để làm điều này, chúng tôi nhập:

Tập tin

Nếu có phiên bản mới hơn của phần mềm, thì nó đã được cài đặt, nhưng đó không phải là trường hợp ở đây. Tuy nhiên, gói snap hiện theo dõi kênh beta. Ngay sau khi phiên bản beta mới được phát hành, nó sẽ tự động được tải xuống và cập nhật.

Bạn có thể sử dụng tùy chọn –list để kiểm tra các bản cập nhật cho bất kỳ gói đính vào nào được cài đặt trên máy tính của bạn.

sudo snap refresh --list

Để làm điều này, chúng tôi nhập:

Tập tin

Bạn sẽ được thông báo nếu bất kỳ kênh nào được theo dõi bởi các gói snap trên máy tính của bạn chứa các phiên bản phần mềm mới hơn.

sudo snap refresh gtk-common-themes

Nếu có phiên bản phần mềm mới hơn, bạn có thể sử dụng tùy chọn làm mới như minh họa bên dưới để buộc làm mới theo cách thủ công:

Tập tin

Loại bỏ một gói snap-in

sudo snap remove gimp

Để gỡ cài đặt gói snap, bạn có thể sử dụng tùy chọn xóa như hình bên dưới:

Tập tin

Chụp gian lận

Sử dụng các gói snap khá đơn giản, nhưng chúng tôi đã biên soạn một danh sách một số lệnh để giúp bạn:
Để tìm kiếm một gói: snap find package_name
Để cài đặt gói: sudo snap install package_name
Để xem tất cả các gói đã cài đặt: snap-in list
Để biết thông tin về một gói duy nhất: snap info package_name
Để thay đổi kênh, gói theo dõi các cập nhật: sudo snap refresh package_name –channel = channel_name
Để kiểm tra xem các bản cập nhật đã sẵn sàng cho bất kỳ gói đã cài đặt nào chưa: sudo snap refresh –list
Để cập nhật gói theo cách thủ công: Sudo snap refresh package_name

Những bài viết liên quan

Back to top button