Khi bạn cài đặt các gói phần mềm Linux với snap
, bạn có thể nói lời tạm biệt với địa ngục phụ thuộc và phá vỡ các ứng dụng hoạt động khác. Các gói Snap ban đầu được thiết kế cho Ubuntu, nhưng hiện chúng đã có sẵn trên nhiều bản phân phối Linux.
Gói Snap là gì?
Trước đây, cài đặt các ứng dụng trên Linux là một trải nghiệm có thể gây khó chịu. Bạn sẽ cài đặt thứ gì đó chỉ để 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 sẽ 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 thư viện mà bạn vừa thay thế. Sửa một cái, ngắt 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 khó khăn 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 sử dụng hai ứng dụng xung đột vì chúng được gắn 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à hệ thống triển khai và đóng gói ứng dụng. Snappy là một trong những món phổ biến hơn cả. Nó dựa trên một hệ thống đóng gói và triển khai có tên là Click, hệ thống này quay trở lại sáng kiến Ubuntu Touch. AppImage và FlatPack là những ứng dụng khác mà bạn có thể đã gặp phải.
Các hệ thống này đóng gói ứng dụng cùng với bất kỳ phụ thuộc nào và các yêu cầu khác trong một tệp nén duy nhất. 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à ứng dụng được đóng gói hoặc yêu cầu chỉ có sẵn cho một mình nó.
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 bất kỳ sự cố nào 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 cần các phiên bản thư viện xung đột vì mỗi ứng dụng nằm trong hộp cát riêng của nó.
Tuy nhiên, nếu chúng không được cài đặt theo cách thông thường, chúng sẽ được xử lý như thế nào? Vâng, tệp gói đơn được tải xuống, giải nén và gắn kết dưới dạng SquashFS
hệ thống tệp ảo. Sau đó, nó được hiển thị cho bạn dưới dạng một môi trường ảo. Tất cả những điều này diễn ra ở hậu trường. Tất cả những gì bạn biết là bạn đã cài đặt một ứng dụng và bây giờ, bạn có quyền truy cập vào nó.
Tất nhiên, vì mỗi tệp gói phải chứa mọi tài nguyên mà ứng dụng cần, các tệp gói có thể lớn. Cũng dễ dàng sao chép 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 khác nhau snap
các ứng dụng yêu cầu tài nguyên giống nhau, mỗi ứng dụng đều mang theo bản sao của riêng mình.
Tuy nhiên, đây là sự đánh đổi cho sự đơn giản của cài đặt và loại bỏ các vấn đề về xung đột tài nguyên.
Cài đặt snapd
Snappy đã được giới thiệu với Ubuntu 16.04, vì vậy nếu bạn đang chạy phiên bản đó trở lên, bạn đã sẵn sà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 bạn sử dụng để tương tác với chúng. Phía sau hậu trường, snapd
daemon cũng là tên của gói bạn phải 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, gõ lệnh sau:
sudo dnf install snapd
Nếu bạn cầ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ể dùng snap version
lệnh để xem phiên bản của snap
khách hàng, snapd
daemon và số sê-ri phần mềm. Tên và bản phát hành của bản phân phối Linux và phiên bản hạt nhân cũng sẽ được hiển thị cho bạn.
Nhập nội dung sau:
snap version
Cài đặt gói snap
Đó là một quá trình khá đơn giản để cài đặt snap
gói hàng. Bạn có thể dùng snap
tìm kiếm snap
và sau đó cài đặt một gói bạn muốn.
Chúng tôi nhập thông tin sau để tìm và cài đặt trình chỉnh sửa ảnh gimp:
snap find gimp
snap
tìm kiếm các kết quả phù hợp với manh mối tìm kiếm “gimp” và trả về những phát hiện của nó. Nó sẽ tìm thấy bất kỳ thứ gì phù hợp hoặc đề cập đến cụm từ tìm kiếm.
Để cài đặt một trong các gói, chúng tôi sử dụng giá trị từ Name
như được hiển thị bên dưới:
sudo snap install gimp
Khi tải xuống, con số phần trăm đã hoàn thành tăng lên và thanh tiến trình di chuyển qua 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 xuất hiện (như hình bên dưới) cho bạn biết gói đã được cài đặt.
Bạn có thể dùng df
lệnh để kiểm tra dung lượng và việc sử dụng các hệ thống tệp khác nhau được định cấu hình trên máy tính Linux của bạn. Nếu chúng ta đưa đầu ra của nó vào grep
lệnh và tìm kiếm “gimp”, chúng tôi tách mục nhập cho gói chúng tôi vừa cài đặt.
Chúng tôi gõ như sau:
df | grep gimp
Điều này cho chúng ta thấy 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 snap
thư mục ở đây: /snap/gimp/252
. “252” là số phát hành của phiên bản này của gimp
.
LIÊN QUAN: Cách sử dụng lệnh grep trên Linux
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 để làm cho các tệp thông thường có thể truy cập được dưới dạng thiết bị khối. Chúng thường được sử dụng để gắn hệ thống tệp trong ảnh đĩa. Trong trường hợp này, họ đang gắn SquashFS
hệ thống tập tin trong snap
gói hàng. “18” có nghĩa là đây là ngày 18 /dev/loop
tệp thiết bị được sử dụng trên máy tính Linux này.
Chúng ta có thể sử dụng df
lệnh để nhanh chóng kiểm tra điều này. Chúng tôi sẽ sử dụng – t
(loại) tùy chọn để giới hạn đầu ra ở SquashFS
chỉ các loại tệp.
Chúng tôi gõ như sau:
df -t squashfs
Gắn kết SquashFS
hệ thống tệp được liệt kê. A /dev/loop
tệp thiết bị xử lý từng tệp và có 18 tệp trong số đó.
Mỗi hệ thống tệp được gắn trên một thư mục trong /snap
danh mục. Tuy nhiên, điều này không có nghĩa là có 18 snap
các gói được cài đặt trên máy tính này. Đây là bản phân phối Ubuntu, vì vậy một số snap
các gói được cài đặt ngay khi xuất xưởng và chúng tôi vừa cài đặt một gói khác.
Ngoài ra, khi bạn cài đặt snapd
, nó cài đặt một số lõi snap
các gói để xử lý các nhu cầu của snap
các gói.
Chúng ta có thể sử dụng snap list
, như được hiển thị bên dưới, để liệt kê các snap
gói:
snap list
Đầu ra hơi rộng, vì vậy phần cuối của danh sách được hiển thị bên dướ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 đã tăng lên 18 SquashFS
hệ thống tập tin. 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
snap
gói đã được cài đặt. -
Phiên bản: Số phiên bản của phần mềm trong
snap
gói hàng. -
Rev: Số sửa đổi của
snap
gói hàng. -
Theo dõi: Kênh này
snap
gói giám sát các bản cập nhật. Có bốn:- Ổn định: Kênh mặc định. Như tên gọi của nó, 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, có mã hoàn chỉnh. Nó trải qua quá trình kiểm tra cuối cùng trước khi chuyển sang kênh ổn định.
- Beta: Kênh này có chất lượng chu kỳ phát triển muộn, nhưng nó không được đảm bảo ổn định.
- Cạnh: Dành cho những 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 tính sản xuất. Đây là những con rồng!
-
Nhà xuất bản: Cá nhân, công ty hoặc tổ chức đã phát hành
snap
gói hàng. Nếu đó là một 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 xanh 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 một 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.
Các kênh snap
Bạn có thể dùng info
tùy chọn để nhận mô tả về một snap
gói hàng.
Để làm như vậy, chúng tôi nhập như sau:
snap info gtk-common-themes
Chúng tôi có thể biết gói đang theo dõi kênh nào và phiên bản của phần mềm trong snap
các gói trong bốn kênh. Trong hầu hết các trường hợp, bạn nên duy trì kênh ổn định.
A snap
gói kiểm tra bốn lần mỗi ngày để xem liệu phiên bản mới hơn của phần mềm có sẵn trên kênh mà nó đang xem hay “theo dõi” hay không. Nếu bạn muốn thay đổi kênh a snap
gói bài hát, bạn có thể sử dụng refresh
và --channel
các tùy chọn.
Để làm như vậy, chúng tôi nhập như sau:
sudo snap refresh gtk-common-themes --channel=beta
Nếu có phiên bản mới hơn của phần mềm, nó sẽ được cài đặt, nhưng đó không phải là trường hợp ở đây. Tuy nhiên, snap
gói hiện đang 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à nâng cấp.
Bạn có thể dùng --list
tùy chọn để kiểm tra xem các bản cập nhật có sẵn cho bất kỳ snap
các gói được cài đặt trên máy tính của bạn.
Để làm như vậy, chúng tôi nhập như sau:
sudo snap refresh --list
Bạn sẽ được cho biết nếu bất kỳ kênh nào snap
các gói trên máy tính của bạn đang theo dõi chứa các phiên bản phần mềm mới hơn.
Nếu có phiên bản mới hơn của phần mềm, bạn có thể sử dụng refresh
, như được hiển thị bên dưới, để buộc làm mới theo cách thủ công:
sudo snap refresh gtk-common-themes
Loại bỏ một gói snap
Để gỡ cài đặt một snap
gói, bạn có thể sử dụng tùy chọn loại bỏ, như được hiển thị bên dưới:
sudo snap remove gimp
Bảng lừa đảo snap
Sử dụng các gói snap khá đơn giản, nhưng chúng tôi đã biên soạn danh sách một số lệnh sẽ giúp bạn:
-
Để tìm kiếm một gói:
snap find package_name
-
Để cài đặt một gói:
sudo snap install package_name
-
Để xem tất cả các gói đã cài đặt:
snap list
-
Để nhận thông tin về một gói duy nhất:
snap info package_name
-
Để thay đổi kênh, một gói theo dõi để cập nhật:
sudo snap refresh package_name --channel=channel_name
-
Để xem liệu các bản cập nhật đã sẵn sàng cho bất kỳ gói nào đã cài đặt hay chưa:
sudo snap refresh --list
-
Để cập nhật một gói theo cách thủ công:
sudo snap refresh package_name
-
Để gỡ cài đặt một gói:
sudo snap remove package_name