什么是Snap应用?
by liam zheng on 21 October 2020

如果你在使用 Ubuntu 18.04 / 20.04 LTS 版本的 Ubuntu 系统,会发现系统里面多了一个应用格式包 —— .snap 包。Snap 包是 Ubuntu 16.04 LTS 发布时引入的新应用格式包。目前已流行在 Ubuntu 且在其他如 Debian、Arch Linux、Fedora、Kaili Linux、openSUSE、Red Hat 等 Linux 发行版上通过 snapd 来安装使用 snap 应用。较传统 Linux 的 rpm,deb 软件包,snap 有什么特点和优势呢?下面将为你介绍snap软件包。
安全,通用的 Linux 软件包

当你在安装完 snap 后,你会发现在在根目录下会出现如 /dev/loop0 的挂载点,这些挂载点正是 snap 软件包的目录。Snap 使用了 squashFS 文件系统,一种开源的压缩,只读文件系统,基于 GPL 协议发行。一旦 snap 被安装后,其就有一个只读的文件系统和一个可写入的区域。应用自身的执行文件、库、依赖包都被放在这个只读目录,意味着该目录不能被随意篡改和写入。
squashFS 文件系统的引入,使得 snap 的安全性要优于传统的 Linux 软件包。同时,每个 snap 默认都被严格限制(confined),即限制系统权限和资源访问。但是,可通过授予权限策略来获得对系统资源的访问。这也是安全性更好的表现。

Snap 可包含一个或多个服务,支持 cli(命令行)应用,GUI 图形应用以及无单进程限制。因此,你可以单个 snap 下调用一个或多个服务。对于某些多服务的应用来说,非常方便。前面说到 snap 间相互隔离,那么怎么交换资源呢?答案是可以通过 interface(接口)定义来做资源交换。interface 被用于让 snap 可访问 OpenGL 加速,声卡播放、录制,网络和 HOME 目录。Interface 由 slot 和 plug 组成即提供者和消费者。
如何使用 snap 软件包
通过上述简单介绍,大概了解了什么是 snap 应用包,如你已经在电脑上安装了Ubuntu,那么就可以通过下面的操作来安装使用 snap 软件包。Snap 的基本命令:install, remove, find, list, infor, refresh 等等。
1.安装 snap,可使用以下命令或图形界面的 store 通过鼠标点击操作:
sudo snap install code //安装code snap
2.卸载 snap
sudo snap remove code
3.搜索 snap
snap find code
4.查看 snap 信息
snap info code
5.查看已安装的 snap
snap list
6.更新 snap
sudo snap refresh code channel=latest/stable //channel来指定通道版本
更多关于 snap 的使用说明,请访问 snap 网站文档。
不止 Linux 桌面应用
Snap 除了在 Ubuntu 桌面和其他 Linux 发行版桌面系统上使用外,还能在Ubuntu server 和 Ubuntu Core 上使用且为 Ubuntu Core 默认应用格式包。Ubuntu Core 是迷你、与Ubuntu一致,专为物联网设备、嵌入式平台设计,更多内容请访问Ubuntu Core网页。
目前,Ubuntu 的相关产品已以 snap 包的形式发布,例如 Ubuntu MAAS、Juju、Multipass、MicroK8s、MicroStack 等等。借助 snap,你可以一键安装专为笔记本工作站打造的 Kubernetes 和 OpenStack,省去了安装等待和繁琐配置过程。对于开发和测试团队来说无疑是一个更高效的方案,将更多的精力和资源投入到关键价值上。
Snap应用开发与Snapcraft

介绍了这么多 snap 相关内容,如何 snap 如何开发呢?Snap 应用使用 snapcraft 来开发,并且 snapcraft 已打包为 snap 应用,一键安装:sudo snap install snapcraft –classic 即可开始构建你的 snap 应用。关于 snap 开发和 snapcraft 使用的更多内容,请加入本月 Ubuntu Tech Live视频直播,届时 Ubuntu 专家将现场教学,开发自己的第一个 snap 应用。
订阅博客文章
查看更多内容
使用 MAAS 部署 VMware 虚拟机管理程序
多数现代数据中心本身均为异构架构。VMware 环境常与容器平台、数据库及其他裸机业务负载共存,多年运行于同一套硬件之上。服务器一次性采购,但会随业务需求变化调整承载业务。 然而,ESXi(VMware 虚拟机管理程序)的配置通常由独立流程负责。主机通过 VMware 工具、自定义脚本或专为将部署 ESXi 到机器中开发的自动化程序完成安装。这些工作流单独运行虽行之有效,却未必能与物理基础设施的其他部分实现统一的追踪与管理。 由此导致了脱节:即便归属同一硬件资源池,ESXi 主机的管理方式仍与数据中心其他设备脱离。随着环境规模扩大、架构日趋多元化,这种割裂式管理会形成业务瓶颈。 将 ESXi 纳入统一裸机平台进行统筹管理将是更具扩展性的方案。这使得 ESXi 的配置流程, […]
什么是 Ubuntu Pro?与标准版有不同吗?功能及内容详解
Ubuntu Pro 是 Canonical 推出的全方位订阅服务,提供开源安全防护、技术支持与合规保障。从长达 15 年的安全维护、全天候技术支持,到面向 IT 管理员的自动化加固工具,深入了解 Ubuntu Pro 订阅包含的全部服务。 Ubuntu Pro 具备哪些功能? Ubuntu Pro 是一套安全合规订阅服务,可为操作系统、应用程序及 IT 运维各层级及时提供补丁与安全维护。它助力企业及其工程师保障软件与系统安全,并通过加固工具、自动化流程及一系列其他功能,为企业满足安全标准合规铺平道路。 了解关于 Ubuntu Pro 的更多信息 › Ubuntu Pro 与标准版 Ubuntu 有何不同? 很多人存在误区,误以为 Ubuntu Pro 是独立版本或全新操 […]
代码热风险 – 软件供应链视角下,容器交付前要先“冷却”
已遭遇的安全漏洞,与即将到来的威胁 2025 年 9 月,npm 软件仓库中包括 chalk 和 debug 在内的数十个热门 JavaScript 软件包遭入侵。这些软件包应用极为广泛,几乎无处不在:前端应用、后端微服务以及 CI 工具中均有使用。开发人员并无任何失误操作,他们只是执行了一贯使用的命令:npm install chalk。但恶意软件却悄无声息地侵入了。 这并非操作系统中的漏洞。也不是某台笔记本电脑上的病毒。这是一次供应链攻击:攻击者在开发者构建软件所使用的组件中植入了恶意代码。手段并不复杂,仅仅是一名开发者遭到钓鱼攻击、一次恶意发布,数百万下游用户便因看似是合法更新而将恶意代码引入系统。 而这确实是一次合法的更新。发布者并非有意植入恶意软件,也对此毫不知 […]