跳转到内容

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权限

有两种使用方式:

  1. 切换到root用户:sudo -i
  2. 在命令前加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 git

4.2 安装软件包 ​

使用install命令安装软件包,可以选择是否使用-y选项自动确认。

bash
# 安装git软件(需要手动确认)
sudo dnf install git

# 安装git软件(自动确认)
sudo dnf -y install git

4.3 卸载软件包 ​

使用remove命令卸载软件包。

bash
# 卸载git软件
sudo dnf remove git

# 卸载git软件(自动确认)
sudo dnf -y remove git

4.4 更新软件包 ​

使用update命令更新软件包,或使用upgrade命令升级系统(推荐)。

bash
# 更新单个软件包
sudo dnf update git

# 更新所有软件包
sudo dnf update

# 升级系统(推荐)
sudo dnf upgrade

4.5 清理缓存 ​

使用clean命令清理DNF缓存。

bash
# 清理缓存
sudo dnf clean all

4.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 updateUbuntu系统:更新软件包列表
sudo apt install 软件名Ubuntu系统:安装指定软件

7. 如何配置软件仓库源 ​

7.1 查看当前软件仓库源 ​

bash
# 查看当前软件仓库源
sudo dnf repolist

7.2 配置软件仓库源 ​

  • 编辑仓库配置文件:通常位于/etc/yum.repos.d/目录下,每个仓库对应一个配置文件(如rocky.repo)
  • 添加或修改仓库:根据需要添加或修改仓库配置,包括仓库名称、URL、启用/禁用等
  • 保存并退出:配置完成后,保存并退出编辑器

7.3 刷新软件仓库缓存 ​

配置完成后,需要刷新软件仓库缓存,使DNF能够识别新的仓库。

bash
# 刷新软件仓库缓存
sudo dnf makecache

7.4 验证软件仓库源 ​

配置完成后,需要验证软件仓库源是否正确。

bash
# 验证软件仓库源
sudo dnf repolist enabled

7.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)。

具体的地址可以参考国内一些常见的镜像站,这里整理了一个列表方便大家查阅:

镜像站主页地址
华为云https://mirrors.huaweicloud.com/
阿里云https://mirrors.aliyun.com/
腾讯云https://mirrors.tencent.com/
清华大学https://mirrors.tuna.tsinghua.edu.cn/
中国科技大学https://mirrors.ustc.edu.cn/
浙江大学http://mirrors.zju.edu.cn/
重庆大学https://mirrors.cqu.edu.cn/
兰州大学https://mirror.lzu.edu.cn/
上海交通大学https://mirrors.sjtug.sjtu.edu.cn/

选择距离自己物理位置较近的镜像站,通常可以获得更快的下载速度。


课程总结 ​

这节课我们学了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更新系统中的所有软件包(注意:此操作可能需要较长时间)

评论区

专业的Linux技术学习平台,从入门到精通的完整学习路径