从XDG正式支持如意玲珑(Linyaps)看如意玲珑的发展与架构演进

在 Linux 桌面世界,有一套奠定一切互操作性基础的 "通用语言"------ 由 freedesktop.org 组织制定并维护的 XDG 规范。

XDG 是 Linux 解决生态碎片化、建立统一资源访问规范的关键标准。无论是应用开发者还是发行版维护者,要让自己的产品在现代 Linux 桌面上运行良好,就必须遵循 XDG 标准。它是 Linux 桌面从 "各自为战" 走向 "统一协同" 的关键基石。

从桌面图标、应用菜单到系统通知、文件选择,XDG 规范渗透在用户体验的每一个环节。它让不同发行版和不同桌面环境能够协同工作,从根本上遏制了生态碎片化。可以说,任何希望融入全球 Linux 主流生态的应用技术,都必须获得 XDG 标准的认可与支持。

近日,XDG 已正式将 "如意玲珑 (Linyaps)" 应用格式纳入其原生支持体系!

此次纳入不仅是技术上的对接,更是国际开源社区对玲珑技术路线与生态价值的正式认可,标志着如意玲珑正在成为 Linux 应用分发与沙箱化领域的主流力量之一!

如意玲珑是⼀种新型的独⽴包管理⼯具集旨在解决Linux系统下传统软件包格式因复杂依赖关系导致的兼容性问题,以及权限管控松散带来的安全⻛险。通过容器化技术提供应⽤隔离运⾏环境,⽀持应⽤增量更新,从⽽提升软件包管理的效率和安全性。

本⽂主要讲述如意玲珑的发展与架构的演进 ,这包括以下⼏个⽅⾯:

Linux软件包管理器的演进;

如意玲珑架构设计

如意玲珑使⽤场景;

如意玲珑关键组件设计;

如意玲珑性能测试与对⽐;

如意玲珑的发展成果;

如意玲珑未来展望。

Linux软件包管理器的演进

Linux操作系统以其开源特性和灵活性著称,⽽软件包管理器是确保Linux系统能够顺利安装和运⾏所需软件的关键组件。

顾名思义,Linux 软件包管理器是⼀种在 Linux 操作系统上⽤于安装、更新和卸载软件包的⼯具。 它的历 史可以追溯到上世纪 90 年代,此时 Linux 正处于起步阶段,软件的安装必须⼿动下载源代码并编译,这对⾮技术⽤户来说是⼀项繁琐且困难的任务。

这种情况下,先后催⽣了 dpkg 和 rpm ,然⽽由于不能⾃动解决依赖关系,其使⽤起来依旧不便。

直到 Debian 的 apt、Red Hat 的 up2date 的发布,包管理器可⽤性有了很⼤的提升。它们采⽤了⼀种被称为 "依赖关系解决器" 的算法,能够⾃动解决软件包之间的依赖关系,从⽽简化软件的安装和升级过程。但这也在另⼀⽅⾯⼤⼤增加了系统复杂度,维护者们需要⾮常谨慎⼩⼼地处理,稍有不慎就会陷⼊"依赖地狱",导致软件包系统发⽣故障。

此外,还有许多其他的软件包管理器,如 yum、portage 和 pacman 等。包管理器的多样性给⽤户带来了更多选择,但缺点也⼗分显著: 它们的软件包⽆法互通,这意味着⼀款软件要在其他发⾏版上使⽤ ,可能需要被重复打包。

随着Linux内核对容器的⽀持、Docker的诞⽣,Snap、Flatpak 等⼀批容器思想的包管理器也开始崭露头角。这类格式的软件包与系统环境⼏乎完全解耦,不再依赖系统上的库⽂件(AppImage 也是如此),应⽤分发开始逐步变得简单起来。但磁盘、 内存占⽤较⾼,启动时间被不断延⻓等问题也随之⽽来,⾄今仍未被解决。

如意玲珑架构设计

如意玲珑的核⼼设计原则是兼容和安全 ,主要为了解决以下问题:

  1. 解决Snap、Flatpak包管理器应⽤体积过度膨胀 ,Runtime乱⽤导致占⽤过度膨胀、应⽤打开速度过慢 的问题;

  2. 解决应⽤安装时权限过⼤问题 ,严格规范应⽤权限;

  3. 解决应⽤运⾏依赖问题。
    基于以上设计原则 ,整体架构如下图所⽰:

