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。
订阅博客文章
查看更多内容
什么是「应用安全」 — Application Security “AppSec” ?
网络安全领域已然迎来重大变革。如今,网络攻击、恶意软件和勒索软件等风险日益蔓延,加之新出台的网络安全法规以及针对数据泄露和数据外泄的高额罚款所带来的压力与日俱增,强化应用安全(AppSec)已毫无妥协可言。 在本文中,我们将探讨如何直面这些挑战,通过聚焦安全态势中最基本的要素,确保业务和系统安全。笔者将介绍应用安全(AppSec)的概念及其益处,探讨企业应如何设计和实现应用安全,并分享我们团队的一些实用建议和最佳实践,帮助您筑牢安全防线。 什么是 AppSec ? 应用安全(简称 AppSec)是一个广义概念,涵盖了企业组织为保护其应用程序在整个生命周期内免遭各种安全漏洞而采用的所有工具、举措与流程。应用安全的目标只有一个,就是找出应用程序和系统中可能会被恶意攻击者利用, […]
互联汽车软件开发:Anbox Cloud 为安全护航
当下,Android Automotive 操作系统(AAOS)是各大汽车制造商打造车载信息娱乐系统的首选。AAOS 是一个功能完备的信息娱乐平台,支持各类应用程序、功能和服务,其使用体验与人们熟悉的 Android 手机大同小异。 AAOS 可助力开发者构建出提升驾驶体验的新应用和新功能,促使兼容应用与服务生态系统迅速壮大。 然而遗憾的是,开发强大稳健的信息娱乐系统并非易事,前方的道路漫长且充满挑战。硬件可用性、物流配送以及系统配置等方面都存在挑战。例如,对硬件的依赖常常会导致测试中出现问题和延误。不仅如此,许多硬件变体也与开发者的测试环境存在差异,这使得搭建具有代表性的测试台变得十分困难。 云原生方案就是解决物理硬件问题的有力办法:其无需进行实物运输、搬运或安装,就能 […]
利用开源机器学习基础架构加速 AI 发展
人工智能技术在迅速发展,对稳健强大且可扩展的基础架构具有迫切需求。为应对这些挑战,我们精心打造了一套全面的参考架构(RA),充分利用了开源工具与尖端硬件的强大功能与性能。这套架构基于 Canonical 的 MicroK8s 和 Charmed Kubeflow 构建,运行于 Dell PowerEdge R7525 服务器之上,并借助NVIDIA NIM 微服务实现加速,为部署和管理机器学习工作负载提供了一个简便高效的途径。 为数据科学家与工程师赋能 该解决方案旨在为数据科学家和机器学习工程师赋能,使其能够实现更快迭代、无缝扩展以及强有力的安全保障。对于基础架构构建者、解决方案架构师、DevOps 工程师以及首席技术官(CTO)而言,这套参考架构提供了一条畅通无阻的途径 […]