软件包的类型
rpm 二进制包------》已经使用 GCC 编译后的
tar 源码包-----》需要编译
RPM 概述:RPM 是 RPM Package Manager(RPM 软件包管理器)的缩写,这一文件格式名称虽然打上了 RedHat 的标志,但是其原始设计理念是开放式的,现在包括 OpenLinux、SUSE 以及 TurboLinux 等 Linux 的分发版本都有采用,可以算是公认的行业标准了。
1、Centos 系统镜像光盘
2、网站 rpmfind.net
3、比如安装 mysql、nginx 软件,我们可以去它的官方网站下载:
http://nginx.org/en/download.html
4、centos yum 源上,也有 rpm 可以手动下载
[root@Hengji ~]# mount /dev/cdrom /mnt/
mount: /mnt: WARNING: device write-protected, mounted read-only.
[root@Hengji ~]# ls /mnt/BaseOS/Packages/zsh-5.5.1-6.el8_1.2.x86_64.rpm
/mnt/BaseOS/Packages/zsh-5.5.1-6.el8_1.2.x86_64.rpm
zsh **********-5. ***********5. **********1- *******************6. *********************el8. **************x86_64.rpm
软件名 、 主版本号 、 次版本号 、 修订 、 release(第几次发布版本) 、 操作系统版本 、 软件包是 64 位包
#修订指的是第几次修改 bug。 发布指的是:第几次发布。 发布时,可能只是对软件安装的默认参数做了修改,而没有其它改动。
[root@Hengji ~]# ls /mnt/BaseOS/Packages/atlas-3.10.3-7.el8.i686.rpm
/mnt/BaseOS/Packages/atlas-3.10.3-7.el8.i686.rpm
.i686代表,此包是32位操作系统包。
64位操作系统是可以安装 32 位操作系统的包。 32位,安装不了64位的包。
在 centso7 开始,就没有 32 位操作系统
[root@Hengji ~]# ls /mnt/AppStream/Packages/zsh-html-5.5.1-6.el8_1.2.noarch.rpm
/mnt/AppStream/Packages/zsh-html-5.5.1-6.el8_1.2.noarch.rpm
结尾有 noarch,代表此包在32位和64位操作系统上都可以运行。这类型包,里面通常是文本文件,如:shell脚本,html,txt等。
[root@Hengji ~]# uname -r #查看内核版本
4.18.0-193.14.2.el8_2.x86_64
内核版本是 4.18.0-193.el8,有 x86_64 就是 64 位操作系统
RPM 工具使用分为安装、查询、验证、更新、删除等操作
命令格式:rpm [参数] 软件包
参数:
-i:是 install 的意思, 安装软件包
-v:显示附加信息,提供更多详细信息
-V:校验,对已经安装的软件进行校验
-h:–hash 安装时输出####标记
rpm 使用时,什么情况下使用软件包全名,什么时候使用软件包名?
全名:在安装和更新升级时候使用
包名:对已经安装过的软件包进行操作时,比如查找已经安装的某个包,卸载包等 ,使用包名。它默认是去目录/var/lib/rpm 下面进行搜索。
当一个 rpm 包安装到系统上之后,安装信息通常会保存在本地的 /var/lib/rpm/目录下。
从本地安装
[root@Hengji ~]# rpm -ivh /mnt/BaseOS/Packages/lrzsz-0.12.20-43.el8.x86_64.rpm
#本地安装 lrzsz 包,安装后可以使用 rz 和 sz 命令。
用法:rpm -q(query) | 与下面参数组合使用 |
---|---|
-a(all) | 查询所有已安装的软件包 |
-f(file) | 系统文件名(查询系统文件所属哪个软件包),反向查询 |
-i | 显示已经安装的 rpm 软件包信息,后面直接跟包名 |
-l(list) | 查询软件包中文件安装的位置 |
-p | 查询未安装软件包的相关信息,后面要跟软件的命名 |
-R | 查询软件包的依赖性 |
例:
[root@Hengji ~]# rpm -q lrzsz #查询指定的包是否安装
lrzsz-0.12.20-43.el8.x86_64
[root@Hengji ~]# rpm -qa #查询所有已安装包
jbig2dec-libs-0.14-4.el8_2.x86_64
mesa-libEGL-19.3.4-2.el8.x86_64
...
...
sssd-nfs-idmap-2.2.3-20.el8.x86_64
libieee1284-0.2.11-28.el8.x86_64
例:查看 passwd 文件中包括 bash 的行
[root@Hengji ~]# grep bash /etc/passwd #grep 后面加关键字,可以查找文件中的内容。
root:x:0:0:root:/root:/bin/bash
hengji:x:1000:1000:Hengji:/home/hengji:/bin/bash
[root@Hengji ~]# rpm -qa | grep lrzsz #查询所有已安装包中带 vim 关键字的包
lrzsz-0.12.20-43.el8.x86_64
[root@Hengji ~]# which find #查看 find 命令的路径
/usr/bin/find
[root@Hengji ~]# rpm -qf /usr/bin/find #查询文件或命令属于哪个安装包
findutils-4.6.0-20.el8.x86_64
查询已经安装的 rpm 包的详细信息或作用 rpm -qi rpm 包名
[root@Hengji ~]# rpm -qi lrzsz
Name : lrzsz
Version : 0.12.20
Release : 43.el8
Architecture: x86_64
Install Date: 2020年09月15日 星期二 18时10分28秒
Group : Applications/Communications
Size : 194342
License : GPLv2+
Signature : RSA/SHA256, 2019年07月02日 星期二 07时59分37秒, Key ID 05b555b38483c65d
Source RPM : lrzsz-0.12.20-43.el8.src.rpm
Build Date : 2019年05月11日 星期六 22时54分52秒
Build Host : x86-02.mbox.centos.org
Relocations : (not relocatable)
Packager : CentOS Buildsys
Vendor : CentOS
URL : http://www.ohse.de/uwe/software/lrzsz.html
Summary : The lrz and lsz modem communications programs
Description :
Lrzsz (consisting of lrz and lsz) is a cosmetically modified
zmodem/ymodem/xmodem package built from the public-domain version of
the rzsz package. Lrzsz was created to provide a working GNU
copylefted Zmodem solution for Linux systems.
针对没有安装的 RPM 包,要加参数: -p
[root@Hengji ~]# rpm -qpi /mnt/AppStream/Packages/php-mysqlnd-7.2.24-1.module_el8.2.0+313+b04d0a66.x86_64.rpm
警告:/mnt/AppStream/Packages/php-mysqlnd-7.2.24-1.module_el8.2.0+313+b04d0a66.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID 8483c65d: NOKEY
...
Summary : A module for PHP applications that use MySQL databases
#php 使用 mysql 数据库的一个模块
[root@Hengji ~]# rpm -qpl /mnt/AppStream/Packages/nginx-1.14.1-9.module_el8.0.0+184+e34fea82.x86_64.rpm
警告:/mnt/AppStream/Packages/nginx-1.14.1-9.module_el8.0.0+184+e34fea82.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID 8483c65d: NOKEY
/etc/logrotate.d/nginx
/etc/nginx/fastcgi.conf
...
#查看 rpm 安装后,将生成哪些文件
rpm -V 包名
rpm -Vf 文件路径
例:
[root@Hengji ~]# which find
/usr/bin/find
[root@Hengji ~]# rpm -qf /usr/bin/find
findutils-4.6.0-20.el8.x86_64
上面两条命令,等价于以下面这条命令:
[root@Hengji ~]# rpm -qf `which find`
findutils-4.6.0-20.el8.x86_64
这是反引号。 一行命令中,如果有反引号,那么先执行反引号中的命令,把反引号中的命令的输出,作为前面命令输入。
[root@Hengji ~]# rpm -Vf /usr/bin/find #参数-Vf 后面加文件的路径,查看每个命令或文件,有没有被修改
[root@Hengji ~]# echo aaa >> /usr/bin/find
[root@Hengji ~]# rpm -Vf /usr/bin/find
S.5....T. /usr/bin/find
[root@Hengji ~]# rpm -V findutils #检查包
S.5....T. /usr/bin/find
注:如果出现的是点,表示测试这一项,没有被修改
出现下面的字符代表某测试的失败:
5 — MD5 校验和是否改变,你也看成文件内容是否改变
S — 文件长度,大小是否改变
L — 符号链接,文件路径是否改变
T — 文件修改日期是否改变
D — 设备
U — 用户,文件的属主
G — 用户组
M — 模式 (包含许可和文件类型)
? — 不可读文件
再后面的 c 文件名,它表示的是文件类型
c 配置文件
d 普通文件
g 不该出现的文件,意思就是这个文件不该被这个包所包含
l 授权文件(license file)
r 描述文件
[root@Hengji ~]# rpm -V lrzsz # -V 后面加软件包的名字,查看这个包安装的所有文件,没有被修改。
查看系统中所有的 rpm 包及安装的文件有没有被黑客修改
[root@Hengji ~]# rpm -Va > rpm_check.txt
注: 检验时参考了 /var/lib/rpm 目录下的 rpm 数据库信息
用法:rpm -e(erase) 包名
[root@Hengji ~]# rpm -q lrzsz
lrzsz-0.12.20-43.el8.x86_64
[root@Hengji ~]# rpm -e lrzsz #卸载
[root@Hengji ~]# rpm -q lrzsz #已经找不到 lrzsz 包了,说明卸载成功了
未安装软件包 lrzsz
–nodeps 忽略依赖,建议在卸载时不要用 rpm 去卸载有依赖关系的包,应该用 yum
[root@Hengji ~]# rpm -e --nodeps lrzsz
错误:未安装软件包 lrzsz
rpm 包升级:
centos8 下安装
[root@Hengji ~]# rpm -Uvh /mnt/BaseOS/Packages/lrzsz-0.12.20-43.el8.x86_64.rpm
警告:/mnt/BaseOS/Packages/lrzsz-0.12.20-43.el8.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID 8483c65d: NOKEY
Verifying... ################################# [100%]
准备中... ################################# [100%]
正在升级/安装...
1:lrzsz-0.12.20-43.el8 ################################# [100%]
centos7 下安装
[root@Hengji ~]# rpm -Uvh /mnt/Packages/lrzsz-0.12.20-36.el7.x86_64.rpm
[root@Hengji ~]# rpm -ivh /mnt/AppStream/Packages/httpd-tools-2.4.37-21.module_el8.2.0+382+15b0afa8.x86_64.rpm
警告:/mnt/AppStream/Packages/httpd-tools-2.4.37-21.module_el8.2.0+382+15b0afa8.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID 8483c65d: NOKEY
错误:依赖检测失败:
libapr-1.so.0()(64bit) 被 httpd-tools-2.4.37-21.module_el8.2.0+382+15b0afa8.x86_64 需要
libaprutil-1.so.0()(64bit) 被 httpd-tools-2.4.37-21.module_el8.2.0+382+15b0afa8.x86_64 需要
报错:我们需要把依赖包安装上,才可以。
[root@Hengji ~]# rpm -ivh /mnt/AppStream/Packages/apr-1.6.3-9.el8.x86_64.rpm
警告:/mnt/AppStream/Packages/apr-1.6.3-9.el8.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID 8483c65d: NOKEY
Verifying... ################################# [100%]
准备中... ################################# [100%]
正在升级/安装...
1:apr-1.6.3-9.el8 ################################# [100%]
[root@Hengji ~]# rpm -ivh /mnt/AppStream/Packages/apr-util-1.6.1-6.el8.x86_64.rpm
警告:/mnt/AppStream/Packages/apr-util-1.6.1-6.el8.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID 8483c65d: NOKEY
Verifying... ################################# [100%]
准备中... ################################# [100%]
正在升级/安装...
1:apr-util-1.6.1-6.el8 ################################# [100%]
[root@Hengji ~]# rpm -ivh /mnt/AppStream/Packages/httpd-tools-2.4.37-21.module_el8.2.0+382+15b0afa8.x86_64.rpm
警告:/mnt/AppStream/Packages/httpd-tools-2.4.37-21.module_el8.2.0+382+15b0afa8.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID 8483c65d: NOKEY
Verifying... ################################# [100%]
准备中... ################################# [100%]
正在升级/安装...
1:httpd-tools-2.4.37-21.module_el8.################################# [100%]
yum(全称为 Yellow dog Updater, Modified)是一个前端软件包管理器。基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。yum 提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
YUM:解决依赖关系问题,自动下载软件包,它是基于 C/S 架构
[root@Hengji ~]# mount /dev/cdrom /mnt/
mount: /mnt: /dev/sr0 already mounted on /run/media/root/CentOS-8-2-2004-x86_64-dvd.
[root@Hengji ~]# ls /mnt/
AppStream BaseOS EFI images isolinux media.repo TRANS.TBL
centos8 本地 YUM 源配置:
在 centos8 当中,本地光盘中的安装包被分别放在了两个路径下。假设挂载路径为/mnt,那么两个Package 路径分别为:/mnt/AppStream/Packages 和/mnt/BaseOS/Packages。
因为 IOS 镜像内的设置,所以导致了在编辑本地 yum 源的时候需要分别写两个路径在配置文件中。
同时网络 yum 源也被分别写到了两个配置文件内。所以就需要把两个网络 yum 源配置文件改名。
[root@Hengji ~]# ls /etc/yum.repos.d/
CentOS-AppStream.repo CentOS-Debuginfo.repo CentOS-HA.repo CentOS-Vault.repo
CentOS-Base.repo CentOS-Devel.repo CentOS-Media.repo
CentOS-centosplus.repo CentOS-Extras.repo CentOS-PowerTools.repo
CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo
#centos8 与之前版本不同的是增加了一个 CentOS-AppStream.repo 文件,CentOS-AppStream.repo 和 CentOS-Base.repo 文件都需要移除目录或者改名。
BaseOS:类似于 centos7 中的 Base 软件仓库,主要提供了 OS 系统的基础组建,提供的是 RPM 形式的包,因为都是 RPM 包形式所以它支持与之前版本兼容(support terms similar)。
AppStream:它提供的是系统以外的应用程序,如 httpd,nginx,php,mariadb-server 等
(1)首先挂载光盘:
[root@Hengji ~]# mount /dev/sr0 /mnt/
mount: /mnt: /dev/sr0 already mounted on /run/media/root/CentOS-8-2-2004-x86_64-dvd.
(2)创建一个本地 yum 配置文件 centos8.repo:
[root@Hengji ~]# vim /etc/yum.repos.d/centos8.repo #写入以下内容
[c8-media-BaseOS]
name=CentOS-BaseOS-$releasever - Media
baseurl=file:///mnt/BaseOS
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
[c8-media-AppStream]
name=CentOS-AppStream-$releasever - Media
baseurl=file:///mnt/AppStream
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
添加修改完两个区域后保存退出。
如果 gpgcheck=1 ,需要导入 rpm 公钥。方便后期校对 rpm 包。一般情况,写为 0. 工作就写成 1 并导入公钥。这样安全。
[root@Hengji ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
(3)移动网络 yum 源配置文件位置:
[root@Hengji ~]# mv /etc/yum.repos.d/C* /opt #将网络 yum 配置文件移动到任意位置,使其不被 yum 所识别
[root@Hengji ~]# yum list #在 centos8 版本当中可以继续使用 yum 命令进行安装包管理
CentOS-BaseOS-8 - Media 41 MB/s | 2.2 MB 00:00
CentOS-AppStream-8 - Media 29 MB/s | 5.7 MB 00:00
...
...
[root@Hengji ~]# ll /usr/bin/yum
lrwxrwxrwx. 1 root root 5 7月 22 02:46 /usr/bin/yum -> dnf-3
我们执行的 yum 命令是一个软连接,它被链接到了 dnf-3 命令上。
使用 DNF 来管理软件包,提升了包括用户体验,内存占用,依赖分析,运行速度等多方面内容。
Centos8 使用阿里网络源:
[root@Hengji ~]# wget -O /etc/yum.repos.d/CentOS-8.repo http://mirrors.aliyun.com/repo/Centos-8.repo
--2020-09-15 18:52:00-- http://mirrors.aliyun.com/repo/Centos-8.repo
正在解析主机 mirrors.aliyun.com (mirrors.aliyun.com)... 115.238.192.242, 115.238.192.243, 115.223.16.239, ...
正在连接 mirrors.aliyun.com (mirrors.aliyun.com)|115.238.192.242|:80... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:2595 (2.5K) [application/octet-stream]
正在保存至: “/etc/yum.repos.d/CentOS-8.repo”
/etc/yum.repos.d/CentOS-8 100%[=====================================>] 2.53K --.-KB/s 用时 0.008s
2020-09-15 18:52:00 (313 KB/s) - 已保存 “/etc/yum.repos.d/CentOS-8.repo” [2595/2595])
[root@Hengji ~]# rpm --import https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-Official #导入阿里的公钥
例:安装 centos epel 扩展 yum 源。
注:epel 源是对 centos 系统中自带的 base 源的扩展。
[root@Hengji ~]# yum install epel-release -y
CentOS-8 - Base - mirrors.aliyun.com 191 kB/s | 2.2 MB 00:11
CentOS-8 - Extras - mirrors.aliyun.com 4.0 kB/s | 7.9 kB 00:01
CentOS-8 - AppStream - mirrors.aliyun.com 445 kB/s | 5.8 MB 00:13
...
...
已安装:
epel-release-8-8.el8.noarch
完毕!
[root@Hengji ~]# ls /etc/yum.repos.d/epel.repo #这就是安装的 epel 源
/etc/yum.repos.d/epel.repo
yum 常用操作:
[root@Hengji ~]# yum install -y httpd #安装软件包, -y 直接安装
Extra Packages for Enterprise Linux Modular 8 - x86_64 202 kB/s | 117 kB 00:00
Extra Packages for Enterprise Linux 8 - x86_64 1.5 MB/s | 8.0 MB 00:05
...
...
完毕!
[root@Hengji ~]# yum update #升级软件包,改变软件设置和系统设置,系统版本内核都升级
上次元数据过期检查:0:00:19 前,执行于 2020年09月15日 星期二 18时55分37秒。
依赖关系解决。
无需任何处理。
完毕!
[root@Hengji ~]# yum upgrade #升级软件包,不改变软件设置和系统设置,系统版本升级,内核不改变。工作中推荐使用这种升级方式。
上次元数据过期检查:0:00:47 前,执行于 2020年09月15日 星期二 18时55分37秒。
依赖关系解决。
无需任何处理。
完毕!
[root@Hengji ~]# yum info httpd #查询 rpm 包作用
上次元数据过期检查:0:00:59 前,执行于 2020年09月15日 星期二 18时55分37秒。
已安装的软件包
名称 : httpd
版本 : 2.4.37
发布 : 21.module_el8.2.0+382+15b0afa8
架构 : x86_64
大小 : 4.9 M
源 : httpd-2.4.37-21.module_el8.2.0+382+15b0afa8.src.rpm
仓库 : @System
来自仓库 : AppStream
概况 : Apache HTTP Server
URL : https://httpd.apache.org/
协议 : ASL 2.0
描述 : The Apache HTTP Server is a powerful, efficient, and extensible
: web server.
[root@Hengji ~]# yum provides /usr/bin/find #查看命令是哪个软件包安装的 发现 find 命令是 findutils 包中的文件
上次元数据过期检查:0:01:20 前,执行于 2020年09月15日 星期二 18时55分37秒。
findutils-1:4.6.0-20.el8.x86_64 : The GNU versions of find utilities (find and xargs)
仓库 :@System
匹配来源:
文件名 :/usr/bin/find
findutils-1:4.6.0-20.el8.x86_64 : The GNU versions of find utilities (find and xargs)
仓库 :base
匹配来源:
文件名 :/usr/bin/find
findutils-1:4.6.0-20.el8.x86_64 : The GNU versions of find utilities (find and xargs)
仓库 :c8-media-BaseOS
匹配来源:
文件名 :/usr/bin/find
[root@Hengji ~]# yum -y remove httpd-tools.x86_64 #卸载包
依赖关系解决。
已移除:
centos-logos-httpd-80.5-2.el8.noarch
httpd-2.4.37-21.module_el8.2.0+382+15b0afa8.x86_64
httpd-filesystem-2.4.37-21.module_el8.2.0+382+15b0afa8.noarch
httpd-tools-2.4.37-21.module_el8.2.0+382+15b0afa8.x86_64
mod_http2-1.11.3-3.module_el8.2.0+307+4d18d695.x86_64
完毕!
[root@Hengji ~]# yum search httpd #查找包括 httpd 字符的软件包
上次元数据过期检查:0:04:14 前,执行于 2020年09月15日 星期二 18时55分37秒。
========================================= 名称 精准匹配:httpd =========================================
httpd.x86_64 : Apache HTTP Server
======================================= 名称 和 概况 匹配:httpd =======================================
lighttpd-filesystem.noarch : The basic directory layout for lighttpd
...
=========================================== 名称 匹配:httpd ===========================================
lighttpd.x86_64 : Lightning fast webserver with light system requirements
...
=========================================== 概况 匹配:httpd ===========================================
mod_dav_svn.x86_64 : Apache httpd module for Subversion server
mod_auth_mellon.x86_64 : A SAML 2.0 authentication module for the Apache Httpd Server
yum 报错,注意的几个小问题:
1、确定光盘是否链接,光盘是否挂载
2、配置文件中格式是否正确,字母,符号有没有少写,挂载点和配置文件中设置的是否一致
3、网络源需要联网,操作和 RPM 类似,只是会自动安装依赖项
[root@Hengji ~]# yum grouplist #查看有哪些软件包组
上次元数据过期检查:0:37:39 前,执行于 2020年09月17日 星期四 09时19分23秒。
可用环境组:
服务器
最小安装
工作站
KDE Plasma 工作区
定制操作系统
虚拟化主机
已安装的环境组:
带 GUI 的服务器
已安装组:
容器管理
开发工具
无头系统管理
可用组:
传统 UNIX 兼容性
.NET 核心开发
图形管理工具
网络服务器
RPM 开发工具
科学记数法支持
安全性工具
智能卡支持
系统工具
Fedora Packager
Xfce
语法:yum groupinstall GROUPNAME
yum grouplist #显示中文,如果想变成英文,则执行以一下命令
[root@Hengji ~]# echo $LANG
zh_CN.UTF-8
[root@Hengji ~]# LANG=en_US.UTF-8
[root@Hengji ~]# yum grouplist
Last metadata expiration check: 0:39:42 ago on Thu 17 Sep 2020 09:19:23 AM CST.
Available Environment Groups:
Server
Minimal Install
Workstation
KDE Plasma Workspaces
Custom Operating System
Virtualization Host
Installed Environment Groups:
Server with GUI
Installed Groups:
Container Management
Development Tools
Headless Management
Available Groups:
Legacy UNIX Compatibility
.NET Core Development
Graphical Administration Tools
Network Servers
RPM Development Tools
Scientific Support
Security Tools
Smart Card Support
System Tools
Fedora Packager
Xfce
测试:
当你最小化安装系统后,在源码编译安装软件包时,觉得很需要安装很多依赖包,很痛苦,可以先安装好这个 Development tools 开发工具软件包组。
[root@Hengji ~]# yum groupinstall 'Development tools' #安装开发工具软件包组。
DNF:Dandified YUM,是基于 RPM 的 Linux 发行版的软件包管理器。它用于在 Fedora / RHEL/ CentOS 操作系统中安装,更新和删除软件包。 它是 Fedora 22,CentOS8 和 RHEL8 的默认软件包管理器。 DNF 是 YUM 的下一代版本,并打算在基于 RPM 的系统中替代 YUM。 DNF 功能强大且具有健壮的特征。DNF 使维护软件包组变得容易,并且能够自动解决依赖性问题。
注:目前 DNF 命令和 YUM 命令相互兼容,软件包仓库依旧使用 YUM 仓库。
已安装软件包
[root@Hengji ~]# dnf list installed
Installed Packages
...
...
zstd.x86_64 1.4.2-2.el8 @AppStream
查找软件包
[root@Hengji ~]# dnf search httpd
安装软件包
[root@Hengji ~]# dnf install httpd -y
卸载软件包
[root@Hengji ~]# dnf remove httpd -y
下载软件包
[root@Hengji ~]# dnf download httpd
查看软件包信息
[root@Hengji ~]# dnf info httpd
检查系统中可更新软件包
[root@Hengji ~]# dnf check-update
更新所有软件包
[root@Hengji ~]# dnf update
或者
[root@Hengji ~]# dnf upgrade
更新指定软件包
[root@Hengji ~]# dnf update httpd
列出软件包组
[root@Hengji ~]# dnf grouplist
安装软件包组
[root@Hengji ~]# dnf groupinstall '开发工具'
更新软件包组
[root@Hengji ~]# dnf groupupdate '开发工具'
清空所有缓存
在使用 DNF 的过程中,会因为各种原因在系统中残留各种过时的文件和未完成的编译工程。我们可以使用该命令来删除这些没用的垃圾文件。并且软件仓库中的软件包依赖也会被清空,再次安装软件时则重新下载软件包依赖信息。
[root@Hengji ~]# dnf clean all
[root@Hengji ~]# yum clean all
重新创建新的软件包依赖关系
[root@Hengji ~]# dnf makecache
或者直接
[root@Hengji ~]# yum makecache
或者
[root@Hengji ~]# yum clean all
[root@Hengji ~]# yum list #当清空后, 列出软件列表时,会自动创建新的软件包依赖关系