如意玲珑整体采⽤分层设计 ,最底层是硬件平台 ,⽀持不同的CPU架构 ,上层是系统平台也就是各个 Linux发⾏版操作系统。

再上层是运⾏环境 ,这⼀层就是我们单独抽离出的runtime , 当前是选取桌⾯应⽤最常⽤的库和依赖包,这样应⽤只需要依赖这个统⼀的稳定的runtime ,⽆需考虑下层的系统平台 ,⽽不在runtime⾥的独有的依赖可以直接打包在应⽤包⾥⾯ ,⽽且runtime也会持续演进 ,演进的原则是兼容性第⼀ ,即在不影响兼容 性的前提下会持续修复缺陷和修复安全漏洞 ,⽽因为新的功能属性的要求导致需要更新⼤版本⽆法保障 兼容性时 ,会新增runtime ,新旧runtime共存互不⼲扰 ,且我们采⽤⽂件共享的⽅式来减少多个runtime对磁盘资源的占⽤ 。

再上层就是玲珑的主要组件 ,包括虚拟化容器、命令⾏接⼝ 、包仓库、⽤户会话辅助服务等组件 ,提供 包管理相关的能⼒ ,⽀持软件包的下载、安装、更新、卸载、运⾏与托管等功能。⽽在最上层 ,还为软 件开发者提供了便捷的包构建⼯具和转换⼯具 ,以及提供了应⽤商店供软件开发者分发应⽤ ,供⽤户下载安装应⽤ 。

如意玲珑使⽤场景

解决兼容性冲突问题. 现在企业的应⽤与系统、应⽤与应⽤之间需要完成适配、测试确保⽆兼容性冲突 ,⼀旦应⽤升级或系统或系统升级都有可能导致系统或应⽤⽆法使⽤ ,需要重新适配、测试 ,耗时耗⼒ ,严重影响企业办公和业务运转。

如意玲珑应⽤使⽤隔离技术 ,将系统和应⽤完全解耦 ,客户可随意升级系统或应⽤ 。⼤幅提⾼了易 ⽤性 ,降低了企业维护成本。

解决恶意软件可能窃取数据问题

恶意软件可通过多种渠道窃取企业核⼼业务数据 ,若被不法分⼦加以利⽤ ,可能会导致企业数据安全⾯临巨⼤风险 ,甚⾄遭受巨额损失。

如意玲珑提供沙箱让应⽤运⾏在隔离的环境下 ,对设备和数据的访问需要得到授权 ,从⽽保护了企业数据安全和个⼈隐私。

解决应⽤⽣态适配碎⽚化问题

传统包管理器在Linux下打包流程复杂 ,开发者需要为不同发⾏版分别打包DEB/RPM等格式 ,甚⾄同⼀发 ⾏版的不同版本也需要单独打包。各包管理器之间的软件包互不兼容 ,导致Linux应⽤⽣态碎⽚化严重。

如意玲珑通过提供统⼀的打包格式和⼯具 ,简化了软件打包流程 ,开发者只需关注应⽤本⾝ ,⽆需考虑 底层系统的差异 ,从⽽降低了打包难度 ,提⾼了开发效率。

如意玲珑通过提供统⼀的应⽤商店 ,⽤户可以⽅便地浏览、搜索和安装应⽤ ,提升了⽤户体验 ,促进了应⽤⽣态的发展。

如意玲珑关键组件设计

ll-cli:如意玲珑命令⾏管理⼯具

提供⽤户与如意玲珑包管理器交互的命令⾏⼯具。负责解析⽤户命令、调⽤ D-Bus ⽅法、处理⽤户交互 请求以及与 OCI 运⾏时直接交互(如 run, exec, ps, kill等)。ll-cli⽀持丰富的⼦命令和选项 ,例如 install(安装 包)、uninstall(卸载包)、upgrade(更新包)、search (搜索包)、list(列出包)、run (运⾏应⽤)、exec(在容器内执⾏ 命令)、ps(列出运⾏中容器)、kill(发送信号给容器)、prune(清理⽆⽤运⾏时)、repo(管理仓库配置)、info(显 ⽰包信息)、content(列出包导出⽂件)。为了提升⽤户体验 ,ll-cli提供 bash 和 zsh 的⾃动补全功能 ,通过⾃⾝命令动态获取补全列表。
ll-package-manager:如意玲珑包管理⼯具

