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。
订阅博客文章
查看更多内容
NIS2 合规指南:第 2 部 — 了解 NIS2 合规要求
在上一篇博客文章中,笔者详细介绍了 NIS2 及其适用对象。本系列的第二篇文章中将详细介绍 NIS2 中的主要要求,并将这些要求具体转化为切实可行的行动措施,助力企业组织满足 NIS2 合规要求。欢迎阅读本文,一同深入了解 NIS2 的内容。 NIS2 适用于您。那么,您需要做些什么来满足 NIS2 合规要求? 如果您正在阅读本文,想必已经意识到 EU NIS2 适用于您所在的公司。接下来,让我们深入探究其中的具体要求,以及为实现合规性需要采取的行动。 该指令规定,相关实体必须落实网络安全风险管理措施,且这些措施必须“适当适度”。尽管这一要求看似宽泛,存在一定的解释空间,但指令中明确规定了一系列必须落实的最低限度的网络安全风险管理措施。 下面将细入探讨这些措施,并将其转化 […]
最新 IDC 研究 — 70% 的 IT 团队每周在安全补丁方面耗费时间超 6 小时
Canonical 与国际数据公司(IDC)开展的最新研究表明,在严苛的 CVE 补丁更新规定下,企业组织难以笃定地应用补丁,并且在开源软件供应链方面也面临着其他严峻挑战。 今日,Ubuntu 发行商 Canonical 发布了一份与 IDC 合作完成并由 Google Cloud 联合赞助的研究报告,其揭示了有关企业组织在安全补丁和不断加重的监管负担方面所面临压力与挑战的全新见解。这份题为《软件供应链现状:安全挑战、机遇以及借助开源软件实现韧性的路径》的报告,对 500 家拥有 250 名以上全职员工的企业组织进行了调查,确定了他们所面临的最紧迫问题。最值得注意的是,这些问题都是企业组织在漏洞和补丁管理、软件依赖关系或软件供应链可视性不足以及软件来源可信度方面面临的难题 […]
Ubuntu 20.04 LTS 标准支持周期终止 — 激活 ESM
ESM 确保设备集群的安全与运行性能 Focal Fossa 的标准支持周期将于 2025 年 5 月终止,也称生命周期终止(EOL)。Ubuntu 20.04 LTS 已然成为全球数百万物联网和嵌入式设备的关键组件,广泛应用于自助服务终端、数字引导牌、工业设备以及机器人系统等设备。该版本是医疗保健到制造业等各行业的企业进行创新的基础。与其他所有迎来标准支持周期终止的 Ubuntu LTS 版本一样,Focal Fossa 将转为扩展安全维护(EOL)模式。本文将为开发者和企业介绍相关选择,并说明如何启用 ESM 以持续获得支持。 在深入探讨之前,我们先来回顾一下 Ubuntu 版本为何存在生命周期终止(EOL)。 Ubuntu 版本为何存在 EOL? 每个 Ubuntu […]