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

143 lines
4.7 KiB
Markdown
Raw Permalink 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.

# 任务11Linux平台适配器
## 任务描述
实现Linux平台的适配器处理Linux特定的操作和逻辑。Linux平台适配器将实现平台适配接口为Linux平台提供特定的功能实现确保安装包构建过程能够正确处理Linux平台的特性。
## 实现步骤
1. 创建Linux平台适配器
- 在`internal/platform/linux`包中创建`adapter.go`文件
- 定义LinuxAdapter结构体实现PlatformAdapter接口
```go
type LinuxAdapter struct {
info platform.PlatformInfo
logger log.Logger
resource resource.ResourceManager
arch string
distro string // Linux发行版
}
```
- 实现构造函数:
```go
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发行版