网站搜索

Linux 中的 Snap 初学者指南 - 第 1 部分


在过去的几年里,Linux 社区在 Linux 系统的包管理领域取得了一些显着的进步,特别是在通用或跨发行版软件打包和发行方面。其中一项进步是由流行的 Ubuntu Linux 的制造商 Canonical 开发的 Snap 软件包格式。

什么是 Snap 包?

Snap 是跨发行版、无依赖项且易于安装的应用程序,打包了所有依赖项,可在所有主要 Linux 发行版上运行。通过一次构建,快照(应用程序)将在桌面、云和物联网上所有受支持的 Linux 发行版上运行。支持的发行版包括 Ubuntu、Debian、Fedora、Arch Linux、Manjaro 和 CentOS/RHEL。

Snap 是安全的 - 它们受到限制和沙箱处理,因此不会危害整个系统。它们在不同的限制级别(即与基本系统和彼此之间的隔离程度)下运行。更值得注意的是,每个快照都有一个由快照创建者根据快照的要求精心选择的界面,以提供对其限制之外的特定系统资源的访问,例如网络访问、桌面访问等。

snap 生态系统中的另一个重要概念是通道渠道确定安装和跟踪更新的快照版本,它由轨道、风险级别和分支组成并由轨道、风险级别和分支细分。

snap包管理系统的主要组件有:

  • snapd – 在 Linux 系统上管理和维护快照的后台服务。
  • snap – 应用程序包格式和命令行界面工具,用于安装和删除 snap 以及在 snap 生态系统中执行许多其他操作。
  • snapcraft – 用于构建快照的框架和强大的命令行工具。
  • snap store – 开发人员可以在其中共享他们的快照,Linux 用户可以搜索并安装它们。

此外,快照也会自动更新。您可以配置更新发生的时间和方式。默认情况下,snapd 守护程序每天最多检查更新四次:每次更新检查称为刷新。您还可以手动启动刷新。

如何在 Linux 中安装 Snapd

如上所述,snapd 守护进程是后台服务,通过实施限制策略并控制允许快照的接口来管理和维护 Linux 系统上的 snap 环境。访问特定的系统资源。它还提供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

接下来,通过在 /var/lib/snapd/snap/snap 之间创建符号链接来启用经典快照支持,如下所示。

sudo ln -s /var/lib/snapd/snap /snap

要检查系统上安装的 snapd 和 snap 命令行工具的版本,请运行以下命令。

snap version 

如何在 Linux 中安装 Snap

snap 命令允许您安装、配置、刷新和删除快照,并与更大的快照生态系统进行交互。

在安装快照之前,您可以检查快照存储中是否存在该快照。例如,如果应用程序属于“聊天服务器”或“媒体播放器”类别,您可以运行这些命令来搜索它,这将查询商店获取稳定渠道中可用的软件包。

snap find "chat servers"
snap find "media players"

要显示有关快照(例如 Rocketchat-server)的详细信息,您可以指定其名称或路径。请注意,会在快照存储和已安装的快照中查找名称。

snap info rocketchat-server

要在系统上安装snap(例如rocketchat-server),请运行以下命令。如果未提供任何选项,则会安装一个 snap 来跟踪“稳定”通道,并进行严格的安全限制。

sudo snap install rocketchat-server

您可以出于某种原因选择从不同渠道安装:edgebetacandidate,使用 分别是 --edge--beta--candidate 选项。或者使用 --channel 选项并指定您想要安装的频道。

sudo snap install --edge rocketchat-server        
sudo snap install --beta rocketchat-server
sudo snap install --candidate rocketchat-server

在 Linux 中管理快照

在本节中,我们将学习如何在Linux系统中管理快照。

查看已安装的快照

要显示系统上安装的snaps摘要,请使用以下命令。

snap list

要列出正在使用的快照的当前版本,请指定其名称。您还可以通过添加 --all 选项列出其所有可用修订版。

snap list mailspring
OR
snap list --all mailspring

更新和恢复快照

您可以更新指定的快照,如果未指定快照,也可以更新系统中的所有快照,如下所示。 refresh 命令检查快照正在跟踪的通道,并下载并安装较新版本的快照(如果可用)。

sudo snap refresh mailspring
OR
sudo snap refresh		#update all snaps on the local system

将应用更新到新版本后,您可以使用恢复命令恢复到以前使用的版本。请注意,与软件关联的数据也将被恢复。

sudo snap revert mailspring

现在,当您检查 mailspring 的所有修订版时,最新修订版已禁用,以前使用的修订版现在处于活动状态。

snap list --all mailspring

禁用/启用和删除捕捉

如果您不想使用快照,可以禁用它。禁用后,快照的二进制文件和服务将不再可用,但是所有数据仍然存在。

sudo snap disable mailspring

如果您需要再次使用快照,可以启用重新启用它。

sudo snap enable mailspring

要从系统中完全删除快照,请使用删除命令。默认情况下,快照的所有修订都会被删除。

sudo snap remove mailspring

要删除特定修订版,请使用 --revision 选项,如下所示。

sudo snap remove  --revision=482 mailspring

需要注意的是,当您删除 snap 时,其数据(例如内部用户、系统和配置数据)将由 snapd(版本 2.39 及更高版本)保存作为快照,并在系统上存储 31 天。如果您在 31 天内重新安装快照,则可以恢复数据。

结论

Snap 在 Linux 社区中变得越来越流行,因为它们提供了一种在任何 Linux 发行版上安装软件的简单方法。在本指南中,我们展示了如何在 Linux 中安装和使用 snaps。我们介绍了如何安装snapd、安装snaps、查看已安装的快照、更新和恢复快照以及禁用/启用和删除快照。

您可以提出问题或通过下面的反馈表联系我们。在本指南的下一部分中,我们将介绍在 Linux 中管理快照(命令、别名、服务和快照)。