谢谢您的订阅!
当新的内容发布后您将开始接收邮件。您也可以点击邮件内的链接随时取消订阅。关闭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

订阅博客文章

订阅您感兴趣的主题

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

查看更多内容

NVIDIA Jetson Thor 将支持运行 Ubuntu

Ubuntu 系统即将对 NVIDIA 的 Jetson Thor 系列产品提供官方支持,将与 NVIDIA 继续展开战略合作,共同推动边缘 AI 创新。Canonical 的官方支持将提供优化的 Ubuntu 镜像以及企业级的稳定性与安全性保障。该长期支持及安全更新承诺,可以确保 Ubuntu 系统与 NVIDIA Jetson 系统级模块的组合具备企业级的稳定性与可靠性。 NVIDIA Jetson Thor:一款适用于物理 AI 和机器人技术的强大边缘平台 NVIDIA 近期宣布推出 Jetson AGX Thor 开发人员套件及 Jetson Thor™ 系列模块。NVIDIA Jetson AGX Thor 开发人员套件是一款面向人形机器人技术与物理 AI 应用 […]

通过裸机自动化方案,降低数据中心能源成本

全球各地的数据中心正如雨后春笋般涌现。随着 AI、云服务、流媒体平台和联网设备的快速增长,计算需求持续增长,而数据中心正处于这一切的中心。诚然,数据中心对数字经济至关重要,但其能耗却构成了重大挑战。 遗憾的是,数据中心的大部分能源未能得到有效利用。令人惊讶的是,相当大一部分能源消耗在上电但空闲的物理机上。鉴于自动化和类似 Canonical MAAS(裸机即服务)的工具能带来显著改善,这种情况不仅是资源浪费,更是毫无必要。在本博客中,我们将探讨如何通过智能自动化工具提升数据中心能效,减少电力浪费。 现代数据中心面临的能源挑战 数据中心耗电量巨大的原因显而易见:服务器、冷却系统、网络基础设施,这一系列设备的累积叠加导致耗电巨大。工作负载越强大(例如大规模 AI 训练或视频处 […]

Broadcom 与 Canonical 扩展合作,优化 VMware Cloud Foundation 以适应现代化容器及 AI 工作负载

合作将行业领先的云操作系统与行业首个统一私有云平台结合到一起,加速云原生技术创新 Broadcom Inc.(博通公司,纳斯达克: AVGO)与 Canonical 宣布扩展合作,助力客户以更快、更安全地交付基于现代化容器的应用程序以及 AI 应用程序。此次合作将 Canonical 备受信赖的开源软件与业内首个统一私有云平台 VMware Cloud Foundation 相结合,助力客户加快创新步伐,同时降低成本和风险。 “Broadcom 推出了业内首个面向现代化私有云的统一私有云平台 VCF。Canonical 则是引领了开源创新领域的发展,并且还发行了全球领先的云操作系统 Ubuntu。” Broadcom VMware 云基金会部门产品副总裁 Paul Tur […]