主题
Linux软件安装:DNF包管理器详解
课程介绍
本课程将学习Linux软件安装的几种方式:源代码编译安装、预编译安装包安装、系统应用商店安装。同时,还将详细讲解DNF包管理器的核心知识和实用技巧,以及软件源的配置和管理。
1. 计算机软件安装的三种方式
方式1:下载源代码编译为二进制安装包后再安装
- Windows系统:通常使用MinGW或Cygwin等工具编译
- Mac系统:通常使用Xcode等工具编译
- Linux系统:通常使用GCC等工具编译
方式2:下载已经编译成功好的安装包自行安装
- Windows系统:通常下载.exe或.msi文件,双击安装
- Mac系统:通常下载.dmg或.pkg文件,双击安装
- Linux系统:常见的安装包格式为.rpm文件(Red Hat系列)或.deb文件(Debian系列)
方式3:使用系统应用商店安装
- Windows系统:微软应用商店
- Mac系统:App Store
- Linux系统:命令行包管理器(如DNF、YUM、APT等)
优缺点对比
| 安装方式 | 优点 | 缺点 |
|---|---|---|
| 源代码编译安装 | 1. 可自定义编译选项,功能最灵活 2. 能针对硬件做优化,性能最佳 3. 版本最新,可抢先体验 | 1. 编译耗时,步骤繁琐 2. 需安装大量依赖开发包 3. 升级/卸载麻烦,易残留文件 |
| 预编译安装包 | 1. 下载即用,安装速度快 2. 无需额外依赖,兼容性好 3. 卸载方便,残留少 | 1. 版本固定,无法自定义 2. 可能缺少特定功能模块 3. 依赖系统库,版本冲突风险 |
| 系统应用商店安装 | 1. 一条命令完成安装/卸载 2. 自动解决依赖,安全可靠 3. 统一管理,方便批量更新 | 1. 软件版本相对滞后 2. 仓库软件数量有限 3. 需联网,依赖仓库稳定性 |
怎么选择安装方式?
- 源代码编译安装:适用于对软件有一定了解,需要自定义配置的情况。
- 预编译安装包:适用于简单安装,无需自定义配置的情况。
- 系统应用商店安装:适用于快速安装,无需手动配置的情况。
2. DNF包管理器概述
什么是DNF包管理器
DNF(Dandified dnf)是新一代的RPM包管理器,主要用于Red Hat系列的Linux发行版,如CentOS、Fedora等,那么一些衍生版本的发行版本,如华为的OpenEuler、国产的麒麟V10、阿里的OpenAnolis、Rocky Linux、AlmaLinux等也都支持DNF包管理器。
DNF是YUM(Yellowdog Updater, Modified)的替代品,解决了YUM存在的性能慢、依赖解析易出错、不支持模块化等缺陷。
DNF的优势
- 自动解决依赖:安装软件时自动下载并安装所需的依赖包
- 简化安装流程:一条命令即可完成软件安装
- 集中管理:通过软件仓库集中管理软件包
- 版本控制:可以方便地更新和降级软件版本
- 性能优化:相比YUM,DNF使用了现代的依赖解析算法,速度更快
- 模块化设计:支持模块化软件管理
3. DNF命令语法
基本语法
注意:使用DNF安装、卸载软件需要root权限
有两种使用方式:
- 切换到root用户:
sudo -i - 在命令前加sudo:
sudo dnf [选项] 命令 软件名称
bash
# 基本语法
dnf [选项] 命令 软件名称
# 使用sudo的语法
sudo dnf [选项] 命令 软件名称常用选项
| 选项 | 功能描述 |
|---|---|
-y | 自动确认所有操作,无需手动输入y确认 |
-q | 安静模式,减少输出信息 |
-h | 显示帮助信息 |
-v | 详细模式,显示更多输出信息 |
常用命令
| 命令 | 功能描述 |
|---|---|
install | 安装指定软件 |
remove | 卸载指定软件 |
search | 搜索软件包 |
list | 列出软件包 |
update | 更新软件包 |
clean | 清理缓存 |
upgrade | 升级系统(推荐使用) |
module | 模块管理(DNF新特性) |
4. DNF的基本使用
4.1 搜索软件包
在安装软件之前,可以先搜索确认软件包是否存在于仓库中。
bash
# 搜索git软件
sudo dnf search git4.2 安装软件包
使用install命令安装软件包,可以选择是否使用-y选项自动确认。
bash
# 安装git软件(需要手动确认)
sudo dnf install git
# 安装git软件(自动确认)
sudo dnf -y install git4.3 卸载软件包
使用remove命令卸载软件包。
bash
# 卸载git软件
sudo dnf remove git
# 卸载git软件(自动确认)
sudo dnf -y remove git4.4 更新软件包
使用update命令更新软件包,或使用upgrade命令升级系统(推荐)。
bash
# 更新单个软件包
sudo dnf update git
# 更新所有软件包
sudo dnf update
# 升级系统(推荐)
sudo dnf upgrade4.5 清理缓存
使用clean命令清理DNF缓存。
bash
# 清理缓存
sudo dnf clean all4.6 注意事项
- 需要root权限:安装、卸载软件需要管理员权限,可以使用
sudo -i切换到root用户,或使用sudo命令 - 需要联网:DNF需要从互联网上的软件仓库下载软件包
- 软件仓库配置:系统需要正确配置软件仓库源,才能正常使用DNF
- 依赖关系:DNF会自动处理软件依赖关系,但有时可能会出现冲突
- 缓存管理:DNF会自动管理缓存,通常不需要手动清理
5. APT包管理器简介(Ubuntu系统)
对于Ubuntu和Debian系统,常用的包管理器是APT(Advanced Package Tool)。APT的功能与dnf类似,也是用于自动化安装、配置和卸载软件。
注意:使用APT安装、卸载软件也需要root权限
使用方式:在命令前加sudo:sudo apt [选项] 命令 软件名称
APT基本命令
| 命令 | 功能描述 |
|---|---|
sudo apt update | 更新软件包列表 |
sudo apt install | 安装软件包 |
sudo apt remove | 卸载软件包 |
sudo apt search | 搜索软件包 |
sudo apt upgrade | 更新软件包 |
6. 关键命令参考
| 命令 | 功能描述 |
|---|---|
sudo dnf search 软件名 | 搜索指定软件 |
sudo dnf install 软件名 | 安装指定软件 |
sudo dnf -y install 软件名 | 自动确认安装指定软件 |
sudo dnf remove 软件名 | 卸载指定软件 |
sudo dnf update 软件名 | 更新指定软件 |
sudo dnf update | 更新所有软件 |
sudo dnf upgrade | 升级系统(推荐) |
sudo dnf clean all | 清理DNF缓存 |
sudo apt update | Ubuntu系统:更新软件包列表 |
sudo apt install 软件名 | Ubuntu系统:安装指定软件 |
7. 如何配置软件仓库源
7.1 查看当前软件仓库源
bash
# 查看当前软件仓库源
sudo dnf repolist7.2 配置软件仓库源
- 编辑仓库配置文件:通常位于
/etc/yum.repos.d/目录下,每个仓库对应一个配置文件(如rocky.repo) - 添加或修改仓库:根据需要添加或修改仓库配置,包括仓库名称、URL、启用/禁用等
- 保存并退出:配置完成后,保存并退出编辑器
7.3 刷新软件仓库缓存
配置完成后,需要刷新软件仓库缓存,使DNF能够识别新的仓库。
bash
# 刷新软件仓库缓存
sudo dnf makecache7.4 验证软件仓库源
配置完成后,需要验证软件仓库源是否正确。
bash
# 验证软件仓库源
sudo dnf repolist enabled7.5 配置多个软件仓库源
如果需要使用多个软件仓库源,需要在配置文件中添加多个仓库配置。每个仓库配置通常包含以下信息:
- 仓库名称:用于标识仓库的名称,通常与仓库URL相关
- 仓库URL:指向软件仓库的URL,用于下载软件包
- 启用/禁用:是否启用该仓库源,默认值为
enabled=1 - GPG检查:是否启用GPG签名验证,默认值为
gpgcheck=1 - GPG密钥:用于验证软件包签名的GPG密钥URL
7.6 配置软件仓库源优先级
如果配置了多个软件仓库源,需要设置优先级,以确定在安装软件时使用哪个仓库。
- 默认优先级:默认情况下,新添加的仓库源优先级较低,会被优先使用
- 修改优先级:可以在仓库配置文件中使用
priority=数字选项来设置仓库源的优先级,数字越小优先级越高
7.7 配置软件仓库源的GPG密钥
如果启用了GPG检查,需要配置正确的GPG密钥,以验证软件包的签名。
- 获取GPG密钥:通常可以在软件仓库的文档或README文件中找到GPG密钥URL
- 添加GPG密钥:在仓库配置文件中添加
gpgkey=URL选项,将URL替换为实际的GPG密钥URL - 保存并退出:配置完成后,保存并退出编辑器
7.8 配置软件仓库源的代理
如果需要通过代理访问软件仓库,需要配置代理设置。
- 添加代理配置:在仓库配置文件中添加
proxy=URL选项,将URL替换为实际的代理URL - 保存并退出:配置完成后,保存并退出编辑器
7.9 配置软件仓库源的超时设置
如果软件仓库响应缓慢或超时,需要配置超时设置。
- 添加超时配置:在仓库配置文件中添加
timeout=秒数选项,将秒数替换为实际的超时时间(默认值为60秒) - 保存并退出:配置完成后,保存并退出编辑器
7.10 配置软件仓库源的缓存目录
如果需要自定义软件仓库源的缓存目录,需要配置缓存目录设置。
- 添加缓存目录配置:在仓库配置文件中添加
cachedir=路径选项,将路径替换为实际的缓存目录路径(默认值为/var/cache/dnf) - 保存并退出:配置完成后,保存并退出编辑器
7.11 配置软件仓库源的缓存过期时间
如果需要自定义软件仓库源的缓存过期时间,需要配置缓存过期时间设置。
- 添加缓存过期时间配置:在仓库配置文件中添加
expire=秒数选项,将秒数替换为实际的缓存过期时间(默认值为604800秒,即7天) - 保存并退出:配置完成后,保存并退出编辑器
7.12 配置软件仓库源的HTTP头
如果需要自定义软件仓库源的HTTP头,需要配置HTTP头设置。
- 添加HTTP头配置:在仓库配置文件中添加
http_headers=头信息选项,将头信息替换为实际的HTTP头信息(多个头信息用空格分隔) - 保存并退出:配置完成后,保存并退出编辑器
7.13 配置软件仓库源的其他选项
如果需要自定义其他软件仓库源选项,需要配置其他选项设置。
- 添加其他选项配置:在仓库配置文件中添加其他选项,根据需要设置(如
sslverify=0禁用SSL验证) - 保存并退出:配置完成后,保存并退出编辑器
7.14 一键换源脚本
注意:执行换源脚本需要root权限
大家如果觉得上面的配置步骤太麻烦了,推荐一个一键傻瓜式换源脚本,来源:https://linuxmirrors.cn/,执行该脚本后,会自动配置好软件仓库源,并且刷新缓存。
执行方法1(推荐):使用sudo sh -c
bash
sudo sh -c "bash <(curl -sSL https://linuxmirrors.cn/main.sh)"执行方法2:先切换到root用户
bash
# 切换到root用户
sudo -i
# 执行脚本
bash <(curl -sSL https://linuxmirrors.cn/main.sh)
# 退出root用户
exit执行方法3:静默模式
bash
sudo sh -c "bash <(curl -sSL https://linuxmirrors.cn/main.sh) \
--source mirror.example.com \
--protocol http \
--use-intranet-source false \
--install-epel true \
--backup true \
--upgrade-software false \
--clean-cache false \
--ignore-backup-tips \
--pure-mode"注意这里的--source mirror.example.com是需要根据实际情况替换为你要使用的软件仓库源的URL。 还有--protocol http是需要根据实际情况替换为你要使用的协议(http或https)。
具体的地址可以参考国内一些常见的镜像站,这里整理了一个列表方便大家查阅:
选择距离自己物理位置较近的镜像站,通常可以获得更快的下载速度。
课程总结
这节课我们学了DNF包管理器。
DNF是什么:
- Rocky Linux 9的默认包管理器
- 自动解决软件依赖问题
- 是yum的现代替代品
常用命令: dnf search 软件名 - 搜索软件包 dnf install 软件名 - 安装软件 dnf remove 软件名 - 卸载软件 dnf update - 更新系统所有软件包 dnf upgrade - 升级系统 dnf list installed - 查看已安装的软件
常用选项:
-y- 自动确认所有提示--nobest- 不使用最佳版本,当需要安装特定版本但遇到依赖冲突时非常有用。--downloadonly- 只下载不安装
需要root权限才能使用DNF安装软件。
- Ubuntu系统使用APT包管理器,功能与DNF类似
课后练习
- 使用DNF搜索并安装git软件
- 查看已安装的git软件信息
- 使用DNF卸载git软件
- 尝试使用DNF更新系统中的所有软件包(注意:此操作可能需要较长时间)