有人曾问小编道:如意玲珑(Linyaps)主要是希望解决什么问题?
小编答曰:为了促进 Linux 生态发展呀!
那个人抬杠:Linux 虽然发展得一般,但是生态一直很繁荣啊(笑而不语)
确实繁荣,不信你看,光软件包格式就有:deb、rpm、Flatpak、Snap、AppImage……
国际惯例,打不过就加入!于是有了我们的如意玲珑 (Linyaps)!如意玲珑全新加入了:
(1)layer格式(联网安装包)以及 (2)uab格式(离线运行包)
如意玲珑的加入当然不是为了让 Linux 生态更“繁荣”,而是为了给 Linux 生态带来一个真正高效的解决方案。
传统 Linux 软件包管理器的问题
1、deb、rpm 都属于强依赖型的包管理系统,同时允许各个组件之间有复杂的交叉依赖(或循环依赖)关系。这使得维护包管理系统需要极强的专业知识,稍有不慎,就会导致系统彻底故障,无法修复。
2、安装依赖和运行依赖耦合,多版本共存困难。rpm 和 deb虽然提供了方案来解决多版本共存的问题,但是这些方案要求源码级别的改动,不具备实施的可行性。
3、Hook 系统设计复杂,没有限制,可以通过 Hook 系统做很多破坏系统的操作。
4、可靠性不足,没有冗余的恢复设计,缺乏校验机制。一旦包管理系统故障,系统基本没有修复的可能性。
5、deb、rpm权限管控松散,可能允许恶意软件或未经授权的用户访问敏感数据,有较大的安全风险。
6、当前包更新不支持增量更新,对资源有较大浪费。
那说到这里,你们又会说:
Flatpak、Snap 和 AppImage 也能解决部分以上所提到的问题,那如意玲珑的优势到底是什么呢?
总结就是:人无我有,人有我优!细节请看:
特性 | 如意玲珑 | Flatpak | Snap | AppImage |
打包桌面应用 | ✔ | ✔ | ✔ | ✔ |
打包终端应用 | ✔ | ✔ | ✔ | ✔ |
处理服务器应用 | ✔ | ✘ | ✔ | ✘ |
打包系统服务(root 权限) | ✘ | ✘ | ✔ | ✘ |
主题功能正常 | ✔ | ✔ | ✔ | ✔ |
提供库托管服务 | ✔ | ✘ | ✘ | ✘ |
商业支持 | ✔ | ✘ | ✔ | ✘ |
容器支持 | ✔ | ✔ | ✔ | ◐ (官方不提供,技术上可行) |
rootless 容器 | ✔ | ✔ | ✘ | ✘ |
不安装运行 | ✔ (提供 Bundle 模式) | ✘ | ✘ | ✔ |
不解压运行 | ✔ (提供 Bundle 模式) | ✘ | ✔ | ✔ |
自分发/绿色格式分发 | ◐ (技术可行,但是系统做限制) | ✘ | ✘ | ✔ |
支持 Wine 应用运行 | ◐ (适配中) | ◐ (理论可行 | ◐ (理论可行) | ◐ (使用 LD 修改 open 调用,兼容性差) |
离线环境支持 | ✔ | ✔ | ✔ | ✔ |
权限管理 | ✔ | ✔ | ✔ | ✘ |
多版本共存 | ✔ | ✔ | ✔ | ✔ |
点对点分发 | ✔ | ✔ | ✔ | ✔ |
应用升级 | 仓库升级 | 仓库升级 | 仓库升级 | 官方工具升级 |
如意玲珑主要针对 Linux 软件包管理体系常见的问题,针对性的改进升级了以下这些内容:
- 提升易用性,解决 deb、rpm依赖冲突问题
- 加强安全防护,实现了应用权限管理机制
- 包自身携带库/依赖来源、宿主系统及SDK
- 提供 Bundle 模式,支持不安装、不解压运行
- 支持应用增量更新
- 支持处理服务器应用
- 提供库托管服务
并在持续迭代中……
如意玲珑,更高效地适应不同开发场景
如意玲珑通过统一发布和调用系统已有的运行时(Runtime),在解决应用体积膨胀、启动速度慢以及权限管理问题方面进行了特别的优化。与 Flatpak 和 Snap 相比,如意玲珑对磁盘空间的需求大幅减少,同时启动速度也更快。
与传统的包管理体系(例如 Debian 和 Red Hat 的包管理体系)相比,如意玲珑应用需要在独立的沙盒环境中运行。通过限制应用与系统的交互、优化权限管理,大幅地提高了应用安全性。
此外,如意玲珑独有的离线包格式 uab 提供了 Bundle 模式,支持不安装、不解压即可运行软件。
在开发效率层面,如意玲珑还办了件与众不同的大事:如意玲珑开发了独有的应用转制工具:ll-pica,支持将其他格式包快速“玲珑化”。
在如意玲珑最新发布的 1.6.3版本中,ll-pica上线了两个全新的转制工具:
1)ll-appimage-convert
2)ll-pica-flatpak
截止目前,ll-pica 现已支持deb、appimage 和 flatpak 格式应用快速转制。
● 工具由 linglong-pica 提供,支持生成构建玲珑应用需要的 linglong.yaml 文件,并依赖 ll-builder 来将 appimage 或 flatpak 包构建及导出为玲珑格式(layer 或 uab)。
● 转换工具只是辅助工具,并不能保证被转换的应用一定能运行,可能软件本身依赖库的安装路径或其他配置路径与玲珑内部路径不统一,导致无法运行,需要使用 ll-builder run --exec bash 命令进入容器调试
● 具体的应用转换教程可以访问 如意玲珑社区官网 www.linglong.space / 文档中心查看
● ll-pica主要依赖玲珑和 golang,目前仅在 deepin 23 上兼容适配,其他发行版理论上可用,欢迎自行探索
如意玲珑(Linyaps)v 1.6.3 更新说明:
当前如意玲珑新版本 1.6.3 仅限 deepin 23 内测用户可获取,需要更新系统至最新版本(该版本其他发行版暂未正式推送)。
加入 deepin 内测:系统控制中心-更新-更新设置-加入内测通道。
或通过 deepin 应用商店安装“玲珑转制工具”即可使用最新版本 ll-pica。
参考如下:
科普时间 如意玲珑应用构建的“产物” :
layer 文件:联网安装包格式。layer 文件分为 binary 和 develop,binary 包含应用的运行环境,develop 在 binary 的基础上保留调试环境。
uab 文件:离线运行包格式,适用于无法正常连接到玲珑仓库的系统。若可以正常联网,应当使用玲珑软件仓库提供的增量传输方案以减少网络传输体积。
linglong.yaml:是玲珑项目工程的描述文件,记录构建所需的相关信息,如构建产物的名称、版本、源码地址、构建依赖等。
相关阅读:
(1)International Rankings for deepin
内容来源:deepin(深度)社区
转载请注明出处