谢谢您的订阅!
当新的内容发布后您将开始接收邮件。您也可以点击邮件内的链接随时取消订阅。关闭Close

Snapcraft:多应用客户端-服务端snap开发教程

by liam zheng on 31 March 2020

在过去几个月我们发布了一些如何使用RustJavaC/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 CoronaUnsplash

订阅博客文章

订阅您感兴趣的主题

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

查看更多内容

可用于野生动物保护的 AI 5G 热点 – 2026 巴塞罗那世界移动通信大会(MWC)亮相

3 月 2 日至 5 日,Canonical 在巴塞罗那展示一款可实际运行的野生动物保护平台,该平台将开源 5G、AI 与云原生基础设施集成为便携形态。 其核心是一款便携式 5G AI 热点,基于 Ubuntu 与 Canonical Kubernetes 构建,运行在基于 Arm 架构的 Ampere 服务器上。它通过内置的私有 5G 网络连接无人机、追踪相机和科研人员应用,并支持可选的卫星回传。 其用途是在数据采集现场处理包括照片和视频在内的野生动物数据,利用 AI 提取有效信息,并在全球范围内共享结构化结果。 从边缘智能到实际影响力 在演示中,参观者可以查看经过处理的野生动物视频流,系统可识别动物、物种乃至已知个体,结果展示在带标注媒体的地理空间 TRAPPER 界 […]

Canonical 与 Ubuntu RISC-V – 2025 年回顾及 2026 年展望

2025 年:从 RISC-V 技术支持到实际执行  2025 年是 RISC-V 从准备就绪转向实际应用的一年。这段历程实属不易。多年前始于早期架构探索与技术支持的工作,如今已成熟落地为真实的芯片、系统与部署应用。特别是,RVA23 提供了一个稳定且可预期的基准,我们能够与更广泛的合作伙伴生态系统保持一致。  在 Canonical,我们致力于让 RISC-V 成为所有希望采用它的用户的可行选择。我们审慎采取措施,与生态系统及合作伙伴保持一致,成为值得信赖的软件合作伙伴,让 RISC-V 实用、可扩展且具备生产就绪能力。 我们的目标是提供一个稳定、可预期、生产级的 Linux 平台,让芯片厂商、原始设备制造商、原始设计制造商和开发者能够放心地在此基础上进行开发。  接下 […]

8.8 万亿美元的成本优势:开源软件如何降低 IT 成本

众所周知,开源软件可降低 IT 成本。但在 2025 年,高性价比只是其价值的一部分。Linux Foundation 最新报告《开源技术的战略演进》显示,开源技术已从一项战术性的成本节约举措,发展成为支撑企业级投资的关键任务基础设施,并由此为企业带来更优异的业务成果。 这一转型的背后有学术研究佐证:研究估算,若没有开源技术,企业开发支撑业务运转的软件所需成本将增加约 3.5 倍,额外支出高达 8.8 万亿美元。[1]  开源技术:从“免费替代方案” 到核心基础设施 Linux Foundation 2025 年开源生态现状调查显示,开源技术已深度融入企业技术栈的各个层面,成为全球 IT 运营的核心基石。事实上,在受分析的技术栈中,超 55% 采用了基于 Linux 的操 […]