ワンクリックで
deb-analysis
解析Debian软件包(.deb)文件,提取元数据信息并解压文件内容, 为后续玲珑打包工程生成提供基础数据。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
解析Debian软件包(.deb)文件,提取元数据信息并解压文件内容, 为后续玲珑打包工程生成提供基础数据。
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
| 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 中的"常见错误警告"章节,避免模板路径和变量遗漏问题。
根据deb包信息和CSV配置,生成完整的玲珑打包工程,包括 linglong.yaml 配置文件和 pak_linyaps.sh 打包脚本。
將 Linux binary release tar 歸檔包轉換為玲瓏(Linglong)應用便捷打包腳本。
从deb包解压后的目录中提取应用资源文件(desktop文件、图标、appdata、补全脚本等), 按照玲珑打包规范整理到 files_res/ 目录结构中。
执行玲珑打包构建测试,验证生成的工程是否可以正常构建, 并运行兼容性检测确保应用能在玲珑环境中正常运行。
根据验证报告自动修复玲珑构建项目中的问题, 包括linglong.yaml格式、desktop文件、图标目录结构、二进制文件权限等。
验证玲珑打包项目目录结构和必要文件的完整性。支持通过JSON配置文件自定义检查规则, 包括目录存在性、文件存在性、通配符匹配数量、脚本可执行权限等。