installerbuilder/tasks/task13-DEB包构建器.md

156 lines
4.6 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.

# 任务13DEB包构建器
## 任务描述
实现Debian/Ubuntu系统的DEB安装包构建器负责生成Linux平台的DEB安装包。DEB包构建器将处理DEB文件的生成、控制文件创建、文件和目录结构组织等功能确保生成的DEB安装包符合Debian包管理标准。
## 实现步骤
1. 创建DEB包构建器
- 在`internal/builder/package/deb`包中创建`builder.go`文件
- 定义DEBBuilder结构体实现PackageBuilder接口
```go
type DEBBuilder struct {
tempDir string
platformAdapter platform.PlatformAdapter
resourceMgr resource.ResourceManager
logger log.Logger
dpkgPath string // dpkg工具路径
fakeroot string // fakeroot工具路径
}
```
- 实现构造函数:
```go
func NewDEBBuilder(platformAdapter platform.PlatformAdapter, resourceMgr resource.ResourceManager, logger log.Logger) (*DEBBuilder, error) {
tempDir, err := resourceMgr.CreateTempDir("deb-builder")
if err != nil {
return nil, err
}
dpkgPath, err := findDpkgTool()
if err != nil {
return nil, err
}
fakeroot, err := findFakerootTool()
if err != nil {
return nil, err
}
return &DEBBuilder{
tempDir: tempDir,
platformAdapter: platformAdapter,
resourceMgr: resourceMgr,
logger: logger,
dpkgPath: dpkgPath,
fakeroot: fakeroot,
}, nil
}
```
2. 实现工具检测:
- 创建findDpkgTool函数检测dpkg工具安装
- 创建findFakerootTool函数检测fakeroot工具安装
- 处理工具不存在的情况
3. 实现构建方法:
- 实现Build方法构建DEB安装包
- 验证构建目标和配置
- 准备构建环境
- 创建DEB包结构
- 生成控制文件
- 打包DEB文件
- 处理构建结果
4. 实现DEB包结构创建
- 创建createDebStructure方法创建DEB包目录结构
- 创建DEBIAN控制目录
- 组织文件和目录结构
- 设置正确的权限和所有权
5. 实现控制文件生成:
- 创建generateControlFile方法生成控制文件
- 包含包信息、依赖关系、描述等
- 支持自定义字段
- 验证必填字段
6. 实现安装脚本集成:
- 创建preinst、postinst、prerm、postrm脚本
- 集成用户提供的安装前后脚本
- 处理脚本执行权限
- 支持条件执行
7. 实现文件和目录处理:
- 创建处理文件和目录的方法
- 复制文件到正确的位置
- 处理文件权限和所有权
- 支持符号链接创建
8. 实现DEB打包
- 创建buildDebPackage方法打包DEB文件
- 使用dpkg-deb工具创建DEB包
- 处理打包错误
- 验证生成的DEB包
## 单元测试要求
1. 测试工具检测:
- 验证dpkg工具检测功能
- 验证fakeroot工具检测功能
- 测试工具不存在的处理
2. 测试构建方法:
- 验证构建流程
- 测试配置验证
- 测试环境准备
- 测试构建结果处理
3. 测试DEB包结构创建
- 验证目录结构创建
- 测试DEBIAN控制目录
- 测试权限和所有权设置
4. 测试控制文件生成:
- 验证控制文件生成
- 测试包信息和依赖关系
- 测试自定义字段
- 测试必填字段验证
5. 测试安装脚本集成:
- 验证脚本集成功能
- 测试脚本执行权限
- 测试条件执行
6. 测试文件和目录处理:
- 验证文件和目录处理
- 测试文件权限和所有权
- 测试符号链接创建
7. 测试DEB打包
- 验证DEB打包功能
- 测试打包错误处理
- 测试DEB包验证
## 依赖关系
- 依赖任务01项目初始化
- 依赖任务02日志系统实现
- 依赖任务03错误处理框架
- 依赖任务04资源管理器实现
- 依赖任务05配置模型定义
- 依赖任务11Linux平台适配器
- 被任务19默认构建协调器依赖
## 完成标准
1. DEBBuilder实现了所有PackageBuilder接口方法
2. 工具检测功能正常工作
3. 构建方法能够成功生成DEB安装包
4. DEB包结构创建功能正常工作
5. 控制文件生成功能正常工作
6. 安装脚本集成功能正常工作
7. 文件和目录处理功能正常工作
8. DEB打包功能正常工作
9. 所有单元测试通过
10. 代码符合项目的Go语言开发规范
11. 生成的DEB安装包符合Debian包管理标准
12. 支持所有需求文档中的DEB相关功能