查看原文
其他

【假期充电站】深入探索deepin自研包格式——“玲珑”

统信软件 2023-04-14

【编者按】

十一假期来临,我们特别精选了部分统信软件技术趋势和成果,打造了一个假期充电站,以期在欢度佳节的同时,为大家提供一份精神午餐。

---------------------------------

持续创新是一个企业、社区长久发展的保证,统信软件积极探索与攻坚操作系统发展的关键技术,不断向下扎根,向上生长,用创新引领中国操作系统跨越式发展。 


本期假期充电站,带您了解deepin 自研的独立包格式“玲珑” ,一起探索它的创造过程。





玲珑是什么?




玲珑——统信软件自研的开源软件包格式,用于与dpkg、rpm等包管理工具共同实现应用包管理、分发、沙箱、集成开发等功能。 

在deepin 23 Preview阶段,独立创新的包格式到来,将解决linux长久存在的依赖问题和安全问题。同样,它也将成为建立独立上游的基础





玲珑的诞生




“玲珑”的名称从何而来?八宝玲珑塔,蕴含芥子乾坤般的另一个世界,状似七层实非七层,以逞道法之变化。而我们则取“玲珑”二字,融合“隔离”与“分层”思想,推出全新的Linux包格式,将应用运行时的系统环境进行分层管理,并提供沙箱环境,致力于治理Linux系统下复杂、交叉的依赖关系,以及过于松散的权限管控问题。





玲珑的特性




也许你会疑惑:作为独立上游基础的玲珑,它究竟好在哪里?不妨让我们来看这张图!


第一,它将面向任意linux发行版,只需要构建一次,即可运行在任意的linux发行版桌面环境; 

第二,它提供简单小巧的构建工具,方便易用; 

第三,它具备稳定独立的运行环境,提供了稳定兼容的runtime,且应用可自行控制依赖与系统独立; 

第四,它包含安全隔离的沙箱容器,玲珑应用运行在独立的沙箱环境,与宿主机隔离,安全稳定; 

第五,它拥有完善的权限管控机制,致力于保护用户隐私; 

第六,它同时支持应用增量更新。 

总而言之,它提升了易用性及安全性,极大程度保护了使用者的隐私。





传统包管理问题




第一,不同发行版维护成本高。由于deb与rpm这两种包格式完全分割,开发者需要针对不同发行版单独构建和维护包。

第二,兼容性问题难以解决。deb与rpm允许各个包之间有复杂的交叉依赖(或循环依赖)关系。这使得维护包管理系统需要极强的专业知识,稍有不慎, 就会导致系统彻底故障,很难修复。系统升级有概率导致应用依赖关系被破坏,从而引发兼容性问题。

第三,安全性难以把控。传统Linux系统下的包管理更面向系统管理员而非应用开发者和使用者,给予了包更多的对系统的修改权限 ,应用开发者容易在不熟悉系统的情况下埋下较多安全隐患。





选择的解决方案




面对以上传统包管理的问题,业界已经有了一些通用独立包格式的解决方案。它致力于帮助开发者在所有Linux发行版运行同一个版本的应用。

为了实现这个目的,它们会将系统与应用进行隔离,于是封装了一个独立于系统的运行环境,应用不再依赖于操作系统本身提供的运行环境。另外,通用独立包格式也在努力增强安全性,通常它们会使用“沙箱”来将应用与宿主机进行隔离,防止恶意程序携带的病毒感染整个系统。

然而,这些方案也存在一些问题:通用软件包格式为了让应用独立于操作系统,从而封装了依赖到单独的运行环境,势必会造成应用体积变大;且为了保证通用性,需要一个庞大的运行时环境,对磁盘空间占用则会更多。对于应用来说同样存在这个问题,应用需要将部分独有的依赖加入到应用自身,使得软件大小会比传统包格式更大,对于性能也有所损耗。

另外,安全性上也有待加强。比如部分独立包格式的解决方案以root权限启动沙箱,会留下各种提权攻击的隐患,从而可能引发安全问题。





玲珑方案




玲珑,为兼容与安全而生。它致力于治理Linux系统下传统软件包格式依赖关系复杂导致的各种兼容性问题,以及过于松散的权限管控导致的安全风险。

在技术方案的选择上,我们吸取了主流通用独立包格式的优秀思路,将应用/运行时/系统环境进行分层管理,将应用的运行依赖独立出来构建出一个较为通用的runtime,且提供了完善的机制,支持发行版针对runtime进行深度优化,兼顾通用与轻量化,避免过多占用磁盘空间和影响性能。

同时,采用“沙箱”的容器化机制运行应用,将应用与系统进行隔离,减少应用对系统造成破坏的可能性。另外,默认限制“沙箱”的root权限,防止应用运行时可获取过高权限,减少用户数据被损害的风险。

在软件分发方面,玲珑支持增量在线分发,同时也可支持bundle格式进行离线分发。离线分发时,无需安装应用即可双击直接运行,无需卸载应用,直接删除包文件即可,使用非常方便。


新闻来源:产研中心

编辑审校:市场部

往期精彩回顾



【假期充电站】王耀华:deepin为何跨越上游转战Linux Kernel?

2022-10-03

【假期充电站】张磊:中国基础软件的发展趋势

2022-10-02

统信UOS | 喜迎国庆,服务不停!

2022-10-01


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存