On this page
How to get the build parameters of a packageUser GuideRun locallyll-killer command descriptionContribution GuidelinesTechnology stackThis article is reproduced from community contributor System233 and the project linglong-killer-self-service , Original link>>>
Linglong Killer Self-Service (ll-killer Linyaps killer)
In the past few days, I have been studying how to break through the limitations of Linyaps and eradicate Linyaps packaging problems. I believe that anyone who has tried to package a Linyaps application has been frustrated by the path restrictions and dependency library issues of the Linyaps container, which is quite frustrating. These problems are huge obstacles to the development of Linyaps ecology. In order to solve these difficulties, ll-killer was born.
ll-killer is a new tool designed to solve common problems when building applications in a container environment. It does not require root permissions and can bypass path restrictions within the container and completely reshape the container path. Supports mounting the container file system as writable during build, and then installing and collecting dependencies through apt; supports restoring the file system during build at runtime, and supports re-entry of the environment (the re-entry environment will not inherit the environment variables at the time of re-entry).
In order to further reduce the cost of use, I wrote it as a Github Action workflow. Users only need to post in the issue area according to the template format, and the system will automatically start packaging based on the content of the post, and reply with packaging results and download links. In the simplest case, only the deb package name is required.
Features
- One-click packaging : Break through container limitations, directly apt install dependencies, and automatically extract file system differences, eliminating the need to manually handle dependencies.
- Autonorm icon : Automatically correct the absolute path icon in the desktop.
- Automatic build : Just submit a GitHub Issue according to the template, and the system will automatically build it.
- Flexible configuration : Support custom build parameters, such as APT sources and dependent packages.
How to use
- Submit build request :
- Access Linglong Killer Self-Service GitHub page 。
- Fill in the build parameters, such as package name, version, etc.
- Automatic build : After submission, the build will start automatically, and a download link will be provided after the build is completed.
Example:
Build GIMP by submitting:
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
After the build is successful, the download link will be returned to facilitate you to obtain the built package.
Except for the Package and APT-Sources fields, which are important, other fields are optional. If not filled in, the system will automatically extract them from the apt repository.
Build effects
- GIMP image processing software
[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 system)
[self-build] cn.wps.wps-office-pro · Issue #3 · System233/linglong-killer-self-service
How to get the build parameters of a package
Using the command in a normal Deepin or UOS system apt show "deb包名" , such as obtaining curl package information
$ `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.
You can see that the package comes from APT-Sources: https://mirrors.tuna.tsinghua.edu.cn/deepin/beige beige/main amd64 Packages and Version and other information.
The build parameters are basically the same as this APT output and appear to be ordinary KEY: VAL In the form of key-value pairs, the only thing to note is that in multi-line fields, the beginning of the line must be a space.
In addition, please specify the [trusted=yes] parameter to ignore the signature when declaring the APT source to avoid build failures caused by repository signatures.
User Guide
1. Submit build request
on GitHub Issue Initiate a new Issue in the district, select the self-service construction template, and fill in the content in the following format:
Package: 软件包名称
Name: 应用显示名称(可选)
Version: 软件版本号(可选,默认最新)
Base: 构建基础环境(可选)
Runtime: 构建 Runtime 环境(可选,不建议使用)
Depends: 依赖包列表(可选)
APT-Sources: sources.list 格式的 APT 仓库定义,请使用 [trusted=yes] 忽略签名,支持多个源(可选,支持多行)
Description: 软件描述信息(可选,支持多行)
- Just provide
PackageandAPT-Sources, other fields will be automatically generated by the system. - For multi-line content, ensure there are normal spaces at the beginning of the line.
- can be obtained by running
apt-cache show "deb包名"to view package details. - If you need to adjust the build parameters, please edit the issue directly and save it.
2. Build parameter description
The following is a detailed description of each field in the template:
| field | Is it necessary | Description |
|---|---|---|
| Package | Yes | deb Package name, must exist in the APT repository. |
| Name | No | The display name of the application, defaults to the package name. |
| Version | No | deb Package version number, default is the latest version. |
| Base | No | Linyaps container Base, default is org.deepin.base/23.1.0。 |
| Runtime | No | Linyaps container runtime, this option is generally not recommended. |
| Depends | No | A list of optional dependencies for the software package, separated by commas or spaces, including the dependencies of optional plug-ins. |
| APT-Sources | No | APT software source address used in the build process, supports multiple sources, please use [trusted=yes] Ignore signatures. |
| Description | No | Software package description information supports multi-line content, and there must be a normal space at the beginning of the line. |
2.1 Known Base examples
| Base name | Target application environment |
|---|---|
org.deepin.base/23.1.0 | Deepin V23 |
org.deepin.foundation/20.0.0 | Deepin V20 |
org.deepin.foundation/23.0.0 | Deepin V23 |
com.uniontech.foundation/20.0.1 | UOS |
2.2 Examples of known APT sources
- Deepin V23
deb [trusted=yes] https://mirrors.tuna.tsinghua.edu.cn/deepin/beige beige main commercial community - Deepin V23 Store
deb [trusted=yes] https://com-store-packages.uniontech.com/appstorev23 beige appstore - Deepin V20
deb [trusted=yes] https://mirrors.tuna.tsinghua.edu.cn/deepin/apricot apricot main contrib non-free - UOS Store
deb [trusted=yes] https://pro-store-packages.uniontech.com/appstore eagle-pro appstore
2.3 Sample application configuration:
3. Build process
- After submitting the Issue, the system will automatically trigger the build process.
- After the build is completed, the system will reply with the download link and build log of the software package in the corresponding Issue.
4. Precautions
- The Package field must be provided: Please make sure
Packageis a valid deb package name and exists in the specified APT repository. - Binary Compatibility: Please make sure
BaseCompatible with specified deb packages, specificallylibc, if not compatible, please adjustBaseis the appropriate version. - Follow template format: All fields must be filled in according to the template format, otherwise the build may fail.
- Dependency fields: If
DependsIf the field is not filled in, the system will automatically detect it as much as possible, but in some cases the user may need to fill it in manually.
5. Security restrictions
For security reasons, custom build scripts cannot be run on the build server. Please run custom build scripts locally [TODO: Tutorial not yet written].
Run locally
ll-killer can be run locally, but has only been tested working in the project root directory, not other working directories.
Operation steps
- Create a new one in the working directory
package.infofile, fill in the above project build parameters. - Run
./ll-killer generate package.infocommand, generatelinglong.yaml - Run
./ll-killer build-and-checkcommand, automatically build the project once or twice during the process, and automatically complete missing dependencies
Project Debugging
Passed ll-builder run The command enters the container and automatically executes the configuration configured in linglong.yaml entrypoint.sh Entry command and enter the container environment after reshaping the file system,
The content in $PREFIX will ignore the Linyaps container restrictions and be directly superimposed into the Linyaps container root directory. At this time, you can use shell commands to check the mapped file layout in the container.
Using custom build scripts
You can create a new shell script and replace the build instructions in linglong.yaml as follows
./ll-killer -- <你的构建脚本> #你可以在脚本中以root身份写入任意目录 ./ll-killer install #复制收集到的文件更改到$PREFIX ./ll-killer setup #修复share中的符号链接、快捷方式和桌面图标
ll-killer command description
用法: ll-killer mode [...args]
模式说明:
build-and-check 构建并自动补全依赖
ldd-check <output> 检查动态库依赖并记录日志
运行前必须至少使用ll-builder build构建一次项目
ldd-search <input> [found] [missing] 搜索动态库依赖
主机上必须安装apt-file
输出到 ldd-missing.log 和 ldd-found.log。
local [...args] 切换到隔离的APT环境。
generate <package.info> 生成linglong.yaml脚本。
shell 执行交互式 shell。
* 显示本帮助信息。
ll-builder build 构建模式容器内模式:
root 切换到 root 模式,全局可写。
build 执行安装和构建脚本。
dpkg-install 使用 dpkg 安装模式安装sources目录下的deb。
extract 使用 dpkg 解压模式安装sources目录下的deb。
clean 清理搜集的依赖文件和目录。
copy 拷贝收集的依赖到$PREFIX。
install 清理并拷贝文件(clean + copy)。
setup 配置应用的快捷方式和图标文件。
dev 切换到隔离环境。
-- 切换到默认的 root 模式。
ll-killer 内部模式,除非你知道是什么,否则不要使用:
mount 挂载 FUSE 和根文件系统,准备合并目录。
pivot_root 切换根文件系统到合并目录,并执行 shell。
local-env 配置本地 APT 环境,绑定相关目录,更新包信息。
dev-host 配置开发主机环境,并切换根文件系统。
示例:
ll-killer generate package.info 通过package.info生成linglong.yaml
ll-killer build-and-check 构建并自动补全依赖
ll-killer ldd-check ldd-check.log 检查容器内是否有缺失依赖,输出缺失文件名到ldd-check.log
ll-killer ldd-search ldd-check.log ldd-found.log ldd-missing.log
搜索ldd-check.log中的依赖
ll-killer -- bash 在容器内切换到root模式
Contribution Guidelines
Welcome to contribute code or suggestions to the project! You can participate in the following ways:
- Submit a Pull Request to fix bugs or add new features.
- Submit an Issue with your suggestions for improvements.
- Provide more template samples to improve system compatibility.
Technology stack
- GitHub Actions: for implementing automated workflows.
- BASH: Implement core logic and script processing at build time.
- Go: Implement core logic and script processing at runtime.
- YAML: Configure workflow files for GitHub Actions.
Special thanks ChatGPT Helps in writing project documents, providing concise and clear instructions and technical support, making the content of the document more complete.
Interested friends can go to Original post of this article or Project GitHub repository Communicate and discuss with project authors.
English edition: Linglong editorial · 18 October 2026. Original publication: 2025-01-18.