感谢社区用户@mozixun 投稿,本篇将以 motrix 为例为大家展示如何将 Linux 安装包快速转成玲珑包。
本教程适用于使用 AppImage 或基于 Electron 框架构建等几乎不需要额外依赖的应用。
01前置知识
在开始教程之前,建议大家提前了解 deb/rpm 应用及玲珑容器内的工作流程,这有助于深入理解后续转换过程。

XDG_DATA_DIRS 变量

玲珑应用运行环境 VS deb/rpm 应用运行环境
更多详细理论知识可参考:
一级包管理器和二级包管理器的区别 玲珑内应用运行和直接用deb/rpm安装应用的区别,以及玲珑应用内的调用转发机制 如意玲珑应用构建指南(一):规范体系与配置文件全解析
通过以上基础知识后,我们不难发现,顺利实现玲珑应用的打包聚焦有 3 个关键点:
应用本体 :这是打包的基础,缺少应用本体则无从谈起打包。
XDG_DATA_DIRS 下的快捷方式与图标 :在指定目录设置应用快捷方式和图标,便于用户在系统中快速定位与启动应用。
响应调用能力 :部分应用需具备对文件或网页调用做出响应的功能,以实现与其他应用或系统功能的交互。
02转换教程(以motrix为例)
Step 1下载打包样板并解压到合适目录
首先,我们需要下载打包样板并解压到一个你认为合适的目录,本教程使用安装包如下:
https://gitee.com/LFRon/linyaps-packaging-guide/releases/download/1.1/com.id.linyaps.tar.gz
Step 2解压软件安装包
.deb 解压
dpkg-deb -R.appimage 解压<解压到文件夹>
/xx/app.appimage --appimage-extract
Step 3
将软件本体放置到合适位置 首先进入至解压样板后的文件夹,再进入 linglong/sources。随后将 Step 2 中得到的软件本身(可能在 deb 解压后的/opt/xx 或者 /usr/lib 等位置)直接将文件夹本体替换。
以 motrix 为例,在 linglong/sources 文件夹中解压 motrix.appimage 后得到 squashfs-root 文件夹,将其复制到 linglong/sources 里,取代 your_app 文件夹,并重命名为你想要的文件夹名,如 motrix。


经过上述操作后,linglong/sources 文件夹会成为如下结构。

最后,确定程序的执行文件是哪一个。以 motrix 为例,我们发现并不需要执行 AppRun,直接执行 motrix 二进制文件就可以直接启动。于是,我们就了解了在这个文件夹下启动它的命令是 ./motrix。

Step 4 编辑 linglong.yaml 及 build 文件
4.1 编辑 linglong.yaml 文件
退回到工程目录后,编辑 linglong.yaml 文件,编写方法如下:
id:对标 deb 包 debian/control 文件里的 Package,这是应用唯一的识别符;
name:玲珑商店上显示的应用名字;
description:应用的介绍。

注意,在基础运行环境中,使用的 base(基础环境)必须声明,使用的 Runtime(运行库)可以不加。比如类似 motrix 这样的 Electron 应用,使用 org.deepin.base 作底已经足够,那就可以把 runtime 删了变成如下的样子。

接着,在 Command 命令中,把"com.id.linyaps"字样改成你自己设置的 id 即可。 之所以没有要在 Command 里直接执行,是由于 Command 这一行在玲珑打包识别应用时会自动调整,无需人工干预,打包者只需在 Command 处调整好包名即可。如果需要,可以在自定义脚本中添加其他参数以适应玲珑环境或增加新功能。
4.2 编辑 build 脚本

将脚本中对应应用本体文件夹名称的部分改为你的应用本体文件夹名称。例如,案例中将文件夹名称改为 motrix,就直接在脚本中修改为 motrix。
接下来,根据已知的软件启动方式,修改脚本中的启动命令。对于 motrix,由于其 appimage 安装包设计是进入程序主文件夹后直接执行 motrix,因此将脚本中 "./样本启动文件.sh" 改为直接执行 motrix即可,如下图所示。

若想开启 Electron 的 Wayland 会话,那也可以如下图所示修改(但目前 Electron 的 Wayland 显示协议版并不成熟,不建议使用)。

