بنقرة واحدة
deb-analysis
解析Debian软件包(.deb)文件,提取元数据信息并解压文件内容, 为后续玲珑打包工程生成提供基础数据。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
解析Debian软件包(.deb)文件,提取元数据信息并解压文件内容, 为后续玲珑打包工程生成提供基础数据。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
根据deb包信息和CSV配置,生成完整的玲珑打包工程,包括 linglong.yaml 配置文件和 pak_linyaps.sh 打包脚本。
將 Linux binary release tar 歸檔包轉換為玲瓏(Linglong)應用便捷打包腳本。
从deb包解压后的目录中提取应用资源文件(desktop文件、图标、appdata、补全脚本等), 按照玲珑打包规范整理到 files_res/ 目录结构中。
执行玲珑打包构建测试,验证生成的工程是否可以正常构建, 并运行兼容性检测确保应用能在玲珑环境中正常运行。
根据验证报告自动修复玲珑构建项目中的问题, 包括linglong.yaml格式、desktop文件、图标目录结构、二进制文件权限等。
验证玲珑打包项目目录结构和必要文件的完整性。支持通过JSON配置文件自定义检查规则, 包括目录存在性、文件存在性、通配符匹配数量、脚本可执行权限等。
| name | deb-analysis |
| description | 解析Debian软件包(.deb)文件,提取元数据信息并解压文件内容, 为后续玲珑打包工程生成提供基础数据。 |
| user-invocable | false |
解析Debian软件包(.deb)文件,提取元数据信息并解压文件内容,为后续玲珑打包工程生成提供基础数据。
使用 batch_init.sh 脚本可以批量创建多个 deb 应用的打包工程:
# CSV 格式批量初始化
./scripts/batch_init.sh tasks.csv --projects_root=./projects
# JSON 格式批量初始化
./scripts/batch_init.sh task.json --projects_root=./projects
# 仅生成项目结构,不执行打包
./scripts/batch_init.sh tasks.csv --dry-run
CSV 格式示例:
包名,架构,版本,下载地址
com.example.app,x86_64,1.0.0,https://example.com/app.deb
JSON 格式示例:
{
"global": {
"projects_root": "./projects"
},
"tasks": [
{
"pkgName": "com.example.app",
"arch": "x86_64",
"orig_version": "1.0.0",
"src_url": "https://example.com/app.deb"
}
]
}
批量初始化会为每个任务创建 CI_ll_<pkgName> 目录,包含:
linglong.yaml - 玲珑打包配置文件pak_linyaps.sh - 自动化打包脚本scripts/ - 辅助脚本目录config/ - 配置文件目录(含白名单配置)templates/files_res/ - 资源文件目录# 检查文件是否存在且为有效deb包
file <deb_file>
# 应输出: Debian binary package (format 2.0)
调用 scripts/deb_to_linglong.py 的 extract_deb_info() 函数:
import sys
sys.path.insert(0, "scripts")
from deb_to_linglong import extract_deb_info
deb_info = extract_deb_info("/path/to/package.deb")
# 返回字典包含:
# - Package: 包名
# - Version: 版本号
# - Architecture: 架构 (amd64/arm64/all)
# - Description: 描述
# - Depends: 依赖列表
或使用命令行:
cd scripts
python3 deb_to_linglong.py <deb_file> --base <base> --extract-dir <extract_dir>
调用 scripts/deb_to_linglong.py 的 extract_deb_archive() 函数:
import sys
sys.path.insert(0, "scripts")
from deb_to_linglong import extract_deb_archive
control_dir, data_dir = extract_deb_archive("/path/to/package.deb", "/tmp/extracted")
# control_dir: 控制信息目录
# data_dir: 数据文件目录 (包含usr/等)
import sys
sys.path.insert(0, "scripts")
from deb_to_linglong import parse_depends
depends = parse_depends("libssl1.1 (>= 1.1.1), libcurl4:amd64, libc6")
# 返回: ["libssl1.1", "libcurl4", "libc6"]
import sys
sys.path.insert(0, "scripts")
from deb_to_linglong import convert_version_to_linglong
ll_version = convert_version_to_linglong("1.85.2-1")
# 返回: "1.85.2.1" (玲珑格式 x.x.x.x)
import sys
sys.path.insert(0, "scripts")
from deb_to_linglong import map_architecture
ll_arch = map_architecture("amd64") # 返回 "x86_64"
ll_arch = map_architecture("arm64") # 返回 "aarch64"
{
"package_name": "com.example.app",
"deb_package": "example-app",
"version": "1.0.0",
"ll_version": "1.0.0.0",
"architecture": "amd64",
"ll_architecture": "x86_64",
"description": "Example Application",
"depends": ["libssl1.1", "libcurl4", "libc6"],
"extract_path": "/tmp/extracted/example-app",
"control_path": "/tmp/extracted/example-app/control",
"data_path": "/tmp/extracted/example-app/data",
"files": {
"desktop_files": ["usr/share/applications/example.desktop"],
"icons": ["usr/share/icons/hicolor/48x48/apps/example.png"],
"binaries": ["usr/bin/example"],
"appdata": ["usr/share/metainfo/example.appdata.xml"]
}
}
| 错误类型 | 处理方式 |
|---|---|
| 文件不存在 | 返回错误,提示用户检查路径 |
| 非deb文件 | 返回错误,提示文件格式不正确 |
| 解压失败 | 检查ar/tar工具是否可用 |
| 元数据缺失 | 使用默认值,记录警告 |
dpkg - 用于解析deb元数据 (dpkg -I)ar - 用于解压deb归档tar - 用于解压control.tar和data.taryaml (PyYAML)deb 包分析完成后,应调用 linglong-project-gen skill 生成玲珑打包工程:
参考: skills/linglong-project-gen/SKILL.md
重要: 生成 pak_linyaps.sh 时,务必遵循 linglong-project-gen skill 中的"常见错误警告"章节,避免模板路径和变量遗漏问题。