[Application sharing] 玲珑杀手:玲珑应用自助打包系统,放下hack,立地成佛
Tofloor
poster avatar
System233
deepin
2025-01-18 22: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 
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 15:57
#21

applaud

太牛了

Reply View the author
‌量子巡游者
deepin
Resources Team Moderator
2025-02-06 18:07
#22

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

like

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

仰望大佬!

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

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

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

@错人了

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

真不戳

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

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

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

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

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

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

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

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

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

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

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

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

like

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

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

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

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

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

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

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

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

Reply View the author
System233
deepin
2025-03-17 07:37
#32
jmjoy

linglong现在能打包wine应用吗?

昨晚测试了打包winegame游xi助手,可以启动wine应用,里面下了个UE4测试软件,能运行,不过虚拟机没显卡,进不去测试画面。

Reply View the author
System233
deepin
2025-03-17 07:42
#33
哄哄

玲珑的包太过臃肿了,感觉还是electron包小

electron毕竟是WEB技术,理论上都不需要electron,浏览器不实现这个纯粹是因为安全问题。

玲珑更多的偏向于appimage等应用分发格式,和electron不是一个方向

Reply View the author
System233
deepin
2025-03-17 07:48
#34
流星追月

把这个打包框架建立在deepseek上,是不是目前的商业软件都可以自动打包?

理论上已经不存在生态问题了,请教!

在最新发布的玲珑杀手Go中已经可以实现各种包的一键apt打包和自动化测试,大部分时候不需要干预,有大模型的话确实可以辅助解决一部分问题,不过开发这个Agent也有大量的技术问题需要解决

Reply View the author
流星追月
deepin
2025-03-17 16:32
#35

好像突然来了一个猛人,开了挂一样,很多基础问题都解决了。

谷歌安卓版形式要在近期形成了:linux内核+deepin自有服务框架和工具,这套构建完,就是中国自有的谷歌安卓2.0版本,威力也是不小的,生产力电脑啊!

Reply View the author
2 / 2
To page