最终,build 构建脚本应如下所示(以 motrix 为例):

Step 5 加入 desktop 启动快捷方式和应用图标
主要的部分完成后,剩下的就是让应用的快捷方式可以正常运行应用,以及能正常显示图标。
5.1 修改 desktop 文件
首先,从 deb 安装包和 appimage 解压后的文件里找出 .desktop 的快捷方式,将其复制到工作目录 /linglong/sources/share/applications 文件夹。

打开 .desktop 文件,设置关键属性:
Name:设置启动菜单里会显示的应用名字;
Categories:设置应用快捷方所在的文件夹类型 (如图会放在网络应用里);
Exec:设置双击快捷方式后会执行的命令;
Icon:设置图标显示,如果你只如图设置应用名字那么桌面环境就会自动去寻找以该名字(不包括后缀名)对应的图片。
在这里我们主要设置 Exec 和 Icon 两个属性,Exec 只需要填写容器内执行路径,玲珑会自动生成前置路径。

所以我们如下图填写 Exec 路径即可。

图像直接填写成你想要的名字即可(不要填绝对路径),比如我这里填成motrix。

最后保存 desktop 文件即可完成对desktop快捷方式的编辑。
5.2 放置对应应用图标
首先找到你想给应用设置成的图标,注意分辨率不要过高(以 KDE Plasma 为例,最高支持 512x512 像素)。
随后返回工作目录 /linglong/sources/share 并新建文件夹,命令如下:
mkdir -p icons/hicolor/512x512/apps在文件管理器打开效果如下:

将图标重命名为 desktop 文件中设置的 Icon 名称加上后缀(如 motrix.png),然后复制到新建的图标路径中,效果如下:

完成以上步骤,桌面快捷方式和应用图标就设置成功了。如果 AppImage 应用直接提供 usr/share 下的 icons 文件夹,只需确认图标名称,然后将图标复制到对应路径并按设置的名称重命名即可。
Step 6构建和调试应用
返回工作目录(linglong.yaml所在的文件夹),打开终端运行以下命令,开启构建应用。
ll-builder build
运行情况如下所示:

若报错提示缺少 so 二进制库文件,需在 pkgs.org 或 Debian Packages 下载对应安装包,解包后将 so 文件放到工作目录的 linglong/sources/libs 文件夹下,重新执行 ll-builder build,如有需要重复此操作。
·pkgs.org:https://pkgs.org
·Debian Packages:https://www.debian.org/distrib/packages#search_contents
构建完成后,在终端中运行以下命令调试,检查应用是否正常运行。
ll-builder run随后会出现以下界面:

若出现由于 org.deepin.base 缺失 xdg-open 和 systemd-run 导致文件夹内打开和内置浏览器打开异常的问题,可下载以下压缩包,将 bin 和 libs 覆盖原文件夹以解决。
Step 7导出 layer 安装包
由于导出可运行的 uab 文件在除 deepin/UOS 以外的发行版不支持,而且导出的文件体积会巨大(因为包括 Runtime),所以本文只提供导出安装包的教程。 在 ll-builder run 测试通过后,终端运行以下命令导出安装包。
ll-builder export --layer
输出内容示例如下:

导出安装包后的工作区目录如下:

随后安装本地导出的 layer 包即可。 经过检查,桌面图标显示正常,那么一个样板玲珑应用就已经打包成功了。本教程至此结束,希望这个教程能更好地帮助您构建玲珑包!
再次感谢社区用户@mozixun 的分享。如果您在构建过程中遇到了任何问题,或者对我们的教程有任何建议,欢迎随时在deepin 社区论坛与我们交流,参与项目讨论。
关于项目
如意玲珑(Linyaps)是一种新型的独立包管理工具集,专注于解决 Linux 系统下由传统软件包格式的复杂性和交叉依赖关系引起的兼容性问题。项目通过先进的隔离技术,将应用与系统完全解耦,从根本上解决因环境变化引发的应用兼容性问题,实现“一个架构,一次构建”,致力于简化软件开发流程、降低维护成本、加强数据安全,促进技术与平台间的协同合作,构建一个更加繁荣、安全和高效的 Linux 软件生态环境。
全部0条评论
快来发表一下你的评论吧 !