[Application sharing] 玲珑杀手:玲珑应用自助打包系统,放下hack,立地成佛
Tofloor
default avatar
System233
deepin
2025-01-18 14:35
Author

Linglong Killer Self-Service (ll-killer 玲珑杀手)

这几天研究了下如何突破玲珑限制,根除玲珑打包问题。相信任何一个尝试过打包玲珑应用的人都曾被玲珑容器的路径限制和依赖库问题弄得焦头烂额,相当令人抓狂。这些问题是玲珑生态的发展的巨大阻碍,为了解决这些困难,ll-killer就此诞生。

ll-killer是一个新工具,旨在解决容器环境下构建应用时的常见问题。它不需要 root 权限,能够绕过容器内的路径限制,完全重塑容器路径。在构建时支持将容器文件系统挂载为可写,再通过apt安装和收集依赖;在运行时支持恢复构建时的文件系统,并支持环境的重入(重入环境尚不会继承重入时的环境变量)。

为了进一步降低使用成本,我将其编写为了一个Github Action工作流,用户只需在issue区按照模板格式发帖,系统即会自动根据帖子内容开始打包,并回复打包结果和下载链接,最简情况下只需提供deb包名。

特点

  • 一键打包:突破容器限制,直接apt安装依赖,并自动提取文件系统差异,无需再手动处理依赖。
  • 自动规范图标:自动更正desktop内的绝对路径图标。
  • 自动构建:只需要根据模板提交 GitHub Issue,系统会自动进行构建。
  • 灵活配置:支持自定义构建参数,如APT源和依赖包。

使用方法

  1. 提交构建请求
  2. 自动构建: 提交后,构建会自动开始,构建完成后提供下载链接。

示例:

提交以下内容即可构建 GIMP:

Package: gimp Version: 2.10.38-1deepin2 Depends: librsvg2-common APT-Sources: deb [trusted=yes] https://mirrors.tuna.tsinghua.edu.cn/deepin/beige beige main commercial community Description: GNU Image Manipulation Program

构建成功后,会返回下载链接,方便你获取构建好的包。

除了Package和APT-Sources字段比较重要,其他字段都是可选的,不填写的情况下由系统自动从apt仓库提取。

构建效果

  • GIMP 图像处理软件

[self-build] GIMP · Issue #1 · System233/linglong-killer-self-service

  • WPS Office

[self-build] cn.wps.wps-office · Issue #2 · System233/linglong-killer-self-service

  • WPS Office Prc(V20系统)

[self-build] cn.wps.wps-office-pro · Issue #3 · System233/linglong-killer-self-service

如何获取包的构建参数

在正常的Deepin或UOS系统中使用命令 apt show "deb包名",如获取curl包的信息

$ `apt show "curl" Package: curl Version: 8.11.0-0deepin1 Priority: optional Section: web Maintainer: Debian Curl Maintainers <team+curl@tracker.debian.org> Installed-Size: 482 kB Depends: libc6 (>= 2.38), libcurl3-gnutls (= 8.11.0-0deepin1), zlib1g (>= 1:1.1.4) Homepage: https://curl.se/ Download-Size: 255 kB APT-Sources: https://mirrors.tuna.tsinghua.edu.cn/deepin/beige beige/main amd64 Packages Description: command line tool for transferring data with URL syntax curl is a command line tool for transferring data with URL syntax, supporting DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, TELNET and TFTP. . curl supports SSL certificates, HTTP POST, HTTP PUT, FTP uploading, HTTP form based upload, proxies, cookies, user+password authentication (Basic, Digest, NTLM, Negotiate, kerberos...), file transfer resume, proxy tunneling and a busload of other useful tricks.

可以看到包来自 APT-Sources: https://mirrors.tuna.tsinghua.edu.cn/deepin/beige beige/main amd64 Packages 以及Version等信息。

构建参数与此APT输出基本相同,看起来是普通的 KEY: VAL键值对形式,唯一要注意的是多行字段中,行首必须是空格。

此外,在声明APT源时请指定[trusted=yes]参数忽略签名,避免因仓库签名引起的构建失败。

总结

以上是关于ll-killer的简要介绍,如有问题欢迎讨论。

Reply Favorite View the author
All Replies
2 / 2
To page
小图巴巴
deepin
2025-02-06 07:57
#21

applaud

太牛了

Reply View the author
‌量子巡游者
deepin
2025-02-06 10:07
#22

后期会出个 GUI 图形化工具嘛?

like

Reply View the author
神末shenmo
deepin
Spark-App
2025-02-07 04:23
#23
鲜衣怒马

仰望大佬!

是现在允许直接用玲珑包内库override runtime库了吗?还是killer把库塞opt里改环境变量

Reply View the author
鲜衣怒马
deepin
2025-02-08 01:32
#24
神末shenmo

是现在允许直接用玲珑包内库override runtime库了吗?还是killer把库塞opt里改环境变量

@错人了

Reply View the author
玄圭SwenGway
deepin
2025-02-09 04:01
#25

真不戳

Reply View the author
雪空子
deepin
2025-02-10 09:17
#26

希望官方收录,整合到生态工具里边,统一玲珑产出标准,解决大家的问题

Reply View the author
System233
deepin
2025-03-05 16:47
#27
神末shenmo

是现在允许直接用玲珑包内库override runtime库了吗?还是killer把库塞opt里改环境变量

这个是通过killer实现的,本质上是重新实现了一个容器,最新版本的killer甚至可以绕过玲珑启动玲珑的base。

Reply View the author
System233
deepin
2025-03-05 16:52
#28
雪空子

希望官方收录,整合到生态工具里边,统一玲珑产出标准,解决大家的问题

官方有自己的考量(不引入overlay),在2.0版本之前应该都不会支持这个功能。

目前已经看到玲珑参考ll-killer在build阶段也引入了fuse-overlayfs,但这只能算实现了一半,run阶段不引入类似机制的话还是有问题,而killer就是把这两个都做了。

如果完全引入killer的功能,那么就可以发布玲珑2.0了applaud

Reply View the author
System233
deepin
2025-03-05 16:55
#29
‌量子巡游者

后期会出个 GUI 图形化工具嘛?

like

开发GUI工具需要较大精力,同时出现问题时还需要用户有故障排除能力,因此暂时没有计划。

Reply View the author
神末shenmo
deepin
Spark-App
2025-03-06 04:04
#30
System233

这个是通过killer实现的,本质上是重新实现了一个容器,最新版本的killer甚至可以绕过玲珑启动玲珑的base。

有趣,能否详谈一下原理?

在ll-box中利用第三方容器来直接启动?

Reply View the author
System233
deepin
2025-03-06 07:45
#31
神末shenmo

有趣,能否详谈一下原理?

在ll-box中利用第三方容器来直接启动?

Reply View the author
2 / 2
To page
New Thread

Popular Ranking

Change

Popular Events

More
国际排名
WHLUG