Snapcraft:多应用客户端-服务端snap开发教程
by liam zheng on 31 March 2020
在过去几个月我们发布了一些如何使用Rust,Java,C/C++和其他语言来开发snap桌面应用的文章。在这些从入门到精通的教程中,我们以一个代表性的snapcraft.yaml文件来介绍开发构建snap所需的具体细节。
今天,我们希望脱离这一过程,而将重点放在服务器端。我们将为你提供一个包含两个有趣组件的snapcraft.yaml的概述:a)它将拥有多个应用程序; 通常,snap包含一个应用程序。b)它具有简单的后台服务,其他应用程序可以连接到该服务。 我们一起来看一下。
Snapcraft yaml
以下是snapcraft.yaml文件的内容:
apps:
borg:
command: bin/borg
daemon: simple
restart-condition: on-abnormal
plugs:
- home
- network
- network-bind
locutus:
command: bin/locutus
plugs:
- home
- network
里面的内容是什么?
首先,我们申明了一个名为borg应用程序的服务端bundle。 它是一个简单的服务,重启条件是on-abnormal”(一个基于systemd返回值的systemd状态)。
其次,为了让服务能工作,它需要能够于网络端口绑定。因此,我们定义了network-bind接口。请主义如果你的应用程序需要绑定特殊权限的端口,你需要使用sudo来让它能正常运行。snaps的使用不会改变底层的安全要求。
我们也定义了home目录和网络的访问权(以便于服务可以立即读取一个配置文件),使得应用程序可以使用网络。除声明绑定外,这些是必需的,除非你的服务被设计为仅在本机上运行和监听。
在第二部分,我们申明了客户端的bundle,即仅需要访问home目录(配置文件、证书等等)和网络。通过上述操作,你可以在各种系统上以一种经典客户端-服务端的模型来运行snap的组件应用。
如何调用一个多应用的snap程序?
你可能有关于单个snap内包含多个应用程序调用的疑问,以及用户如何运行他们。当一个应用程序名称符合snap名称时,例如: igor,那么你只需要运行“igor”或者“/snap/bin/igor”。在这里,调用稍微有些不同。我们以名为“picard”的snap举例,基于上述内容,要运行服务端,操作命令为:
picard.borg
相似地,要运行客户端,命令为:
picard.locutus
用户也可以手动创建aliases来使用上应用程序。同时,在没有明显的名称空间冲突的情况下,开发者可以要求Snap应用商店团队为其软件自动创建别名。这也能达到一种顺畅和无缝的用户体验。在这个例子中,borg会被映射成picard.borg,locutus也会被映射成picard.locutus。
总结
我们希望今天的教程能把如何开发snap的过程和包括多应用程序和客户端-服务器方案变得更简易清楚。当然,创建snapcraft.yaml只是开发工作中一个部分,你也需要确保你的软件组件能互相正常工作。不过,现在你已经了解了snapcraft部分的内容了。
如何你有其他的评论或者需要更多相关可以帮助到你的内容,请加入我们的论坛与我们一起探讨。
封面图片来自于: Marlon Corona 和 Unsplash。
订阅博客文章
查看更多内容
Canonical 推出适用于 WSL 的 Ubuntu Pro
适用于 WSL 的 Ubuntu Pro 为 Windows 系统中运行的 Ubuntu 24.04 LTS WSL 实例提供一站式安全维护与企业级技术支持。该订阅服务还能为系统管理员提供全面的管理功能。 今日,Canonical 公司宣布适用于 WSL 的 Ubuntu Pro 服务正式全面上市,用户可通过 Microsoft Store 进行安装。源代码及测试版也可在 GitHub 获取。 Canonical 公司与 Microsoft 建立了良好的合作关系,携手打造优质的 WSL 使用体验。本次合作成果将惠及那些借助 WSL 开发生产级 Linux 解决方案的企业开发者。 Craig Loewen,Microsoft WSL 产品经理 Ubuntu Pro 为桌面端 […]
Ubuntu 正式登陆 Qualcomm Dragonwing™ IQ-9075 平台
Ubuntu 系统发行商 Canonical 公司 2025 年 12 月 1 日宣布,推出适用于 Qualcomm Dragonwing™ IQ-9075 平台的官方认证镜像。这款高性能工业平台现已全面适配 Ubuntu 24.04 LTS 的优化镜像并提供完整技术支持。该官方认证镜像同时适用于 Ubuntu 服务器版和桌面版,为开发者打造了坚实且安全的软件基础,可满足下一代工业自动化、机器人技术及边缘 AI 应用的开发需求。 本次发布是在 Ubuntu 全面适配 QCS6490 和 QCS5430 处理器的基础上推出的,也是 Canonical 公司为 Qualcomm Dragonwing™ 系列处理器提供技术支持的最新举措。 适用于边缘 AI 的高可靠性与高性能 […]
Canonical 发布针对 Thundercomm RUBIK Pi 3 的最新优化版 Ubuntu 镜像
Ubuntu 现已直接适配 Thundercomm RUBIK Pi 3 开发板——一款专为 AI 开发者打造、搭载高通 Dragonwing™ QCS6490 处理器的轻量型开发板。 Ubuntu 发行商 Canonical 2025 年 10 月 23 日正式宣布,推出针对 RUBIK Pi 3 开发板(一款基于 Dragonwing QCS6490 打造的强大 AI 开发板)的优化预装版 Ubuntu 镜像。此次新推出的优化版 Ubuntu 镜像即开即用,能有效缩短产品上市时间,同时提供 Canonical 官方长期技术支持。当前 RUBIK Pi 3 用户也可下载和安装新版 Ubuntu 镜像。 Ubuntu 提供驱动的快速 AI 开发平台 AI 行业发展瞬息万 […]