6.7 KiB
6.7 KiB
Qt Screen Lock Demo - DEB 打包总览
本文档提供 DEB 打包的快速入门指南。
📦 快速开始
一键打包
# 赋予执行权限(首次运行)
chmod +x make_deb.sh
# 运行打包
./make_deb.sh
打包完成后,DEB 文件位于:deb_package/screenlockdemo_1.0.0_amd64.deb
安装测试
# 安装
sudo dpkg -i deb_package/screenlockdemo_1.0.0_amd64.deb
# 运行
screenlockdemo
# 卸载
sudo dpkg -r screenlockdemo
📁 打包文件说明
核心脚本
| 文件 | 说明 | 使用场景 |
|---|---|---|
make_deb.sh |
快速打包脚本 | ⭐ 推荐日常使用 |
build_deb.sh |
完整打包脚本 | 需要详细日志和调试 |
create_icon.sh |
图标生成脚本 | 创建应用图标(可选) |
配置文件
| 文件 | 说明 |
|---|---|
screenlockdemo.desktop |
桌面快捷方式配置 |
debian/control |
DEB 包信息 |
debian/copyright |
版权信息 |
debian/changelog |
更新日志 |
debian/rules |
构建规则(Makefile 格式) |
debian/compat |
Debian 兼容性版本 |
文档
| 文件 | 说明 |
|---|---|
DEB_PACKAGE.md |
详细打包文档(460+ 行) |
PACKAGING_README.md |
本文档 - 快速参考 |
🔧 环境要求
必需工具
-
linuxdeployqt - 依赖收集工具
- 路径:
$HOME/dev/sunvpack-py/bin/linuxdeployqt - 作用:自动收集 Qt 和所有依赖库
- 路径:
-
Qt 5.15.2 - Qt 框架
- 路径:
$HOME/sdk/qt-5.15.2 - 提供:Qt 库、插件、工具
- 路径:
-
dpkg-dev - DEB 打包工具
sudo apt-get install dpkg-dev debhelper
验证环境
# 检查 linuxdeployqt
ls -lh $HOME/dev/sunvpack-py/bin/linuxdeployqt
# 检查 Qt
ls -d $HOME/sdk/qt-5.15.2
# 检查 dpkg
dpkg-deb --version
🚀 打包流程
make_deb.sh 流程(推荐)
[1/6] 清理目录
└─ 删除旧的 deb_package/ 目录
[2/6] 编译项目
└─ 运行 ./build.sh(如需要)
[3/6] 创建 AppDir
├─ 复制可执行文件
├─ 复制 desktop 文件
└─ 创建图标占位符
[4/6] 收集依赖 (linuxdeployqt)
├─ 扫描程序依赖
├─ 复制 Qt 库
├─ 复制 Qt 插件
└─ 设置 RPATH
[5/6] 创建 DEB 包结构
├─ /opt/screenlockdemo/ # 程序和库
├─ /usr/bin/ # 命令链接
├─ /usr/share/applications/ # 桌面快捷方式
└─ /DEBIAN/ # 包控制文件
[6/6] 构建 DEB 包
└─ 运行 dpkg-deb --build
build_deb.sh 流程(详细版)
[1/8] 清理之前的打包目录
[2/8] 编译项目
[3/8] 创建 AppDir 结构
[4/8] 使用 linuxdeployqt 收集所有依赖
[5/8] 创建 DEB 包目录结构
[6/8] 创建控制文件
[7/8] 创建安装脚本
[8/8] 构建 DEB 包
📦 DEB 包内容
安装后的文件结构
/opt/screenlockdemo/
├── bin/
│ └── ScreenLockDemo # 主程序
├── lib/
│ ├── libQt5Core.so.5 # Qt 核心库
│ ├── libQt5Gui.so.5 # Qt GUI 库
│ ├── libQt5Widgets.so.5 # Qt Widgets 库
│ ├── libQt5DBus.so.5 # Qt DBus 库
│ └── ... # 其他依赖库
├── plugins/
│ ├── platforms/
│ │ └── libqxcb.so # X11 平台插件
│ ├── imageformats/ # 图像格式插件
│ └── ... # 其他 Qt 插件
└── screenlockdemo.sh # 启动包装脚本
/usr/bin/
└── screenlockdemo → /opt/screenlockdemo/screenlockdemo.sh
/usr/share/applications/
└── screenlockdemo.desktop # 桌面快捷方式
/usr/share/icons/hicolor/256x256/apps/
└── screenlockdemo.png # 应用图标
包大小估算
- 典型大小:50-80 MB
- 包含:Qt 5.15.2 的所有必需库和插件
- 优点:无需系统安装 Qt,避免依赖冲突
🎯 使用场景
场景 1:快速打包测试
./make_deb.sh
sudo dpkg -i deb_package/screenlockdemo_1.0.0_amd64.deb
screenlockdemo
场景 2:发布版本
# 1. 更新版本号
vim make_deb.sh # 修改 VERSION="1.0.1"
# 2. 创建图标(可选)
./create_icon.sh
# 3. 完整打包
./build_deb.sh
# 4. 测试安装
sudo dpkg -i package/screenlockdemo_1.0.1_amd64.deb
# 5. 验证功能
screenlockdemo
场景 3:调试打包问题
# 使用详细版脚本
./build_deb.sh
# 查看 AppDir 内容
ls -lR package/AppDir/
# 查看 DEB 包内容
dpkg -c package/screenlockdemo_1.0.0_amd64.deb
# 查看包信息
dpkg -I package/screenlockdemo_1.0.0_amd64.deb
⚠️ 常见问题速查
问题:linuxdeployqt 未找到
# 检查路径
ls $HOME/dev/sunvpack-py/bin/linuxdeployqt
# 如果路径不同,修改脚本中的 LINUXDEPLOYQT 变量
问题:Qt 未找到
# 检查 Qt 目录
ls $HOME/sdk/qt-5.15.2
# 如果路径不同,修改脚本中的 QT_DIR 变量
问题:程序无法启动
# 查看错误信息
/opt/screenlockdemo/bin/ScreenLockDemo
# 检查库依赖
ldd /opt/screenlockdemo/bin/ScreenLockDemo
# 安装缺失的系统库
sudo apt-get install libgl1 libx11-6 libxcb-xinerama0
问题:桌面图标不显示
# 更新图标缓存
sudo gtk-update-icon-cache -f /usr/share/icons/hicolor
# 更新桌面数据库
sudo update-desktop-database
🔄 修改版本号
在 make_deb.sh 中
# 第 7 行
VERSION="1.0.0" # 改为新版本,如 "1.0.1"
在 build_deb.sh 中
# 第 14 行
VERSION="1.0.0" # 改为新版本,如 "1.0.1"
在 debian/changelog 中
screenlockdemo (1.0.1-1) unstable; urgency=low
* 更新内容描述
-- 维护者 <email@example.com> Mon, 15 Jan 2024 12:00:00 +0800
📚 更多信息
- 详细文档:查看
DEB_PACKAGE.md(460+ 行完整指南) - 项目文档:查看
README.md - 架构说明:查看
ARCHITECTURE.md
🎉 成功标志
打包成功后,你应该看到:
=========================================
✓ 打包成功!
=========================================
包文件: deb_package/screenlockdemo_1.0.0_amd64.deb
大小: 52M
安装: sudo dpkg -i deb_package/screenlockdemo_1.0.0_amd64.deb
卸载: sudo dpkg -r screenlockdemo
📞 下一步
- ✅ 安装测试:
sudo dpkg -i deb_package/screenlockdemo_1.0.0_amd64.deb - ✅ 功能测试:运行
screenlockdemo,锁屏测试(Ctrl+Alt+L) - ✅ 其他系统测试:在不同 Ubuntu 版本上安装测试
- ✅ 文档完善:添加真实图标、更新维护者信息
祝打包顺利! 🚀