「Snap」- 应用管理系统 | 新的包管理器

认识

官网:https://snapcraft.io/
文档:https://snapcraft.io/docs
仓库:https://github.com/snapcore/snapd

Snaps 是由 Canonical 为 Ubuntu 手机操作系统设计和建造的软件部署和包管理系统,类似于 APT、YUM、DNF 等等包管理器,但是采用不同的机制。该系统设计用于电话、云、物联网、桌面计算。它的目标是通过提供更好的系统更新和更强的安全性,使软件部署在 Ubuntu 和其他 Linux 系统上更加简单、安全和可靠。

组成

1)Snappy:这是 Ubuntu Snappy 的核心,负责包管理和系统更新。Snappy 允许用户在一个独立和安全的环境中运行和更新应用,因为它会将应用和其依赖项打包在一个独立的 ‘snap’ 包中。

2)Snap 包:这是 Snappy 系统中的应用程序和服务的容器。每个 Snap 包都包含了运行一个应用所需的所有依赖项,这使得应用可以在没有网络连接的情况下运行,也可以在任何支持 Snappy 的系统上运行。

3)Snap Store:这是一个在线应用程序市场,用户可以在这里下载和更新 Snap 包。Snap Store 支持公共和私有的应用分发,允许开发者快速和安全地将他们的应用分发给用户。

4)Snapcraft:这是个用于创建 Snap 包的工具。它允许开发者容易地将他们的应用和其依赖项打包在一起,以方便分发和部署。

snapcraft | The app store for Linux |
https://snapcraft.io/

Ubuntu Core:这是个基于 Snappy 的轻量级操作系统,专门为 IoT 和其他嵌入式设备设计。它的核心和应用都被打包成 Snap,以便于更新和管理。

补充说明,Snappy was the predecessor to Ubuntu Core. The term is still occasionally used informally to refer to various aspects of the snap ecosystem, such as the command, the package format, the Snap Store and Ubuntu Core. It’s best to avoid using this term; use Snap or the Snap ecosystem instead.

性质

1)原子性更新:Snappy 包或称为“snap”,包含了运行应用程序所需的所有依赖项。更新是原子性的,意味着更新要么完全成功,要么在失败时回滚到之前的状态,这样可以避免部分更新导致的问题。

2)安全性:每个 snap 都在沙箱中运行,与系统的其它部分隔离。这样,即使应用程序受到威胁,也不会影响到整个系统。

3)跨平台:Snappy 可以在各种设备上运行,包括桌面计算机、服务器和物联网设备。

4)版本控制:Snappy 允许用户在不同版本的 snap 之间切换,提供了更好的控制和灵活性。

5)商店:Ubuntu 的 Snap Store 为开发人员提供了一个发布和分发他们的 snap 的平台,同时也使用户能够方便地发现和安装新的应用程序。

构建

安装 | 卸载

on CentOS 7.9

Installing snap on CentOS | Snapcraft documentation

yum install epel-release
yum install snapd

systemctl enable --now snapd.socket

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

# Either log out and back in again or restart your system to ensure snap’s paths are updated correctly.

on Debian GNU/Linux 10

Enable snaps on Debian and install RedisDesktopManager

apt update
apt install snapd
snap install core

on Ubuntu 20.04 LTS

Disabling Snaps in Ubuntu 20.10 (and 20.04 LTS) – Kevin Custer

# 03/07/2021 虽然 snap 具有众多有点,但是我们暂时不需要这些功能,而且使用 snap 还会带来额外的困扰(Selenium/Uploading Files),因此我们决定卸载 snap 服务。

apt-get purge snapd

应用

这条是写给我们自己的:当应用难以安装时,我们才会使用 snap 进行安装。

改进

WIP

参考

Wikipedia/Snap (package manager)
Wikipedia/Snappy
snapd 项目主页:https://github.com/snapcore/snapd
A ‘snap’ is a universal Linux package: https://www.ubuntu.com/desktop/snappy
Ubuntu 推出的 Snap 应用架构有什么深远意义?: https://www.zhihu.com/question/47514122
Ubuntu 16.04 LTS 如何使用 Snap 软件包: http://www.linuxidc.com/Linux/2016-04/130679.htm
将 Linux 软件打包成 Snap 软件包:https://linux.cn/article-7441-1.html