在 Linux 系统运维中,安装、更新和管理软件是日常核心任务。openEuler 采用基于 RPM 的包管理系统,使用 DNF 作为默认的高级包管理器。本章将带你全面掌握如何在 openEuler 中高效、安全地管理软件。
🌟 本章目标
- 理解 RPM 与 DNF 的关系:底层包格式 vs 高层管理工具
- 掌握
dnf常用命令:安装、更新、删除、查询软件 - 学会配置国内镜像源(华为云、阿里云)提升下载速度
- 使用
rpm命令手动管理 RPM 包(查询、安装、卸载) - 解决依赖问题,理解仓库(Repository)机制
- 实战:安装常用工具(如 nginx、htop、vim-enhanced)
9.1 RPM 与 DNF 简介
🔹 RPM(Red Hat Package Manager)
- 是一种 软件包文件格式 (
.rpm文件) - 包含程序文件、配置、元数据和安装脚本
- 优点:标准化、可验证、易于分发
- 缺点:不自动解决依赖关系
示例包名:
nginx-1.21.5-9.oe2203sp4.x86_64.rpm
🔹 DNF(Dandified YUM)
- 是 RPM 的高级前端管理器,取代了旧版 YUM
- 自动解决依赖、从仓库下载、智能更新
- 支持插件扩展,性能更好
💬 类比:
- RPM = 手动拧螺丝组装电脑
- DNF = 一键装机工具
📌 openEuler 默认使用 DNF 进行软件管理。
9.2 DNF 基本命令
✅ 1. 刷新缓存(首次使用或换源后)
bash
sudo dnf makecache
建议每次配置新源后运行。
✅ 2. 安装软件
bash
sudo dnf install vim
系统会显示将安装的包及其依赖,提示确认:
Proceed? [y/N]: y
安装多个软件
bash
sudo dnf install nginx htop git
不提示直接安装(适合脚本)
bash
sudo dnf install -y nginx
✅ 3. 更新软件
bash
# 更新指定软件
sudo dnf update nginx
# 更新所有可更新的软件
sudo dnf update -y
💡 建议定期执行
dnf update以修复安全漏洞。
✅ 4. 删除软件
bash
sudo dnf remove nginx
会自动移除不再需要的依赖(如果无其他程序依赖)。
彻底清理(可选)
bash
sudo dnf autoremove
删除所有"孤儿依赖"(即没有被任何包依赖的包)。
✅ 5. 查看软件信息
bash
dnf info vim
输出包括版本、大小、描述、依赖等。
9.3 软件包查询与搜索
🔍 搜索软件包
bash
dnf search keyword
例如:
bash
dnf search editor # 查找编辑器相关软件
dnf search mysql # 查找数据库相关
📦 查询已安装的软件
bash
dnf list installed | grep nginx
查看所有已安装包:
bash
dnf list installed
🔎 查询某个文件属于哪个包
bash
dnf provides /usr/bin/htop
输出:
htop-3.1.2-2.oe2203sp3.x86_64 : htop - an interactive process viewer
Repo : openEuler-everything
Matched from:
Filename : /usr/bin/htop
💡 这在你看到一个命令但不知道如何安装时非常有用!
🧩 查看软件依赖关系
bash
dnf deplist nginx
显示 nginx 依赖的所有库和包。
9.4 配置国内软件源(推荐)
openEuler 官方源在国外,访问较慢。建议切换为国内镜像。
推荐镜像源
步骤:更换为华为云镜像
bash
# 1. 备份原 repo 文件
sudo cp -r /etc/yum.repos.d /etc/yum.repos.d.bak
# 2. 删除旧 repo
sudo rm -f /etc/yum.repos.d/*.repo
# 3. 配置华为云镜像源
https://mirrors.huaweicloud.com/mirrorDetail/5ebe3408c8ac54047fe607f0?mirrorName=openeuler&catalog=os
🔗 其他版本替换链接中的版本号和架构(如 aarch64)
验证源配置
bash
dnf repolist
应显示:
repo id repo name
openEuler-EPOL openEuler-EPOL
openEuler-OS openEuler-OS
openEuler-everything openEuler-everything
刷新缓存
bash
sudo dnf clean all
sudo dnf makecache
✅ 配置完成,安装速度将大幅提升!
9.5 使用 rpm 命令(底层操作)
虽然推荐使用 dnf,但有时需要直接操作 .rpm 文件。
📦 安装 RPM 包(不推荐,可能缺依赖)
bash
sudo rpm -ivh package.rpm
-i:install-v:verbose(显示详情)-h:显示安装进度(# 号)
⚠️ 风险:不自动解决依赖,容易失败。
🗑️ 卸载 RPM 包
bash
sudo rpm -e package_name
注意:是包名,不是
.rpm文件名。
🔍 查询已安装的 RPM 包
bash
rpm -qa | grep nginx
-q:query-a:all
📁 查询某个 RPM 包安装了哪些文件
bash
rpm -ql nginx
输出所有安装路径,如:
/etc/nginx/nginx.conf
/usr/sbin/nginx
/usr/share/nginx/html/index.html
🔎 查询某个文件是由哪个 RPM 包安装的
bash
rpm -qf /usr/sbin/nginx
输出:nginx-1.21.5-9.oe2203sp3.x86_64
9.6 实战:安装常用软件
案例1:安装 Web 服务器 Nginx
bash
# 安装
sudo dnf install -y nginx
# 启动并设置开机自启
sudo systemctl start nginx
sudo systemctl enable nginx
# 查看状态
sudo systemctl status nginx
# 测试访问(本地)
curl http://localhost
浏览器访问虚拟机 IP,应看到 openEuler 欢迎页。
案例2:安装系统监控工具 htop
bash
sudo dnf install -y htop
htop
htop比top更直观,支持鼠标操作。
案例3:安装增强版 Vim
bash
sudo dnf install -y vim-enhanced
vim-enhanced 支持语法高亮、自动缩进等高级功能。
✅ 本章小结
| 工具 | 用途 | 推荐命令 |
|---|---|---|
| DNF | 主要包管理器 | install, update, remove, search |
| RPM | 底层包操作 | rpm -qa, rpm -ql, rpm -qf |
| 镜像源 | 提升速度 | 华为云 / 阿里云 repo 配置 |
| 依赖管理 | 自动解决 | DNF 自动处理,无需手动干预 |
📝 课后练习
- 配置华为云镜像源,并运行
dnf makecache。 - 搜索并安装
tree命令(用于树状显示目录结构)。 - 使用
dnf provides找出ifconfig命令属于哪个包(答案:net-tools)。 - 安装
net-tools后,运行ifconfig查看网络接口。 - 使用
rpm -ql查看nginx安装了哪些文件。 - (挑战)下载一个
.rpm包(如从 https://rpmfind.net),尝试用rpm -ivh安装,观察是否报依赖错误,再用dnf install安装同一功能的软件,对比体验。
🔜 下一章预告:第10章《进程管理与系统监控》
我们将学习:
- 什么是进程?PID、PPID 的含义
- 使用
ps、top、htop查看进程 - 控制进程:
kill、pkill、killall - 系统资源监控:
free、df、vmstat、iostat - 进程优先级与
nice/renice
准备好成为系统的"任务管理器"专家了吗?