ScreenLockDetector/PACKAGING_README.md

334 lines
6.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Qt Screen Lock Demo - DEB 打包总览
本文档提供 DEB 打包的快速入门指南。
## 📦 快速开始
### 一键打包
```bash
# 赋予执行权限(首次运行)
chmod +x make_deb.sh
# 运行打包
./make_deb.sh
```
打包完成后DEB 文件位于:`deb_package/screenlockdemo_1.0.0_amd64.deb`
### 安装测试
```bash
# 安装
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` | 本文档 - 快速参考 |
---
## 🔧 环境要求
### 必需工具
1. **linuxdeployqt** - 依赖收集工具
- 路径:`$HOME/dev/sunvpack-py/bin/linuxdeployqt`
- 作用:自动收集 Qt 和所有依赖库
2. **Qt 5.15.2** - Qt 框架
- 路径:`$HOME/sdk/qt-5.15.2`
- 提供Qt 库、插件、工具
3. **dpkg-dev** - DEB 打包工具
```bash
sudo apt-get install dpkg-dev debhelper
```
### 验证环境
```bash
# 检查 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快速打包测试
```bash
./make_deb.sh
sudo dpkg -i deb_package/screenlockdemo_1.0.0_amd64.deb
screenlockdemo
```
### 场景 2发布版本
```bash
# 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调试打包问题
```bash
# 使用详细版脚本
./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 未找到
```bash
# 检查路径
ls $HOME/dev/sunvpack-py/bin/linuxdeployqt
# 如果路径不同,修改脚本中的 LINUXDEPLOYQT 变量
```
### 问题Qt 未找到
```bash
# 检查 Qt 目录
ls $HOME/sdk/qt-5.15.2
# 如果路径不同,修改脚本中的 QT_DIR 变量
```
### 问题:程序无法启动
```bash
# 查看错误信息
/opt/screenlockdemo/bin/ScreenLockDemo
# 检查库依赖
ldd /opt/screenlockdemo/bin/ScreenLockDemo
# 安装缺失的系统库
sudo apt-get install libgl1 libx11-6 libxcb-xinerama0
```
### 问题:桌面图标不显示
```bash
# 更新图标缓存
sudo gtk-update-icon-cache -f /usr/share/icons/hicolor
# 更新桌面数据库
sudo update-desktop-database
```
---
## 🔄 修改版本号
### 在 make_deb.sh 中
```bash
# 第 7 行
VERSION="1.0.0" # 改为新版本,如 "1.0.1"
```
### 在 build_deb.sh 中
```bash
# 第 14 行
VERSION="1.0.0" # 改为新版本,如 "1.0.1"
```
### 在 debian/changelog 中
```bash
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
```
---
## 📞 下一步
1. ✅ 安装测试:`sudo dpkg -i deb_package/screenlockdemo_1.0.0_amd64.deb`
2. ✅ 功能测试:运行 `screenlockdemo`锁屏测试Ctrl+Alt+L
3. ✅ 其他系统测试:在不同 Ubuntu 版本上安装测试
4. ✅ 文档完善:添加真实图标、更新维护者信息
**祝打包顺利!** 🚀