跳转到内容

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技术学习平台,从入门到精通的完整学习路径