Move deb related doc and test file into pkg/DEB

[GitHub #207]
This commit is contained in:
Aoran Zeng
2025-06-15 11:26:33 +08:00
parent 7c7408e4b8
commit eb808c49a5
4 changed files with 25 additions and 25 deletions

77
pkg/DEB/INSTALL.md Normal file
View File

@@ -0,0 +1,77 @@
# DEB Package Installation
## Installing from Release
1. Download the appropriate DEB package from the [releases page](https://github.com/RubyMetric/chsrc/releases)
2. Install using dpkg:
```bash
sudo dpkg -i chsrc_*.deb
sudo apt-get install -f # Fix any dependency issues
```
## Building from Source
### Prerequisites
Install the required build dependencies:
```bash
sudo apt-get update
sudo apt-get install build-essential debhelper devscripts fakeroot
```
### Building the Package
1. Clone the repository:
```bash
git clone https://github.com/RubyMetric/chsrc.git
cd chsrc
```
2. Build the DEB package:
```bash
make deb-build
```
3. Install the generated package:
```bash
sudo dpkg -i ../chsrc_*.deb
```
### Cross-compilation
To build for different architectures:
```bash
# For ARM64
CC=aarch64-linux-gnu-gcc dpkg-buildpackage -us -uc -b -aarm64
# For ARMv7 (armhf)
CC=arm-linux-gnueabihf-gcc dpkg-buildpackage -us -uc -b -aarmhf
```
### Cleaning Build Artifacts
```bash
make deb-clean
```
## Package Information
- **Package Name**: chsrc
- **Architecture**: amd64, arm64, armhf
- **Dependencies**: Standard C library
- **Installation Path**: `/usr/bin/chsrc`
- **Manual Page**: `/usr/share/man/man1/chsrc.1`
## Uninstalling
```bash
sudo apt-get remove chsrc
```
Or completely remove including configuration:
```bash
sudo apt-get purge chsrc
```

101
pkg/DEB/README.md Normal file
View File

@@ -0,0 +1,101 @@
# DEB Package CI/CD 构建
本文档说明了 chsrc 项目的 DEB 包自动构建和发布流程。
## 自动触发
DEB 包构建 CI 会在以下情况下自动触发:
1. **Release 事件**: 当创建新的 release 时自动构建并上传 DEB 包到 release assets
2. **手动触发**: 可以在 GitHub Actions 页面手动触发构建
## 支持的架构
当前支持以下架构的 DEB 包构建:
- `amd64` (x86_64)
## 构建产物
每次构建会生成:
1. **DEB 包文件**: `chsrc_<version>-1_<arch>.deb`
2. **仓库元数据**: `Packages``Packages.gz` 文件用于创建 APT 仓库
## 本地测试
### 构建 DEB 包
```bash
# 准备构建环境
sudo apt-get install build-essential debhelper devscripts fakeroot
# 构建包
make deb-build
# 清理构建产物
make deb-clean
```
### 测试安装
```bash
# 安装生成的包
sudo dpkg -i ../chsrc_*.deb
sudo apt-get install -f # 修复依赖问题
# 运行测试
bash ./pkg/DEB/deb-test.sh
# 卸载
sudo apt-get remove chsrc
```
## 文件结构
```
debian/
├── changelog # 版本更新日志
├── compat # debhelper 兼容性版本
├── control # 包控制信息和依赖
├── copyright # 版权信息
├── postinst # 安装后脚本
├── prerm # 卸载前脚本
└── rules # 构建规则
```
## 手动发布流程
1. 确保所有代码已合并到主分支
2. 更新版本号和 changelog
3. 创建并推送 git tag: `git tag v1.2.3 && git push origin v1.2.3`
4. 在 GitHub 上创建 release
5. CI 将自动构建并上传 DEB 包
## 故障排查
### 常见问题
1. **构建失败**: 检查 debian/control 中的依赖是否正确
2. **交叉编译失败**: 确认目标架构的工具链已正确安装
3. **安装测试失败**: 检查 postinst 脚本是否有错误
### 调试构建
```bash
# 启用详细输出
DEB_BUILD_OPTIONS="nocheck" debuild -us -uc -b
# 检查构建日志
less ../chsrc_*.build
# 检查包内容
dpkg-deb --contents chsrc_*.deb
```
## 相关文件
- `.github/workflows/pkg-deb.yml` - CI 工作流配置
- `debian/` - Debian 包配置目录
- `pkg/DEB/deb-test.sh` - DEB 包功能测试脚本
- `pkg/DEB/INSTALL.md` - 用户安装指南

43
pkg/DEB/deb-test.sh Executable file
View File

@@ -0,0 +1,43 @@
#!/bin/bash
# Test script for DEB package functionality
set -e
echo "Testing chsrc DEB package..."
# Test 1: Check if chsrc binary exists and is executable
if [ ! -f "/usr/bin/chsrc" ]; then
echo "ERROR: chsrc binary not found at /usr/bin/chsrc"
exit 1
fi
if [ ! -x "/usr/bin/chsrc" ]; then
echo "ERROR: chsrc binary is not executable"
exit 1
fi
echo "✓ chsrc binary exists and is executable"
# Test 2: Check if man page exists
if [ ! -f "/usr/share/man/man1/chsrc.1" ]; then
echo "WARNING: chsrc man page not found at /usr/share/man/man1/chsrc.1"
else
echo "✓ chsrc man page exists"
fi
# Test 3: Test basic functionality
echo "Testing basic chsrc functionality..."
if chsrc help >/dev/null 2>&1; then
echo "✓ chsrc help command works"
else
echo "ERROR: chsrc help command failed"
exit 1
fi
if chsrc list >/dev/null 2>&1; then
echo "✓ chsrc list command works"
else
echo "WARNING: chsrc list command failed"
fi
echo "All DEB package tests passed!"