過去幾年,Linux社區在Linux系統的軟體管理領域喜迎一些显著的進步,特別是對於通用或跨發行版的軟體打包和 分發。其中之一便是由Canonical開發的Snap軟體格式,Canonical是流行的Ubuntu Linux的創作者。
Snap軟體是什麼?
Snaps是跨發行版、無相依性且易於安裝的軟體包, 它們包含所有依賴性,可於所有主流Linux發行版上運行。從單個建构中,一個snap(應用程式)將於所有支援的Linux 分發版上運行,包括桌面、雲和IoT。支援的發行版包括Ubuntu、Debian、Fedora、Arch Linux、Manjaro和CentOS/RHEL。
Snaps是安全的——它們被限制和沙盒化,因此不會危及整個系統。 它們在不同的限制等級下運行(這是指與基礎系統和彼此之間的隔離程度)。更值得注意的是,每個snap都有一個由snap的創作者慎重選擇的接口,根據snap的需求,提供存取特定系統資源的途径,這些資源超出了它們的隔離范围,如網絡訪問、桌面訪問等等。
在 snap 生態系統中的另一個重要概念是 Channels。一個 channel 確定了安裝的 snap 的版本,並追蹤更新,它包括並被細分為軌道、風險級別和分支。
snap 軟件包管理系統的主要組件包括:
- snapd – 在 Linux 系統上管理和維護 snap 的後台服務。
- snap – 應用程序包格式和用於安裝、卸載 snaps 以及在 snap 生態系統中執行其他許多操作的命令行界面工具。
- snapcraft – 構建 snaps 的框架和功能強大的命令行工具。
- snap store – 開發人員可以在此分享他們的 snaps,Linux 用戶可以在此搜索並安裝它們。
此外,snaps 還會自動更新。您可以配置更新發生的時間和方式。默認情況下,snapd 守護進程每天最多檢查四次更新:每次更新檢查稱為一次 refresh。您也可以手動啟動刷新。
如何在 Linux 中安裝 Snapd
如上所述,snapd 守護進程是在 Linux 系統上管理和維護您的 snap 環境的後台服務,通過實施禁錮策略並控制允許 snaps 訪問特定系統資源的接口。它還提供了 snap 命令並提供許多其他功能。
安裝 snapd 套件到您的系統上,請運行適用於您的 Linux 發行版的相應命令。
------------ [On Debian and Ubuntu] ------------ $ sudo apt update $ sudo apt install snapd ------------ [On Fedora Linux] ------------ # dnf install snapd ------------ [On CentOS and RHEL] ------------ # yum install epel-release # yum install snapd ------------ [On openSUSE - replace openSUSE_Leap_15.0 with the version] ------------ $ sudo zypper addrepo --refresh https://download.opensuse.org/repositories/system:/snappy/openSUSE_Leap_15.0 snappy $ sudo zypper --gpg-auto-import-keys refresh $ sudo zypper dup --from snappy $ sudo zypper install snapd ------------ [On Manjaro Linux] ------------ # pacman -S snapd ------------ [On Arch Linux] ------------ # git clone https://aur.archlinux.org/snapd.git # cd snapd # makepkg -si
在您的系統上安裝 snapd 後,使用以下 systemctl 命令 啟用管理主 snap 通訊插座的 systemd 單元。
在 Ubuntu 及其衍生版本上,這應該會被套件安裝程式自動觸發。
$ sudo systemctl enable --now snapd.socket
請注意,如果 snapd.socket 沒有運行,則無法運行 snap 命令。運行以下命令檢查它是否正在運行並啟用以自動在系統啟動時開始運行。
$ sudo systemctl is-active snapd.socket $ sudo systemctl status snapd.socket $ sudo systemctl is-enabled snapd.socket

