Linux 软件包管理详解:apt、yum、dnf 安装/卸载/升级与软件源配置实战


装个 Nginx 提示 package not found、升级软件老失败、卸载后残留一堆文件——这些问题的根源都在软件包管理。Linux 安装软件不像 Windows 双击 exe,而是用包管理器从软件源拉取安装:Debian/Ubuntu 用 apt,CentOS 7 用 yum,CentOS 8+/Fedora 用 dnf。这篇文章把三大包管理器的常用操作和换源加速一次讲清。

一、三大包管理器对应关系

系统 包管理器 安装包格式 对应关系
Debian / Ubuntu apt .deb apt 是 dpkg 的前端
CentOS 7 yum .rpm yum 是 rpm 的前端
CentOS 8+ / Rocky / Alma / Fedora dnf .rpm dnf 是 yum 的升级版

命令基本一一对应,会一个就会其他两个:

apt install nginx          # Debian 系
yum install nginx          # CentOS 7
dnf install nginx          # CentOS 8+

二、apt 常用操作(Debian/Ubuntu)

sudo apt update                  # 更新软件源索引(装新软件前先执行)
sudo apt upgrade                 # 升级所有已装软件
sudo apt install nginx           # 安装软件
sudo apt install -y nginx        # -y 自动确认,脚本里必加
sudo apt remove nginx            # 卸载(保留配置文件)
sudo apt purge nginx             # 彻底卸载(含配置文件)
sudo apt autoremove              # 清理不再需要的依赖
sudo apt search nginx            # 搜索软件
apt show nginx                   # 查看软件详情(版本、依赖)
apt list --installed             # 列出所有已安装软件

注意:apt update 和 apt upgrade 是两回事,前者刷新索引、后者升级软件,装新包前必须先 update,否则可能提示找不到。

三、yum / dnf 常用操作(CentOS/Rocky/Fedora)

sudo yum install -y nginx        # 安装(yum 默认无确认,-y 可省)
sudo yum remove nginx            # 卸载
sudo yum update                  # 升级所有软件
sudo yum search nginx            # 搜索
yum list installed               # 列出已安装
yum info nginx                   # 查看详情

# dnf 用法与 yum 完全一致
sudo dnf install -y nginx
sudo dnf upgrade

CentOS 7 的 yum 源已停止维护(2024 年 EOL),生产环境建议迁移到 Rocky/AlmaLinux,或把 yum 源换成阿里云的 vault 源,否则 yum update 会失败。

四、更换软件源加速(国内服务器必备)

海外源在国内访问极慢,换成阿里云/清华源能快 10 倍以上。

Ubuntu 换源:

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo sed -i 's|archive.ubuntu.com|mirrors.aliyun.com|g' /etc/apt/sources.list
# 新版 Ubuntu(22.04+)用 sed 替换软件源描述里的域名
sudo apt update

CentOS 7 换源(先备份):

sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
sudo curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
sudo yum clean all && sudo yum makecache

五、安装本地包与依赖处理

下载了 .deb / .rpm 文件,用低级工具直接装:

# Debian/Ubuntu
sudo dpkg -i 软件包.deb        # 有依赖缺失会报错
sudo apt install -f             # 自动修复依赖(装完 dpkg 失败后执行)

# CentOS
sudo rpm -ivh 软件包.rpm        # 安装
sudo rpm -Uvh 软件包.rpm        # 升级
sudo yum localinstall 软件包.rpm # 自动解决依赖(推荐)

rpm/dpkg 装报依赖错误:先用包管理器补依赖(apt -f install / yum localinstall),不要强行 --nodeps,否则装上也跑不起来。

六、查看已安装软件

# Debian/Ubuntu
dpkg -l | grep nginx        # 查找 nginx 是否已装
dpkg -l | wc -l             # 统计软件总数

# CentOS
rpm -qa | grep nginx
rpm -q nginx                # 只查单个

七、常见问题排查

  1. Unable to locate package:源索引没更新,先 sudo apt update;或软件源里没有该包,搜索确认包名(如 nginx vs nginx-core);
  2. Failed to fetch ... 404:源失效,换国内镜像源(见第四节);
  3. The following packages have unmet dependencies:依赖冲突,sudo apt install -f 修复,或 sudo apt dist-upgrade 升级后再装;
  4. dpkg: error ... is already installed:安装状态损坏,sudo dpkg --remove --force-remove-reinstreq 包名 后重装;
  5. 密钥错误 NO_PUBKEY:源缺少公钥,按提示 sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 密钥ID 添加;
  6. 装完命令找不到:软件安装到了非 PATH 目录(如 /usr/local/bin),检查 which 命令,或重新登录加载 PATH。

总结:软件包管理记住三件事——Debian 系用 apt、CentOS 系用 yum/dnf,操作命令一一对应;装新软件先 update 再 install,脚本里加 -y;国内服务器第一时间换阿里云镜像源。会了这套,装软件、卸软件、排依赖基本不会再卡壳。


手机扫码阅读

微信或手机浏览器扫一扫,随时随地随心阅读与分享

Linux 网络配置完整指南:ip 命令、静态 IP、网关与 DNS 配置实战

scp 命令详解与实战:Linux 服务器文件上传下载、目录递归与断点续传

评 论
更换验证码