什么是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 应用。
订阅博客文章
查看更多内容
如何添加 Ubuntu Core 设备到 Landscape
简化物联网设备管理 自 Canonical 成立以来,Landscape 就一直是 Canonical 产品目录中的一员。Landscape 允许管理员仅从单个集中式门户即可管理桌面和服务器实例。在 Landscape Server 23.10 版本中,我们引入了通过 Landscape 管理快照包的功能,并且使用我们在 Snap Store 中提供的 Landscape Client 快照包测试版,您也可以将基于 Ubuntu Core 的设备添加到您的 Landscape 环境中。 Landscape 可以为您的整个 Ubuntu 系统环境提供远程设备管理服务。您可以使用它来管理软件版本和配置,控制安全补丁,监测设备性能和合规性,进行访问管理与审计。 本篇博客将帮助 […]
Raspberry Pi AI 套件在 Ubuntu 上的黑客指南
Raspberry Pi 最近发布了他们的 AI 套件,一个搭载 Hailo-8L AI 加速器的 PCIe M.2 HAT 套件。这款 AI 加速器的运算性能高达每秒 13 万亿次运算(TOPS)。相较之下,Coral Edge TPU 的运算性能为 4 TOPS,其拥有与 Raspberry Pi 5 CPU 相近的推理性能。AI 套件可以让标准平台上开发机器学习工作负载变得更加容易。它还允许在边缘部署强大的机器学习模型,而且成本低、功耗低。许多人对这款新工具包在其中可以发挥卓越性能的大量用例满怀期待,比如安全、制造或质量保证方面的摄像头视频对象实时检测。 在本篇博客中,我们将讨论我们尝试在 Ubuntu 24.04 LTS 上运行 Hailo-8L 加速器及其软件的 […]
Ubuntu Linux 为什么成为金融服务领域取代 CentOS 的首选?
金融服务由技术驱动。而客户体验越来越多地由数据驱动,通过定制产品和服务可以体现出个人行为和偏好。所有这一切都建立在安全稳定的技术基础之上,只有这样的基础才可以提供敏捷性和灵活性,以适应客户需求的同时保持合规性。 使用 CentOS 作为创新基础的金融服务机构见证了 CentOS 8 于 2021 年退出,随后是 CentOS 7 于 2024 年 6 月退出。不过,最近的一项研究显示,各行业近四分之一的企业组织仍在使用 CentOS。 听起来是不是很耳熟?众所周知,金融机构在进行重大技术变革时是最谨慎的。考虑到金融业务的敏感性,这也就可以理解了。事实上,尽管过渡到云已成为一种成熟的方案,但仍有 60% 的金融机构表示,他们采用的传统技术堆栈成本过高且存在不足。与所有传 […]