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

4.6 KiB
Raw Permalink Blame History

任务13DEB包构建器

任务描述

实现Debian/Ubuntu系统的DEB安装包构建器负责生成Linux平台的DEB安装包。DEB包构建器将处理DEB文件的生成、控制文件创建、文件和目录结构组织等功能确保生成的DEB安装包符合Debian包管理标准。

实现步骤

  1. 创建DEB包构建器

    • internal/builder/package/deb包中创建builder.go文件
    • 定义DEBBuilder结构体实现PackageBuilder接口
      type DEBBuilder struct {
          tempDir         string
          platformAdapter platform.PlatformAdapter
          resourceMgr     resource.ResourceManager
          logger          log.Logger
          dpkgPath        string // dpkg工具路径
          fakeroot        string // fakeroot工具路径
      }
      
    • 实现构造函数:
      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相关功能