如意玲珑包管理器模块主要为ll-cli提供DBus接⼝调⽤ ,它提供ll-cli的任务管理 ,并负责和ostree仓库进⾏交 互 ,最后将结果返回给ll-cli。完整流程图如下:
ll-box:如意玲珑沙箱

如意玲珑沙箱主要负责应⽤的隔离运⾏环境 ,基于OCI规范实现。ll-box负责创建、启动、停⽌和销毁容器 ,并管理容器的⽣命周期。它还负责配置容器的资源限制、 ⽹络设置和⽂件系统挂载等参数 ,以确保 应⽤在隔离的环境中安全运⾏。 完整流程如下:

如意玲珑性能测试与对⽐

⽬前主流的软件包管理体系有两类 ,⼀类是传统的包管理体系(例如debian、redhat的包管理体系),另⼀ 类是已有独⽴包格式(例如Flatpak、snap)。两种软件包管理体系各有优势 ,但前者有兼容性和安全的隐患 ,后者有性能和资源占⽤的问题 ,⾄今没有得到解决。玲珑在实现软件包管理的同时 ,更关注企业场景中的实际需求 ,在解决兼容性和安全问题的同时提⾼性能 ,降低资源占⽤ 。以下是对⽐表:

如意玲珑的发展成果

如意玲珑⾃项⽬启动以来 ,已经取得了显著的发展成果:

⼴泛的应⽤⽀持:如意玲珑已⽀持5200余款常⽤桌⾯和终端应⽤ ,涵盖办公、开发、设计等多个领域 ,满⾜⽤户的多样化需求。

多架构⽀持:如意玲珑⽀持x86_64、arm64、龙芯LoongArch64等多种CPU架构 ,确保在不同硬件平台 上都能顺利运⾏。

多Linux发⾏版⽀持:如意玲珑兼容主流Linux发⾏版 ,包括Debian、Ubuntu、Fedora等 ,确保⽤户在不 同系统环境下都能享受如意玲珑带来的便利。

活跃的社区和⽣态系统:如意玲珑拥有⼀个活跃的开发者社区和多个SIG组 ,定期举办线上线下活 动 ,促进开发者之间的交流与合作。 同时 ,越来越多的软件开发者选择将他们的应⽤打包为如意玲珑格式 ,进⼀步丰富了应⽤⽣态。

对如意玲珑未来展望

扩展应⽤⽣态:进⼀步增加对更多应⽤的⽀持 ,特别是热⻔的开发⼯具和设计软件 ,以满⾜⽤户的多样化需求。

更好的兼容性:通过灵活的配置⽅式、更好的 xdg-desktop-portal 协议⽀持 ,以提升如意玲珑与不同 Linux发⾏版和桌⾯环境的兼容性 ,确保⽤户在各种环境下都能顺利使⽤如意玲珑。. 优化性能:持续优化如意玲珑的性能 ,提升应⽤启动速度和运⾏效率 ,为⽤户提供更流畅的体验。

加强社区建设:通过举办更多的开发者活动和培训 ,吸引更多的开发者参与到如意玲珑的⽣态中,共同推动项⽬的发展。

探索新技术:关注前沿技术的发展 ,探索将其应⽤到如意玲珑中的可能性 ,以保持项⽬的创新性和竞争⼒。

相关推荐
landonVM2 小时前
Linux 下的高效压缩工具 Zstandard
linux·运维·服务器
EmbedLinX2 小时前
Linux之内存管理
linux·服务器·c语言·c++
番茄灭世神2 小时前
Linux从入门到进阶第一章
linux·计算机·操作系统
Nightwish52 小时前
Linux随记(二十八)
linux·运维·服务器
Zach_yuan2 小时前
Socket 编程基础
linux·服务器
陌上花开缓缓归以2 小时前
Linux 5.4内核版本内核宏梳理
linux·网络·github
Madison-No72 小时前
【Linux】文件操作&&重定向原理
android·linux·运维
若风的雨3 小时前
安全与验证模块设计方案
linux·安全
Eiceblue3 小时前
.NET框架下Windows、Linux、Mac环境C#打印PDF全指南
linux·windows·.net