国产系统新突破:如意玲珑软件包详解
国产系统新突破:如意玲珑软件包详解
在使用Deepin/UOS系统时,你可能会注意到应用商店新增了一个“玲珑应用”的类别。这种新型的软件包格式——如意玲珑(Linyaps),正在为Linux系统带来革命性的变化。本文将带你深入了解如意玲珑的背景、特点和优势。
1. Linux系统下的软件包管理困境
许多从Windows转向国产Linux系统的用户会困惑:为什么Linux应用程序没有像Windows那样的安装包?在Windows中,只需双击安装程序,通过图形界面安装,即可通过开始菜单或桌面快捷方式运行应用。这种直观的操作流程使得电脑新手也能轻松上手。
其实Linux下有些应用也做成了安装包,比如Qt开发工具,就有安装界面。那为什么Linux应用程序很少做安装包?
对于这个问题,我们做信创软件适配时也尝试过,使用Qt Installer Framework做安装包。但是发给用户,问得最多的问题是:为什么双击没反应?这不得不说一点Windows和Linux的差异,Windows下,文件名后缀为exe和com格式的文件被认为是可执行文件,而Linux下则是通过文件属性来判断的,文件有读、写、执行三种标志位,只有通过命令将文件可执行标志修改过来,才可以执行。所以将包发给用户后,还得告诉用户在命令行修改为可执行文件,想想有多少用户能接受?Linux从Windows借鉴了一些,通过后缀名,比如doc等,调用对应的软件打开,但对于可执行程序的判断,一直维持现状。
这还不算最糟糕的,因为在Linux操作系统发展初期,软件主要以源码发布,用户需要自己编译。那个时候Linux系统主要还是一群极客在使用。而开源被这群极客奉为圭臬。所以那个时候拿到软件的标志步骤是:
tar xvf xxx.tar.gz # 解压软件包
cd xxx
./configure
make
make install
至于图形界面,那是被极客们瞧不上的。
然而,随着Linux系统越来越受欢迎,大批不那么极客的用户开始使用Linux系统。这种源码编译的方式太不友好了,软件越来越复杂,编译越来越耗时,而且环境不同,有可能有编译问题。
为了解决源码编译的复杂性,软件包管理系统应运而生。由于Linux的开放性,很快分裂成两个阵营,分别是deb和rpm:
- DEB格式:由Debian项目开发,使用dpkg和apt管理工具。DEB格式广泛应用于Debian、Ubuntu及其衍生发行版。国产系统统信UOS和麒麟也采用了这种格式。
- RPM格式:由Red Hat开发,使用rpm包管理工具,广泛应用于Red Hat、Fedora、openSUSE等发行版。
这两种包管理系统允许用户直接下载和安装预编译的二进制包,并自动处理依赖关系。这极大地方便了软件的安装和管理,减少了手动编译和依赖解决的负担。
随着互联网的发展,DEB和RPM包管理系统不断改进,引入了功能更强大的依赖管理工具:
- APT:Debian系统中的包管理工具,可以通过网络自动下载并解决依赖问题。
- YUM和DNF:Fedora和Red Hat系统的包管理工具,提供类似的自动依赖管理功能。
这两个包管理系统为Linux社区提供了长期稳定的解决方案,现在依然被包括国产系统在内的Linux系统所采用。
这个时候,国产系统新开发一种软件包格式,是重复造轮子吗?
2. DEB和RPM包的问题
当然不是,这得说一说deb包和rpm包的问题。
首先,不同的发行版有各自的包格式和软件仓库。一个为DEB打包的软件不能直接在RPM系统上使用,反之亦然。应用程序的开发者必须为每个发行版分别打包和发布。
其次,传统的DEB和RPM包都依赖于系统的特定环境,但这容易引起软件依赖冲突。举个简单的例子,应用A依赖Qt 5.12,应用B依赖Qt 5.15,在没安装B之前A可以正常运行,但安装B后,将Qt库的版本升级了,这可能导致A运行出问题。这点和Windows下的“dll地狱问题”有些类似。我之前写过《Deepin V23下EasyConnect VPN问题之解决》,在这个问题上,有一个原因就是包依赖导致的。
deb包和rpm包还有更多的问题,这里直接看看玲珑包做了哪些改进。
- 跨发行版兼容性:玲珑包提供了一个自包含的打包格式,应用程序和其依赖一起打包,理论上可以在任何支持玲珑的Linux发行版上运行,减少了跨发行版的兼容性问题。
- 沙盒化和安全性:现代软件环境需要更高的安全性。传统的包管理系统没有提供沙盒隔离,软件可以随意访问系统的资源。玲珑包提供了沙盒机制,应用程序在一个隔离的环境中运行,限制其对系统资源的访问,从而提升了系统安全性。
- 易于更新与回滚:玲珑包支持增量更新,即只更新应用的变动部分,减少了下载和更新的时间。还支持应用版本的快速回滚,用户可以轻松恢复到先前的版本。
- 减少“依赖地狱”:玲珑应用将所有依赖打包在一起,避免了系统依赖冲突。这种自包含的方式使得应用可以运行在不同版本的系统上,而不需要关心系统库是否匹配。
3. 玲珑包与DEB包的关系
玲珑软件包是为了取代现有的DEB包吗?
并不是。玲珑包并不是为了完全取代DEB,而是为了解决一些DEB无法解决的问题,尤其是在应用程序的跨发行版兼容性、沙盒化和易用性方面。
它们之间是并存与互补的关系。玲玲包主要用于桌面应用程序的分发,特别是需要频繁更新的应用。而DEB包仍然是系统核心组件和应用的首选方式。它们为不同的场景提供了不同的优势。
而且,现有的软件包大多以DEB包格式提供,不可能很快迁移到玲珑包格式上。
4. 与竞品的对比
对于DEB或RPM包的这些问题,其实市场也有一些新的解决方案,比如snap和flatpak,还有类似于Windows下绿色软件的更简单格式:AppImage。那玲珑包相较这些竞品又有哪些优势呢?请看下面的表格。
5. 开放性和兼容性
玲珑包格式的引入,会不会又是国产系统引入的壁垒?
技术架构上,玲珑最大的特点就是支持跨发行版。基于User Namespace、CGroup等机制,玲珑提供了统一的、脱离于操作系统之外的应用程序运行环境,其中主要包括Qt等桌面应用常用的库和依赖,这些运行环境支持多版本共存,从而能实现“一个架构,一次构建”。
目前,如意玲珑项目已正式捐赠给开放原子开源基金会(OpenAtom Foundation),项目已经支持多个发行版本,包括Deepin、统信UOS、欧拉、OpenKylin、麒麟专业版、Ubuntu 24.04、Debian 12。
6. 未来展望
玲珑的引入标志着Linux软件包管理的又一次革新,它解决了传统包管理系统在现代桌面应用分发中的诸多痛点,尤其是在跨发行版兼容性、沙盒化安全环境和依赖简化等方面展现出独特优势。然而,DEB和RPM包仍将在系统级软件和服务器软件的管理中扮演重要角色。玲珑包与传统包管理方式并不是相互取代,而是为不同应用场景提供了更灵活的选择,共同推动国产系统的生态发展。