Linux Snap 初学者指南 - 第 1 部分
过去几年,Linux 社区在 Linux 系统的软件包管理方面取得了一些显著的进步,尤其是在通用或跨发行版软件的打包和分发方面。其中一项进步就是Snap软件包格式,它是由流行的Ubuntu Linux的制造商Canonical开发的。
什么是 Snap 包?
Snap是跨发行版、无依赖且易于安装的应用程序,其所有依赖项都打包在一起,可在所有主流 Linux 发行版上运行。只需构建一次,Snap(应用程序)即可在桌面、云和 IoT 上所有受支持的 Linux 发行版上运行。受支持的发行版包括 Ubuntu、Debian、Fedora、Arch Linux、Manjaro 和 CentOS/RHEL。
Snap是安全的 - 它们受到限制和沙盒保护,因此不会危及整个系统。它们在不同的限制级别(即与基础系统和其他系统的隔离程度)下运行。更值得注意的是,每个 Snap 都有一个由其创建者根据其需求精心选择的接口,用于提供对其限制之外的特定系统资源的访问,例如网络访问、桌面访问等。
Snap生态系统中的另一个重要概念是渠道。渠道决定安装和跟踪哪个版本的 snap,它由轨道、风险级别和分支组成并细分。
snap 包管理系统的主要组件有:
- snapd – 在 Linux 系统上管理和维护您的快照的后台服务。
- snap – 应用程序包格式和命令行界面工具,用于安装和删除 snap 以及在 snap 生态系统中执行许多其他事情。
- snapcraft——用于构建 snap 的框架和强大的命令行工具。
- snap store——开发人员可以分享他们的 snap 程序并且 Linux 用户搜索和安装它们的地方。
此外,Snap还会自动更新。您可以配置更新的时间和方式。默认情况下,Snapd守护进程每天最多检查四次更新:每次更新检查称为刷新。您也可以手动启动刷新。
如何在 Linux 中安装 Snapd
如上所述,snapd守护程序是后台服务,它通过实施限制策略和控制允许 snap 访问特定系统资源的接口来管理和维护 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之间创建符号链接来启用经典 snap支持,如下所示。
$ sudo ln -s /var/lib/snapd/snap /snap
要检查系统上安装的snapd和 snap 命令行工具的版本,请运行以下命令。
$ snap version
如何在 Linux 中安装 Snap
snap命令允许您安装、配置、刷新和删除 snap,并与更大的 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或candidates,出于某种原因,分别使用--edge
、--beta
或--candidate
选项。或者使用 选项--channel
并指定您希望从中安装的渠道。
$ sudo snap install --edge rocketchat-server $ sudo snap install --beta rocketchat-server $ sudo snap install --candidate rocketchat-server
在 Linux 中管理 Snap
在本节中,我们将学习如何在 Linux 系统中管理快照。
查看已安装的 Snap
要显示系统上安装的快照摘要,请使用以下命令。
$ snap list
要列出正在使用的snap的当前修订版本,请指定其名称。您还可以通过添加选项列出其所有可用修订版本--all
。
$ snap list mailspring OR $ snap list --all mailspring
更新和恢复快照
您可以更新指定的 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
禁用/启用和删除快照
如果不想使用快照,可以将其禁用。禁用后,快照的二进制文件和服务将不再可用,但所有数据仍会保留。
$ sudo snap disable mailspring
如果您需要再次使用该快照,您可以重新启用它。
$ 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,则可以恢复数据。
结论
Snap在 Linux 社区中越来越受欢迎,因为它们提供了一种在任何 Linux 发行版上安装软件的简便方法。在本指南中,我们展示了如何在 Linux 中安装和使用Snap 。我们介绍了如何安装snapd、安装snap、查看已安装的 snap 、更新和恢复 snap 以及禁用/启用和删除 snap 。
您可以通过下面的反馈表提问或联系我们。在本指南的下一部分中,我们将介绍如何在 Linux 中管理快照(命令、别名、服务和快照)。