# APM 代理与助手(AGENTS) 本文档描述了 APM 项目中使用的代理和助手工具,它们用于增强 APM 的功能和用户体验。 ## 1. 核心代理工具 ### 1.1 amber-pm-debug **功能**:用于在 APM 环境中执行命令,提供调试和诊断功能。 **使用场景**: - 执行 apt 相关命令 - 执行 dpkg 相关命令 - 进入调试环境 **示例**: ```bash amber-pm-debug apt update amber-pm-debug dpkg --configure -a ``` ### 1.2 amber-pm-app-launcher **功能**:通过应用启动器启动 APM 软件包。 **使用场景**: - 启动已安装的 APM 应用 - 传递参数给应用 **示例**: ```bash amber-pm-app-launcher firefox amber-pm-app-launcher gedit --new-document ``` ### 1.3 amber-pm-configure-nvidia **功能**:配置 NVIDIA 驱动支持。 **使用场景**: - 自动从主机获取 NVIDIA 驱动文件 - 为 APM 应用提供 GPU 加速支持 **示例**: ```bash amber-pm-configure-nvidia /path/to/ace-env ``` ## 2. 构建与转换工具 ### 2.1 amber-pm-convert **功能**:将普通 Deb 包转换为 APM 软件包。 **使用场景**: - 转换第三方 Deb 包为 APM 格式 - 自定义包名和版本号 **示例**: ```bash amber-pm-convert --base amber-pm-trixie /path/to/package.deb amber-pm-convert --base amber-pm-bookworm-spark-wine /path/to/package.deb --pkgname new-pkg --version 1.0.0 ``` ### 2.2 amber-pm-addons-maker **功能**:创建 APM addons 包,用于在 base 之上叠加额外的环境层。 **使用场景**: - 为 base 环境添加 NVIDIA 驱动、Mesa 补丁 - 为 base 环境添加 Git、Java、Python 等运行时 - 所有基于该 base 的应用自动继承 addons 环境 **示例**: ```bash amber-pm-addons-maker --base amber-pm-bookworm --manual --pkgname amber-pm-bookworm-nvidia-addons amber-pm-addons-maker --base amber-pm-trixie /path/to/mesa-patch.deb --pkgname amber-pm-trixie-mesa-addons ``` **说明**: - addons 包命名格式建议为 `-<描述>-addons` - 安装后自动在对应 base 的 `info_layer_addons.d/` 中注册 - 支持 `--manual` 参数进入交互式创建流程 ### 2.3 amber-pm-dstore-patch **功能**:修补应用商店相关配置。 **使用场景**: - 安装或更新软件包后自动执行 - 确保应用商店配置正确 ### 2.3 amber-pm-desktop-fix **功能**:修复桌面环境相关问题,维护应用程序和图标链接。 **使用场景**: - 安装或移除软件包后自动执行 - 确保桌面环境正常运行 - 自动迁移旧版链接到新目录结构 **说明**: - 银河麒麟系统:链接到 `/usr/share/applications/` - 其他发行版:链接到 `/usr/local/share/applications/apm/` ## 3. 沙箱与安全工具 ### 3.1 APM_USE_SANDBOX **功能**:启用主目录沙箱化。 **使用场景**: - 运行不受信任的应用 - 保护用户主目录 **示例**: ```bash apm sandbox-run firefox ``` ### 3.2 APM_USE_BWRAP **功能**:使用 bwrap 进行额外的隔离。 **使用场景**: - 需要更强隔离性的应用 - 增强安全性 **示例**: ```bash apm bwrap-run firefox ``` ## 4. 本地安装工具 ### 4.1 ssinstall **功能**:使用 ssinstall 进行本地软件安装。 **使用场景**: - 安装本地软件包 - 与 spark-store 集成 **示例**: ```bash apm ssinstall /path/to/package ``` ### 4.2 ssaudit **功能**:使用 ssaudit 进行本地软件安装。 **使用场景**: - 安装本地软件包并进行审计 - 与 spark-store 集成 **示例**: ```bash apm ssaudit /path/to/package ``` ## 5. 环境变量 ### 5.1 APM_PKG_NAME **功能**:指定当前运行的包名。 **使用场景**: - 在脚本中识别当前包 - 为应用提供包信息 ### 5.2 PATH_PREFIX **功能**:指定 APM 基础路径。 **使用场景**: - 自定义 APM 安装位置 - 多环境管理 ## 6. 工作原理 APM 代理和助手工具通过以下方式工作: 1. **环境隔离**:使用 fuse-overlayfs 创建隔离的文件系统环境 2. **命令转发**:将用户命令转发到适当的环境中执行 3. **资源共享**:从主机系统获取必要的资源(如 NVIDIA 驱动) 4. **安全增强**:提供沙箱和隔离机制 5. **用户体验**:简化应用的安装和运行过程 ## 7. 故障排除 ### 7.1 常见问题 - **NVIDIA 驱动问题**:确保主机已安装 NVIDIA 驱动,APM 会自动检测并使用 - **沙箱权限**:确保用户有足够的权限创建和管理沙箱 - **包依赖**:使用 `apm show ` 查看包依赖,确保所有依赖已安装 ### 7.2 调试命令 ```bash # 查看调试信息 apm debug # 检查包状态 amber-pm-debug dpkg -l | grep # 检查 NVIDIA 配置 apm-nvidia-toggle ``` ## 8. 扩展与定制 APM 代理系统设计为可扩展的,您可以: 1. **添加自定义代理**:在 `src/var/lib/apm/apm/files/ace-env/usr/bin/` 目录添加新的代理脚本 2. **修改现有代理**:根据需要调整现有代理的行为 3. **创建自定义基础环境**:使用 `amber-pm-convert` 工具创建基于特定需求的基础环境 通过这些工具和技术,APM 提供了一个灵活、安全、高效的软件包管理系统,适用于各种 Linux 发行版。