2025-10-26
Linux
00

目录

第一部分 概述
第二部分 常见包管理器分类
第三部分 如何判断当前系统使用的包管理器
第四部分 不同包管理器的用法对照表
第五部分 常用 Linux 发行版与默认包管理器对应表
第六部分 常见判断脚本(推荐用于自动检测)
第七部分 各包管理器优缺点概览

第一部分 概述

包管理器是 Linux 发行版中用于:

  • 安装 / 升级 / 卸载 软件包;
  • 自动解析依赖;
  • 维护软件仓库索引。

每个发行版都有自己默认或主流支持的包管理器,通常与其“软件包格式(如 .deb.rpm)”强绑定。

第二部分 常见包管理器分类

包格式包管理器常见系统说明
.debdpkg, apt, apt-getDebian, Ubuntu, Linux MintDebian 系列使用
.rpmrpm, yum, dnf, zypperCentOS, RHEL, Fedora, openSUSERedHat 系列使用
.apkapkAlpine Linux轻量、安全,常用于容器
.pacmanpacmanArch Linux, Manjaro高速简洁
.xbpsxbps-installVoid Linux独立发行版
.nixnix-env, nixos-rebuildNixOS全函数式包管理
.eopkgeopkgSolus独立包系统
.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/debianapt
  • centos/rhelyum/dnf
  • fedoradnf
  • alpineapk
  • archpacman
  • opensusezypper

第四部分 不同包管理器的用法对照表

类别包管理器安装软件卸载软件更新软件列表升级系统查询软件软件源配置文件
Deb 系apt / apt-getapt install pkgapt remove pkgapt updateapt upgradeapt search pkg / apt show pkg/etc/apt/sources.list
dpkg(底层)dpkg -i pkg.debdpkg -r pkgdpkg -l手动指定 .deb 文件
RPM 系yum(旧版)yum install pkgyum remove pkgyum makecacheyum updateyum info pkg / yum list/etc/yum.repos.d/*.repo
dnf(新版)dnf install pkgdnf remove pkgdnf makecachednf upgradednf search pkg/etc/yum.repos.d/*.repo
rpm(底层)rpm -ivh pkg.rpmrpm -e pkgrpm -qa | grep pkg
SUSE 系zypperzypper install pkgzypper remove pkgzypper refreshzypper updatezypper search pkg/etc/zypp/repos.d/*.repo
Alpineapkapk add pkgapk del pkgapk updateapk upgradeapk search pkg/etc/apk/repositories
Archpacmanpacman -S pkgpacman -R pkgpacman -Sypacman -Syupacman -Ss pkg/etc/pacman.conf
Voidxbps-installxbps-install pkgxbps-remove pkgxbps-install -Suxbps-install -uxbps-query -Rs pkg/etc/xbps.d/*.conf
NixOSnix-envnix-env -i pkgnix-env -e pkgnix-channel --updatenixos-rebuild switchnix-env -qa pkg/etc/nixos/configuration.nix
Soluseopkgeopkg install pkgeopkg remove pkgeopkg update-repoeopkg upgradeeopkg search pkg/etc/eopkg/
通用snapsnap install pkgsnap remove pkgsnap refreshsnap list/var/lib/snapd/snaps/
flatpakflatpak install remote pkgflatpak uninstall pkgflatpak updateflatpak search pkg/etc/flatpak/remotes.d/
AppImage直接执行 .AppImage 文件删除文件即可无需配置源

第五部分 常用 Linux 发行版与默认包管理器对应表

系统名称默认包管理器包格式说明
Ubuntu / Debian / Mintapt + dpkg.debDebian 系列
CentOS 7 / RHEL 7yum + rpm.rpmRedHat 旧版
CentOS 8+ / RHEL 8+ / Fedoradnf + rpm.rpmRedHat 新版
openSUSE / SUSE Linux Enterprisezypper + rpm.rpmSUSE 系列
Alpine Linuxapk.apk极简、常用于 Docker
Arch Linux / Manjaropacman.pkg.tar.zst滚动更新
Void Linuxxbps-install.xbps独立发行版
NixOSnix-env.drv / .nar函数式管理
Soluseopkg.eopkg独立开发
通用跨平台包系统snap, flatpak, AppImage支持多发行版通用安装

第六部分 常见判断脚本(推荐用于自动检测)

bash
detect_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 }

执行示例:

bash
pkgmgr=$(detect_pkgmgr) echo "当前系统包管理器:$pkgmgr"

第七部分 各包管理器优缺点概览

包管理器优点缺点
apt稳定、依赖处理强、社区大安装速度相对慢
yum/dnf企业级支持、日志清晰元数据占用大
zypper依赖解析快、支持 delta 包使用者较少
apk极简、镜像小、速度快软件仓库少
pacman超快、命令简洁初学者不熟悉
snap跨发行版、沙箱隔离启动慢、体积大
flatpak跨平台 GUI 支持好占用空间大
nix版本可重现、强隔离学习曲线陡峭
如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:蒋固金

本文链接:

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