什么是 AUPT?
AUPT(Advanced Unified Package Tool)是一个统一的 Linux 包管理调度工具。它的核心目标是:
统一命令入口 + 自动识别发行版 + 自动选择包管理器
在 Linux 生态中,不同发行版使用不同的包管理器(如 Debian 系的 apt、Arch 系的 pacman、Fedora 的 dnf 等),AUPT 将所有这些差异封装起来,提供一个统一的命令行接口,让用户无需记忆各个发行版特有的包管理命令。
一、核心功能
1.1 基础操作
AUPT 支持最常见的基础包管理操作,命令简洁统一:
aupt install vim # 安装软件包
aupt remove gcc # 卸载软件包
aupt update # 更新软件包索引
aupt upgrade # 升级所有软件包1.2 指定包管理器
当需要强制使用某个特定的包管理器时,可以直接在命令中指定:
aupt apt install nginx # 强制使用 apt
aupt pacman install git # 强制使用 pacman
aupt snap install code # 强制使用 snap1.3 自动包管理器选择策略
当用户不指定包管理器时,AUPT 会按照以下优先级自动选择:
系统原生包管理器(apt / pacman / dnf / zypper)
→ flatpak
→ snap查找流程:
- 先查询系统原生包管理器(如
apt、pacman、dnf、zypper)中是否存在目标包; - 若不存在,则查询
flatpak; - 若仍不存在,则查询
snap。
1.4 版本控制支持
支持指定软件包的安装版本,并自动进行版本解析与 fallback:
aupt install gcc==9
aupt install python@3.10功能要点:
- 支持
==和@两种版本指定语法 - 自动解析版本号
- 目标版本不可用时自动 fallback
1.5 镜像源自动优化
AUPT 提供了便捷的镜像源管理功能:
aupt mirror auto # 自动测速并选择最快镜像
aupt mirror list # 列出可用镜像源
aupt mirror switch tuna # 切换到指定镜像源(如清华 tuna)功能包括:
- 自动测速各镜像源
- 自动选择速度最快的镜像
- 自动修改对应包管理器的源配置文件
- 自动更新软件包索引
1.6 包搜索与信息查询
aupt search redis # 搜索软件包
aupt info nodejs # 查看软件包详细信息1.7 系统诊断功能
aupt doctor该命令用于检测当前系统的包管理环境状态,包括:
- 各包管理器的可用状态
- 网络连通性
- 镜像源状态
二、系统架构
AUPT 采用 分层架构 + 插件架构 设计,保证了良好的可扩展性和可维护性。
目录结构
aupt
├── core/ # 核心调度层
│ ├── dispatcher.py # 命令分发器
│ ├── distro_detector.py # 发行版检测
│ ├── package_resolver.py # 包解析器
│ ├── mirror_manager.py # 镜像源管理
│ └── config_manager.py # 配置管理
│
├── backends/ # 后端适配层
│ ├── base_backend.py # 后端基类
│ ├── apt_backend.py # APT 后端
│ ├── pacman_backend.py # Pacman 后端
│ ├── dnf_backend.py # DNF 后端
│ ├── snap_backend.py # Snap 后端
│ ├── flatpak_backend.py # Flatpak 后端
│ └── zypper_backend.py # Zypper 后端
│
├── cli/ # 命令行接口层
│ ├── parser.py # 参数解析器
│ └── commands.py # 命令入口
│
├── utils/ # 工具模块
│ ├── mirror_speed_test.py # 镜像测速
│ ├── version_parser.py # 版本号解析
│ ├── subprocess_wrapper.py# 子进程封装
│ └── logger.py # 日志模块
│
├── database/ # 数据文件
│ ├── package_alias.json # 包别名映射
│ ├── mirror_list.json # 镜像源列表
│ └── distro_map.json # 发行版映射表
│
├── plugins/ # 插件目录
│
└── main.py # 主入口三、CLI 设计规范
AUPT 的标准命令格式为:
aupt <manager?> <action> <package> [options]完整命令列表
| 命令 | 说明 |
|---|---|
aupt install <pkg> | 安装软件包 |
aupt remove <pkg> | 卸载软件包 |
aupt update | 更新软件包索引 |
aupt upgrade | 升级所有软件包 |
aupt search <pkg> | 搜索软件包 |
aupt info <pkg> | 查看软件包信息 |
aupt mirror auto | 自动优化镜像源 |
aupt mirror list | 列出可用镜像源 |
aupt mirror switch <name> | 切换镜像源 |
aupt doctor | 系统诊断 |
aupt clean | 清理缓存 |
aupt config | 配置管理 |
aupt benchmark | 性能基准测试 |
四、安装与卸载
方式一:使用安装脚本(推荐)
默认执行用户级安装,使用系统自带 python3:
git clone git@github.com:wusi321/aupt.git
cd ~/aupt
chmod +x scripts/install.sh scripts/uninstall.sh
./scripts/install.sh安装完成后,aupt 命令会通过 console_script 机制暴露为全局可执行命令:
aupt doctor
aupt install vim --dry-run方式二:直接使用 pip
cd ~/aupt
python3 -m pip install --user .安装完成后可直接执行:
aupt doctor系统级安装
如果希望所有用户都可直接执行 aupt,可以使用系统级安装:
cd ~/aupt
sudo INSTALL_SCOPE=system ./scripts/install.sh或直接使用 pip:
cd ~/aupt
sudo python3 -m pip install .console_script 说明
项目在 pyproject.toml 中声明了入口点:
[project.scripts]
aupt = "aupt.cli.commands:main"这意味着安装完成后,Python 打包系统会自动生成一个名为 aupt 的启动命令,实际调用入口函数 aupt.cli.commands:main。无需手动创建软链接或编写启动包装器。
卸载
用户级卸载:
cd ~/aupt
./scripts/uninstall.sh系统级卸载:
cd ~/aupt
sudo INSTALL_SCOPE=system ./scripts/uninstall.sh五、APT 后端说明
在 Debian / Ubuntu 系系统上,AUPT 的 apt 后端默认采用更稳定的底层脚本接口:
- 安装 / 卸载 / 更新 / 升级 / 清理 → 使用
apt-get - 搜索 / 信息查询 → 使用
apt-cache
这样可以避免直接使用 apt 命令时常见的脚本接口警告,更适合自动化调用与跨环境运行。
六、PATH 说明
用户级安装通常会把命令安装到:
~/.local/bin如果安装完成后终端提示找不到 aupt 命令,请将以下内容添加到 ~/.bashrc 或 ~/.zshrc:
export PATH="$HOME/.local/bin:$PATH"然后重新打开终端,或执行:
source ~/.bashrc七、总结
AUPT 的核心价值在于 "一次学习,到处使用"。无论你使用哪种 Linux 发行版,都可以通过同一条命令完成包管理操作。它自动识别系统环境、智能选择包管理器,并提供了镜像源优化、版本控制等实用功能,极大降低了 Linux 包管理的使用门槛。


