cat /etc/os-release确认系统是 Debian 系、RHEL 系还是别的,决定用哪个包管理器。
约 1271 字大约 4 分钟
2026-05-14
“装个软件”在 Linux 上不是去网站下载安装包,而是交给包管理器——它负责安装、升级、卸载,还自动把依赖一起处理好。不同发行版用不同的包管理器,命令不一样但思路相通。这篇先建立全局地图,知道你手上这台机器该用哪个。
理解包管理器统一管理软件的安装、升级、卸载和依赖,认识 apt、dnf/yum、pacman、brew 的对应关系,分清系统包管理器和语言包管理器。
cat /etc/os-release确认系统是 Debian 系、RHEL 系还是别的,决定用哪个包管理器。
apt search 关键词apt 是 Debian 系的包管理器,install/remove/update 都靠它。
dnf search 关键词dnf(旧称 yum)是 RHEL 系的包管理器。
command -v apt dnf yum pacman看机器上实际有哪个包管理器命令。
手动装软件的痛点:要自己找下载地址、自己装依赖、依赖还有依赖、升级要重来一遍、卸载留一地垃圾。包管理器把这些全包了:
| 发行版家族 | 包管理器 | 包格式 | 代表系统 |
|---|---|---|---|
| Debian 系 | apt(底层 dpkg) | .deb | Ubuntu、Debian |
| RHEL 系 | dnf(旧 yum) | .rpm | CentOS、Fedora、RHEL、Rocky |
| Arch 系 | pacman | .pkg.tar.zst | Arch、Manjaro |
| macOS(第三方) | brew | —— | macOS |
命令名不同,但动词是相通的:搜索、安装、删除、更新索引、升级软件。学会一个,迁移到另一个只是查一下命令对照表。
| 操作 | apt | dnf | pacman |
|---|---|---|---|
| 搜索 | apt search | dnf search | pacman -Ss |
| 安装 | apt install | dnf install | pacman -S |
| 删除 | apt remove | dnf remove | pacman -R |
| 更新索引 | apt update | (dnf 自动) | pacman -Sy |
| 升级软件 | apt upgrade | dnf upgrade | pacman -Su |
这是新手最容易混的一点。除了系统包管理器,还有语言生态自己的包管理器:pip(Python)、npm(Node)、cargo(Rust)……它们解决的是不同层面的问题:
| 系统包管理器(apt/dnf) | 语言包管理器(pip/npm) | |
|---|---|---|
| 管什么 | 系统级软件、服务、共享库 | 某个语言项目的依赖库 |
| 装到哪 | 系统目录,全局 | 项目目录或语言环境里 |
| 谁该管 | 系统管理员 | 开发者,按项目 |
经验法则:系统服务、命令行工具用系统包管理器;项目的代码依赖用语言包管理器。别用 pip install 去装本该 apt install 的系统组件,反之亦然——混着来会造成版本冲突和难以排查的环境问题。
装软件前先确认发行版和包管理器
照着网上教程敲命令前,先 cat /etc/os-release 确认发行版——把 RHEL 的 yum install 敲到 Ubuntu 上,或反过来,只会得到 command not found 或一堆错。系统级的安装、升级、卸载都需要 root,会改动整台机器的共享环境,不是个人目录里的小操作,执行前看清楚命令到底要做什么。
| 误区 | 更稳妥的做法 |
|---|---|
| 不看发行版就照搬网上的安装命令 | 先 cat /etc/os-release 确认用 apt 还是 dnf 等 |
用 pip / npm 装系统级组件 | 系统服务和工具用系统包管理器,语言依赖才用 pip/npm |
| 以为换了发行版要重新学一套 | 动词相通,查一张命令对照表就能迁移 |
| 像下载安装包一样到处找软件 | 优先从发行版的软件源装,统一、可信、好维护 |
版权归属:Shuo Liu