接下來,通過以下方式創建一個符號鏈接以啟用 經典 snap 支持,將 /var/lib/snapd/snap 和 /snap 之間連接。
$ sudo ln -s /var/lib/snapd/snap /snap
要檢查您的系統上安裝的 snapd 和 snap 命令行工具的版本,請運行以下命令。
$ snap version

如何在 Linux 中安裝 Snaps
snap 命令允許您安裝、配置、刷新和移除 Snaps,並與更大的 snap 生態系統互動。
在安裝 snap 之前,您可以檢查 snap 商店中是否存在它。例如,如果應用程序屬於“聊天服務器”或“媒體播放器”類別,您可以運行以下命令來搜索它,這將在穩定通道中查詢可用的套件。
$ snap find "chat servers" $ snap find "media players"

要顯示關於 snap 的詳細信息,例如 rocketchat-server,您可以指定它的名稱或路徑。請注意,名稱在 snap 商店和已安裝的 snap 中都會被搜索。
$ snap info rocketchat-server

要在您的系統上安裝 snap,例如 rocketchat-server,請運行以下命令。如果未提供任何選項,則將安裝跟踪“穩定”通道的 snap,並進行嚴格的安全限制。
$ sudo snap install rocketchat-server

您可以選擇從不同的通道安裝:edge、beta 或 candidate,使用分別 --edge
、--beta
或 --candidate
選項。或使用 --channel
選項並指定您希望從中安裝的通道。
$ sudo snap install --edge rocketchat-server $ sudo snap install --beta rocketchat-server $ sudo snap install --candidate rocketchat-server
在 Linux 中管理 Snaps
在本節中,我們將學習如何在 Linux 系統中管理 Snaps。
查看已安裝的 Snaps
要顯示已安裝在您系統上的 snaps 的摘要,請使用以下命令。
$ snap list

列出正在使用的snap的当前修订版本,請指定其名稱。您也可以通過添加--all
選項來列出所有可用的修訂版本。
$ snap list mailspring OR $ snap list --all mailspring

更新和還原Snaps
您可以按如下方式更新指定的snap,或者如果沒有指定snap,則更新系統中的所有snap。 refresh命令檢查snap正在跟踪的通道,如果有可用的新版本,則下載並安裝snap的新版本。
$ sudo snap refresh mailspring OR $ sudo snap refresh #update all snaps on the local system

將應用程序更新到新版本後,您可以使用revert命令恢復到以前使用的版本。請注意,與軟件關聯的數據也將被還原。
$ sudo snap revert mailspring

現在,當您檢查mailspring的所有版本時,最新版本是禁用,以前使用的版本現在處於活動狀態。
$ snap list --all mailspring

禁用/啟用和刪除Snaps
如果您不想使用snap,可以禁用它。禁用時,snap的二進制文件和服務將不再可用,但所有數據仍將保留。
$ sudo snap disable mailspring
如果您需要再次使用snap,可以啟用它。
$ sudo snap enable mailspring
要從系統中完全刪除snap,請使用remove命令。默認情況下,將刪除snap的所有修訂版本。
$ sudo snap remove mailspring
要刪除特定版本,請按如下方式使用--revision
選項。
$ sudo snap remove --revision=482 mailspring
需要注意的是,當您刪除一個 snap 時,其數據(如內部用戶、系統和配置數據)將由 snapd (版本 2.39 及更高版本)保存為快照,並存儲在系統上 31 天。如果在 31 天內重新安裝 snap,您可以恢復數據。
結論
Snaps 在 Linux 社區中越來越受歡迎,因為它們為任何 Linux 發行版提供了一種方便的安裝軟件的方法。在本指南中,我們展示了如何在 Linux 中安裝和使用 snaps。我們介紹了如何安裝 snapd,安裝 snaps,查看已安裝的 snaps,更新和恢復 snaps,以及禁用/啟用和刪除 snaps。
您可以通過下面的反饋表格提問或聯繫我們。在本指南的下一部分中,我們將介紹如何在 Linux 中管理 snaps(命令、別名、服務和快照)。