installerbuilder/tasks/task11-Linux平台适配器.md

4.7 KiB
Raw Blame History

任务11Linux平台适配器

任务描述

实现Linux平台的适配器处理Linux特定的操作和逻辑。Linux平台适配器将实现平台适配接口为Linux平台提供特定的功能实现确保安装包构建过程能够正确处理Linux平台的特性。

实现步骤

  1. 创建Linux平台适配器

    • internal/platform/linux包中创建adapter.go文件
    • 定义LinuxAdapter结构体实现PlatformAdapter接口
      type LinuxAdapter struct {
          info     platform.PlatformInfo
          logger   log.Logger
          resource resource.ResourceManager
          arch     string
          distro   string // Linux发行版
      }
      
    • 实现构造函数:
      func NewLinuxAdapter(arch string, logger log.Logger, resource resource.ResourceManager) *LinuxAdapter {
          return &LinuxAdapter{
              info: platform.PlatformInfo{
                  Name:            platform.PlatformLinux,
                  Arch:            arch,
                  DefaultInstallDir: "/usr/local",
                  PathSeparator:   "/",
                  ExecutableExt:   "",
                  DynamicLibExt:   ".so",
                  StaticLibExt:    ".a",
                  ScriptExt: map[string]string{
                      "shell": ".sh",
                      "python": ".py",
                  },
              },
              logger:   logger,
              resource: resource,
              arch:     arch,
              distro:   detectLinuxDistro(),
          }
      }
      
  2. 实现Linux发行版检测

    • 创建detectLinuxDistro函数检测当前Linux发行版
    • 支持主流发行版Ubuntu、Debian、CentOS、Fedora、RHEL等
    • 处理无法识别的发行版
  3. 实现平台信息方法:

    • 实现GetPlatformInfo方法返回Linux平台信息
    • 根据发行版调整默认安装目录
    • 添加Linux内核版本检测
  4. 实现环境准备和清理:

    • 实现PrepareEnvironment方法准备Linux构建环境
    • 实现CleanupEnvironment方法清理Linux构建环境
    • 处理Linux特定的环境设置
  5. 实现路径处理:

    • 实现NormalizePath方法规范化Linux路径
    • 实现IsPathAbsolute方法判断Linux绝对路径
    • 实现JoinPaths方法连接Linux路径
    • 处理符号链接和挂载点
  6. 实现文件系统操作:

    • 实现GetTempDir方法获取Linux临时目录
    • 实现SetFilePermissions方法设置Linux文件权限
    • 支持POSIX权限模型如0755、0644
  7. 实现环境变量处理:

    • 实现GetOSEnv方法获取Linux环境变量
    • 处理Linux环境变量的大小写敏感特性
    • 支持系统和用户级环境变量
  8. 实现Linux特定功能

    • 添加系统服务操作方法systemd、SysV init
    • 添加包管理器检测apt、yum、dnf等
    • 添加用户和组操作方法
    • 添加文件所有权设置方法

单元测试要求

  1. 测试平台信息:

    • 验证Linux平台信息的正确性
    • 测试不同架构的平台信息
    • 测试不同发行版的平台信息
  2. 测试发行版检测:

    • 验证发行版检测功能
    • 测试各种发行版的检测
    • 测试无法识别发行版的处理
  3. 测试环境准备和清理:

    • 验证环境准备方法
    • 测试环境清理方法
    • 测试异常情况处理
  4. 测试路径处理:

    • 验证路径规范化
    • 测试绝对路径判断
    • 测试路径连接
    • 测试符号链接处理
  5. 测试文件系统操作:

    • 验证临时目录获取
    • 测试文件权限设置
    • 测试POSIX权限模型
  6. 测试环境变量处理:

    • 验证环境变量获取
    • 测试大小写敏感特性
    • 测试系统和用户级环境变量
  7. 测试Linux特定功能

    • 验证系统服务操作
    • 测试包管理器检测
    • 测试用户和组操作
    • 测试文件所有权设置

依赖关系

  • 依赖任务01项目初始化
  • 依赖任务02日志系统实现
  • 依赖任务03错误处理框架
  • 依赖任务04资源管理器实现
  • 依赖任务09平台适配接口定义
  • 被任务13DEB包构建器、任务14RPM包构建器和任务15ZIP包构建器依赖

完成标准

  1. LinuxAdapter实现了所有PlatformAdapter接口方法
  2. Linux发行版检测功能正常工作
  3. Linux平台信息正确定义
  4. 环境准备和清理功能正常工作
  5. 路径处理功能正常工作
  6. 文件系统操作功能正常工作
  7. 环境变量处理功能正常工作
  8. Linux特定功能正常工作
  9. 所有单元测试通过
  10. 代码符合项目的Go语言开发规范
  11. 适配器能够处理Linux平台的特性和限制
  12. 支持主流Linux发行版