什么是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 MAASJujuMultipassMicroK8sMicroStack等等。借助snap,你可以一键安装专为笔记本工作站打造的Kubernetes和OpenStack,省去了安装等待和繁琐配置过程。对于开发和测试团队来说无疑是一个更高效的方案,将更多的精力和资源投入到关键价值上。

Snap应用开发与Snapcraft

介绍了这么多snap相关内容,如何snap如何开发呢?Snap应用使用snapcraft来开发,并且snapcraft已打包为snap应用,一键安装:sudo snap install snapcraft –classic 即可开始构建你的snap应用。关于snap开发和snapcraft使用的更多内容,请加入本月Ubuntu Tech Live视频直播,届时Ubuntu 专家将现场教学,开发自己的第一个snap应用。

订阅博客文章

订阅您感兴趣的主题

在提交此表格的同时,我确认已阅读和同意的隐私声明隐私政策。

查看更多内容

Canonical正式发布专为物联网和嵌入式设备优化的Ubuntu Core 22操作系统

最安全可靠的嵌入式操作系统 Ubuntu 专为机器人和物联网工业应用,并提供实时计算功能。 2022年6月16日,Canonical 宣布推出专为物联网和边缘设备优化的 Ubuntu 22.04 LTS 完全容器化的版本 Ubuntu Core 22,该操作系统现在可通过https://cn.ubuntu.com/download/iot下载。结合 Canonical 提供的技术,该版本将 Ubuntu 全面且行业领先的操作系统和服务带到各种嵌入式和物联网设备中。 物联网制造商面临着复杂的挑战,他们需要控制在预算范围内并准时地部署设备。随着设备组的扩大,确保大规模安全性和远端管理也并非易事。 Ubuntu Core 22通过提供具备超高安全性、自我修复且低接触的操作系统, […]

升级您的桌面系统:Ubuntu 22.04.1 LTS现已可下载

不管你是第一次接触Linux的用户,有经验的开发人员,学术研究或者企业管理员,Canonical的Ubuntu 22.04.1 LTS是提升你的创造力,生产力和降低停机率的最佳方式。 Ubuntu 22.04.1 LTS的版本发布代表着自Ubuntu 22.04 LTS初始版本发布后的修补和已被确认的改进的巩固,这也是我们对用户长期支持承诺的(Long Term Support ”LTS”)第一个重要的里程碑。 从今天起,Ubuntu 22.04.1 LTS已可通过下载页进行下载和安装。 Ubuntu 20.04 LTS的用户将会收到从他们的桌面直接或自动或作为计划更新的一部分升级到 22.04 LTS的提示。现在将是一个开始探索Ubuntu 22.04 LTS的最佳时间 […]

使用Canonical MAAS 部署OpenEuler测试

Canonical的 MAAS(Metal as a Service)是一款用于服务器自动发现、配置的远程操作系统安装、部署工具,可以将物理服务器转换为类似于虛拟机资源,实现物理物理服务器的自助服务,远程访问。 MAAS目前支持 Ubuntu、CentOS、RHEL、Windows、ESXI 和自定义镜像的部署。当在数据中心管理成百上千的物理服务器,比如云、HPC 场景时,使用MAAS 是减少运维成本的最佳选择之一。     在本文的测试 中,展示了如何通过Packer 为 MAAS 构建 openEuler 映像并验证MAAS部署,可使用的临时解决方法以及如MAAS直接支持 openEuler时,cloud-init 和 curtin 可能的加强或修复方法。  测试环境 […]