这是一个用Python编写的工具,可以将AppImage应用程序转换为DEB或RPM包格式,方便在Linux系统上进行包管理和分发。
- 🔄 支持将AppImage转换为DEB包
- 🔄 支持将AppImage转换为RPM包
- 📦 自动提取AppImage内容和元数据
- 🎯 生成符合标准的包结构
- ⚙️ 支持自定义包配置
- 📋 命令行界面,易于使用
- 🧹 自动清理临时文件
- Python 3.7+
- Linux操作系统
# Ubuntu/Debian
sudo apt-get install squashfs-tools dpkg-dev
# 或者最小安装
sudo apt-get install squashfs-tools dpkg-deb# CentOS/RHEL/Fedora
sudo yum install squashfs-tools rpm-build
# 或
sudo dnf install squashfs-tools rpm-build- 克隆或下载项目文件
- 确保安装了必要的系统工具(见上方依赖工具)
- 可选:安装Python依赖(目前主要使用标准库)
# 如果需要额外功能,可以安装可选依赖
pip install -r requirements.txt# 转换为DEB包
python main.py app.AppImage
# 转换为RPM包
python main.py app.AppImage --format rpm
# 同时生成DEB和RPM包
python main.py app.AppImage --format both
# 指定输出目录
python main.py app.AppImage --output ./packages/# 自定义包信息
python main.py app.AppImage \
--format deb \
--maintainer "Your Name <email@example.com>" \
--homepage "https://example.com"
# 使用配置文件
python main.py app.AppImage --config config.json
# 详细输出和保留临时文件(调试用)
python main.py app.AppImage --verbose --keep-temp创建一个config.json文件:
{
"maintainer": "Your Name <email@example.com>",
"license": "GPL-3.0",
"homepage": "https://example.com",
"deb": {
"section": "graphics",
"priority": "optional",
"depends": ["libgtk-3-0", "libqt5core5a"],
"requires": []
},
"rpm": {
"section": "Applications/Graphics",
"depends": [],
"requires": ["glibc", "qt5-qtbase"]
},
"architecture": "amd64"
}说明:
deb与rpm为两个独立的子配置对象,各自包含section(分类,DEB 的 Section 字段 / RPM 的 Group 字段)、depends(依赖)与requires(需求)等字段,分别作用于 DEB 包与 RPM 包的构建,可配置不同的值。
位置参数:
appimage 要转换的AppImage文件路径
可选参数:
-h, --help 显示帮助信息
--version 显示版本信息
-f, --format {deb,rpm,both}
输出包格式 (默认: deb)
-o, --output OUTPUT 输出目录路径 (默认: ./output)
-c, --config CONFIG 配置文件路径 (JSON格式)
-v, --verbose 显示详细输出
--keep-temp 保留临时文件 (用于调试)
包配置选项:
-m, --maintainer MAINTAINER
维护者信息 (格式: "姓名 <邮箱>")
--license LICENSE 软件许可证
--homepage HOMEPAGE 项目主页URL
--architecture ARCH 目标架构 (如: amd64, x86_64)
appimage2deb-converter/
├── core/ # 核心模块
│ ├── appimage.py # AppImage处理
│ └── package_builder.py # 包构建器基类
├── local_deb/ # DEB包构建(本地实现,避免调用系统库)
│ └── deb_builder.py
├── local_rpm/ # RPM包构建(本地实现,避免调用系统库)
│ └── rpm_builder.py
├── utils/ # 工具模块
│ ├── command_executor.py
│ └── file_operations.py
├── cli.py # 命令行界面
├── main.py # 主程序入口
├── requirements.txt # Python依赖
└── README.md # 说明文档
- 提取AppImage: 使用
unsquashfs工具提取AppImage内容到临时目录 - 解析元数据: 从
.desktop文件和其他源获取应用程序信息 - 构建包结构: 创建符合DEB/RPM标准的目录结构
- 复制文件: 将应用程序文件复制到适当位置
- 生成元数据: 创建
control文件(DEB)或.spec文件(RPM) - 构建包: 使用
dpkg-deb或rpmbuild生成最终包文件 - 清理: 删除临时文件
- 确保AppImage文件具有可执行权限
- 某些AppImage可能需要特定的运行时依赖
- 生成的包可能需要根据目标系统调整依赖关系
- 建议在目标系统上测试生成的包
-
"缺少必要工具: unsquashfs"
sudo apt-get install squashfs-tools
-
"需要dpkg-deb工具来构建DEB包"
sudo apt-get install dpkg-dev
-
"需要rpmbuild工具来构建RPM包"
sudo yum install rpm-build
- 使用
--verbose选项查看详细输出 - 使用
--keep-temp选项保留临时文件进行检查 - 检查生成的包内容:
# DEB包 dpkg -c package.deb # RPM包 rpm -qlp package.rpm
本项目采用MIT许可证。详见LICENSE文件。
欢迎提交问题报告和功能请求!如果您想贡献代码,请:
- Fork本项目
- 创建功能分支
- 提交更改
- 发起Pull Request
- 初始版本
- 支持AppImage转DEB包
- 支持AppImage转RPM包
- 命令行界面
- 配置文件支持