我大致了解 snap 打包的工作原理。但是“snap”、“snapd”和“Snappy”具体是指什么呢?
似乎“snap”指的是很多东西(包格式、终端命令......),“snapd”是一个特定的工具,“Snappy”不再使用[1] [2]?
[1]: 我能找到的唯一官方提及是这个 Ubuntu 桌面页面的标题和 URL:https://www.ubuntu.com/desktop/snappy
[2]: 我记得 Ubuntu Core 曾经被称为 Snappy Ubuntu Core,但现在不再是这样了:https://developer.ubuntu.com/core
答案1
- 折断:一种特定的打包格式,定义为 squashfs 映像,
meta/snap.yaml
其中包含一个遵循具体格式。 - Snap 商店:快照的中央存储库,可以从中下载/安装快照。
- Snapcraft:用于创建快照(想想快照的 pbuilder)并(可选)将其放置在商店中的命令行工具。
- 快照:运行 snap 所需的守护进程(从商店下载、安装到位、限制、运行应用程序等)。Snapd 还包含
snap
用于与 snapd 通信的命令(供用户请求安装新的 snap 等)。
整个系统有时被称为“snappy”。令人困惑的是,我看到它越来越多地被称为“snapcraft”。虽然 snap 可以在普通的 Ubuntu(以及其他各种 Linux 发行版)上运行,但 Ubuntu Core 是一个完全基于 snap 的操作系统(根本没有apt
)。不幸的是,已经有一个“ubuntu core”是 Ubuntu 的基本 rootfs,因此为了区分,它被称为“snappy ubuntu core”。旧核心最近被重命名为Ubuntu 基础,这就是为什么现在很少见到“snappy ubuntu core”的原因。
答案2
Snappy 是一个软件部署和包管理系统,最初由 Canonical 为 Ubuntu 手机操作系统设计和构建。这些包称为“snaps”,使用它们的工具称为“snapd”,它们适用于各种 Linux 发行版,因此允许与发行版无关的上游软件部署。该系统旨在用于手机、云、物联网和桌面计算。
“Snap” 应用程序包是独立的,适用于各种 Linux 发行版。这与传统的 Linux 包管理方法(如 APT 或 RPM)不同,后者要求在应用程序更新时为每个 Linux 发行版专门定制包,因此会延迟从开发人员到软件最终用户的应用程序部署。Snap 本身不依赖于任何外部商店(“应用商店”),可以从任何来源获取,因此可用于上游软件部署。在 Ubuntu 和其他版本的 Linux 上部署 Snap 时,Ubuntu 应用商店将用作默认后端,但也可以启用其他商店。
开发人员可以使用 snap 创建命令行工具、后台服务以及桌面应用程序。使用 snap 应用程序,可以通过原子操作或增量进行升级。
2016 年 6 月,snapd 被移植到各种 Linux 发行版,使 Snap 可以在任何 Linux 发行版中使用,而不仅仅是全 Snap 的 Ubuntu Core。Snapd 也可用于 Arch Linux、CentOS、Debian、Fedora、Gentoo Linux、OpenWrt、openSUSE 和 Red Hat Enterprise Linux。每个发行版都能够解释 Snap 元数据,以特定于发行版的方式实现 Snap 的安全性或其他期望。