包管理器是 Linux 发行版中用于:
每个发行版都有自己默认或主流支持的包管理器,通常与其“软件包格式(如 .deb、.rpm)”强绑定。
| 包格式 | 包管理器 | 常见系统 | 说明 |
|---|---|---|---|
.deb | dpkg, apt, apt-get | Debian, Ubuntu, Linux Mint | Debian 系列使用 |
.rpm | rpm, yum, dnf, zypper | CentOS, RHEL, Fedora, openSUSE | RedHat 系列使用 |
.apk | apk | Alpine Linux | 轻量、安全,常用于容器 |
.pacman | pacman | Arch Linux, Manjaro | 高速简洁 |
.xbps | xbps-install | Void Linux | 独立发行版 |
.nix | nix-env, nixos-rebuild | NixOS | 全函数式包管理 |
.eopkg | eopkg | Solus | 独立包系统 |
.rpm + .deb 混合 | snap, flatpak, AppImage | 各发行版通用 | 跨发行版通用的容器化包系统 |
以下是检测逻辑(建议在脚本或监控 Agent 中使用):
bash# 依次检测命令是否存在
for pm in apt-get apt yum dnf zypper apk pacman xbps-install nix-env eopkg snap flatpak; do
if command -v $pm >/dev/null 2>&1; then
echo "Detected package manager: $pm"
break
fi
done
或者更精确:读取系统标识文件
bash. /etc/os-release
echo "OS: $ID"
根据 $ID 判断:
ubuntu/debian → aptcentos/rhel → yum/dnffedora → dnfalpine → apkarch → pacmanopensuse → zypper| 类别 | 包管理器 | 安装软件 | 卸载软件 | 更新软件列表 | 升级系统 | 查询软件 | 软件源配置文件 |
|---|---|---|---|---|---|---|---|
| Deb 系 | apt / apt-get | apt install pkg | apt remove pkg | apt update | apt upgrade | apt search pkg / apt show pkg | /etc/apt/sources.list |
dpkg(底层) | dpkg -i pkg.deb | dpkg -r pkg | — | — | dpkg -l | 手动指定 .deb 文件 | |
| RPM 系 | yum(旧版) | yum install pkg | yum remove pkg | yum makecache | yum update | yum info pkg / yum list | /etc/yum.repos.d/*.repo |
dnf(新版) | dnf install pkg | dnf remove pkg | dnf makecache | dnf upgrade | dnf search pkg | /etc/yum.repos.d/*.repo | |
rpm(底层) | rpm -ivh pkg.rpm | rpm -e pkg | — | — | rpm -qa | grep pkg | ||
| SUSE 系 | zypper | zypper install pkg | zypper remove pkg | zypper refresh | zypper update | zypper search pkg | /etc/zypp/repos.d/*.repo |
| Alpine | apk | apk add pkg | apk del pkg | apk update | apk upgrade | apk search pkg | /etc/apk/repositories |
| Arch | pacman | pacman -S pkg | pacman -R pkg | pacman -Sy | pacman -Syu | pacman -Ss pkg | /etc/pacman.conf |
| Void | xbps-install | xbps-install pkg | xbps-remove pkg | xbps-install -Su | xbps-install -u | xbps-query -Rs pkg | /etc/xbps.d/*.conf |
| NixOS | nix-env | nix-env -i pkg | nix-env -e pkg | nix-channel --update | nixos-rebuild switch | nix-env -qa pkg | /etc/nixos/configuration.nix |
| Solus | eopkg | eopkg install pkg | eopkg remove pkg | eopkg update-repo | eopkg upgrade | eopkg search pkg | /etc/eopkg/ |
| 通用 | snap | snap install pkg | snap remove pkg | snap refresh | — | snap list | /var/lib/snapd/snaps/ |
flatpak | flatpak install remote pkg | flatpak uninstall pkg | flatpak update | — | flatpak search pkg | /etc/flatpak/remotes.d/ | |
AppImage | 直接执行 .AppImage 文件 | 删除文件即可 | — | — | — | 无需配置源 |
| 系统名称 | 默认包管理器 | 包格式 | 说明 |
|---|---|---|---|
| Ubuntu / Debian / Mint | apt + dpkg | .deb | Debian 系列 |
| CentOS 7 / RHEL 7 | yum + rpm | .rpm | RedHat 旧版 |
| CentOS 8+ / RHEL 8+ / Fedora | dnf + rpm | .rpm | RedHat 新版 |
| openSUSE / SUSE Linux Enterprise | zypper + rpm | .rpm | SUSE 系列 |
| Alpine Linux | apk | .apk | 极简、常用于 Docker |
| Arch Linux / Manjaro | pacman | .pkg.tar.zst | 滚动更新 |
| Void Linux | xbps-install | .xbps | 独立发行版 |
| NixOS | nix-env | .drv / .nar | 函数式管理 |
| Solus | eopkg | .eopkg | 独立开发 |
| 通用跨平台包系统 | snap, flatpak, AppImage | — | 支持多发行版通用安装 |
bashdetect_pkgmgr() {
if [ -f /etc/os-release ]; then
. /etc/os-release
fi
case "$ID" in
ubuntu|debian)
echo "apt"
;;
centos|rhel)
echo "yum"
;;
fedora)
echo "dnf"
;;
alpine)
echo "apk"
;;
arch)
echo "pacman"
;;
opensuse*|sles)
echo "zypper"
;;
void)
echo "xbps-install"
;;
nixos)
echo "nix-env"
;;
*)
# fallback
for pm in apt yum dnf zypper apk pacman snap flatpak; do
if command -v $pm >/dev/null 2>&1; then
echo "$pm"
return
fi
done
echo "unknown"
;;
esac
}
执行示例:
bashpkgmgr=$(detect_pkgmgr)
echo "当前系统包管理器:$pkgmgr"
| 包管理器 | 优点 | 缺点 |
|---|---|---|
apt | 稳定、依赖处理强、社区大 | 安装速度相对慢 |
yum/dnf | 企业级支持、日志清晰 | 元数据占用大 |
zypper | 依赖解析快、支持 delta 包 | 使用者较少 |
apk | 极简、镜像小、速度快 | 软件仓库少 |
pacman | 超快、命令简洁 | 初学者不熟悉 |
snap | 跨发行版、沙箱隔离 | 启动慢、体积大 |
flatpak | 跨平台 GUI 支持好 | 占用空间大 |
nix | 版本可重现、强隔离 | 学习曲线陡峭 |


本文作者:蒋固金
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!