yum工具的使用

1. rpm的弊端

前面我们讲了下rpm,那么rpm有什么弊端呢?其弊端是显而易见的,当用rpm安装软件时,若遇到有依赖关系的软件,必须先安装依赖的软件才能继续安装我们要安装的软件,当依赖关系很复杂的情况下,这种安装方式就很让人头疼,所以我们需要另一种安装方式来解决这个问题,今天我们要来学习的就是这样一个工具--yum

2. yum的优劣势

yum有什么优势呢?yum最大的优势就是能够解决rpm的依赖问题,yum能够自动解决软件安装时的依赖关系。当然了,有优势就有劣势,人无完人嘛,软件也是一样的,yum的缺陷就是如果在未完成安装的情况下强行中止安装过程,下次再安装时将无法解决依赖关系,Fedora22+、redhat7和centos7等可以通过手动安装dnf工具来解决此问题。dnf是redhat7上用来代替yum的一个工具,其存在的意义就是处理yum的缺陷,但其用法与yum是完全一样的,甚至连选项都是一样的,你可以理解为dnf就是yum,只是换了个名字而已。所以说只要学会了yum就自然会dnf,大家不用担心学了yum又要去学dnf之类的问题

3. 什么是yum及其作用

那么什么是yum呢?yum是yellowdog update manager的简称,它能够实现rpm管理的所有操作,并能够自动解决各rpm包之间的依赖关系。yum是rpm的前端工具,是基于rpm来实现软件的管理的一个工具。你不能用yum去管理windows的exe程序包,也不能用yum去管理ubuntu的deb程序包,只能用yum来管理redhat系列的rpm包

4. 挂载光盘

  • 插入光盘
  • 执行以下命令

5. yum的原理

4692c9d1655022161593b881bb394864.png

yum的工作需要两部分来合作,一部分是yum服务器,另一部分就是client的yum工具。下面分别介绍两部分工作原理。

yum服务器端工作原理
所有要发行的rpm包都放在yum服务器上以提供别人来下载,rpm包根据kernel的版本号,cpu的版本号分别编译发布。yum服务器只要提供简单的下载就可以了,ftp或者http的形式都可以。yum服务器有一个最重要的环节就是整理出每个rpm包的基本信息,包括rpm包对应的版本号、conf文件、binary信息,以及很关键的依赖信息。在yum服务器上提供了createrepo工具,用于把rpm包的基本概要信息做成一张“清单”,这张“清单”就是描述每个rpm包的spec文件中信息。

client端工作原理
client每次调用yum install或者search的时候,都会去解析/etc/yum.repos.d下面所有以.repo结尾的配置文件,这些配置文件指定了yum服务器的地址。yum会定期去更新yum服务器上的rpm包清单,然后把清单下载保存到yum客户端自己的cache里面,根据/etc/yum.conf里配置(默认是/var/cache/yum下面),每次调用yum装包的时候都会去这个cache目录下去找清单,根据清单里的rpm包描述从而来确定安装包的名字、版本号、所需要的依赖包等,然后再去yum服务器下载rpm安装。(前提是不存在rpm包的cache)

[root@mr ~]# ls /var/cache/yum
ls: cannot access '/var/cache/yum': No such file or directory
[root@mr ~]# ls /var/cache/dnf
appstream-773ef6463612e8e2  baseos-filenames.solvx   extras-filenames.solvx  tempfiles.json
appstream-filenames.solvx   baseos.solv              extras.solv
appstream.solv              expired_repos.json       last_makecache
baseos-055ffcb2ec25a27f     extras-9705a089504ff150  packages.db
[root@mr ~]# 
[root@mr ~]# ls /etc/yum
pluginconf.d  protected.d  vars
[root@mr ~]# ls /etc/yum.repos.d/
CentOS-Stream-AppStream.repo  CentOS-Stream-HighAvailability.repo
CentOS-Stream-BaseOS.repo     CentOS-Stream-Media.repo
CentOS-Stream-Debuginfo.repo  CentOS-Stream-PowerTools.repo
CentOS-Stream-Extras.repo     CentOS-Stream-RealTime.repo
[root@mr ~]# 

6. yum的配置文件

  • 配置文件有哪些:

    • /etc/yum.conf 作用:为所有仓库提供公共配置
    • /etc/yum.repos.d/*.repo 作用:为仓库的指向提供配置
  • yum的repo配置文件中可用的变量:

    • $releaseversion:当前OS的发行版的主版本号
    • $arch:平台类型
    • $basearch:基础平台

为yum定义repo文件:

[Repo_Name]:仓库名称
name:描述信息
baseurl:仓库的具体路径,接受以下三种类型
ftp://
http://
file:///
enabled:可选值{1|0},1为启用此仓库,0为禁用此仓库
gpgcheck:可选值{1|0},1为检查软件包来源合法性,0为不检查来源
如果gpgcheck设为1,则必须用gpgkey定义密钥文件的具体路径
gpgkey=/PATH/TO/KEY
vim /etc/yum.conf
cachedir=/var/cache/yum/$basearch/$releasever //缓存目录
keepcache=0 //缓存软件包, 1启动 0 关闭
debuglevel=2 //调试级别
logfile=/var/log/yum.log //日志记录位置
exactarch=1 //检查平台是否兼容
obsoletes=1 //检查包是否废弃
gpgcheck=1 //检查来源是否合法,需要有制作者的公钥信息
plugins=1 //是否启用插件
tolerant={1|0} //容错功能,1为开启,0为关闭,当设为0时,如果用yum安装多个软件包且其中某个软件包已经安装过就会报错;当设为1时,当要安装的软件已经安装时自动忽略
installonly_limit=5
bugtracker_url
“#metadata_expire=90m //每小时手动检查元数据# in /etc/yum.repos.d //包含repos.d目录

[root@mr ~]# cat /etc/yum.conf
[main]
gpgcheck=1
installonly_limit=3
clean_requirements_on_remove=True
best=True
skip_if_unavailable=False
[root@mr ~]# 

7. yum仓库管理

7.1 yum本地仓库

  • 挂载光盘参照本章第4部分内容
  • 复制光盘内容到yum服务器
  • 配置repo文件
[root@mr ~]# ls
anaconda-ks.cfg
[root@mr ~]# cd /etc/yum.repos.d/
[root@mr yum.repos.d]# ls
CentOS-Stream-AppStream.repo  CentOS-Stream-HighAvailability.repo
CentOS-Stream-BaseOS.repo     CentOS-Stream-Media.repo
CentOS-Stream-Debuginfo.repo  CentOS-Stream-PowerTools.repo
CentOS-Stream-Extras.repo     CentOS-Stream-RealTime.repo
[root@mr yum.repos.d]# rm -rf *
[root@mr yum.repos.d]# ls
[root@mr yum.repos.d]# pwd
/etc/yum.repos.d
[root@mr yum.repos.d]# ls
[root@mr yum.repos.d]# vi marui.repo

[BaseOS]
name=baseos
baseurl=file:///mnt/BaseOS
gpgcheck=0
enabled=1
[AppStream]
name=appstream
baseurl=file:///mnt/AppStream
gpgcheck=0
enabled=1
[root@mr yum.repos.d]# mount /dev/cdrom /mnt
mount: /mnt: WARNING: device write-protected, mounted read-only.
[root@mr yum.repos.d]# ls /mnt/
AppStream  BaseOS  EFI  images  isolinux  LICENSE  media.repo  TRANS.TBL
[root@mr yum.repos.d]# cat marui.repo
[BaseOS]
name=baseos
baseurl=file:///mnt/BaseOS
gpgcheck=0
enabled=1
[AppStream]
name=appstream
baseurl=file:///mnt/AppStream
gpgcheck=0
enabled=1

  • 清空yum本地缓存
  • 检验yum本地仓库
[root@mr ~]#dnf clean all
21 files removed
[root@mr ~]#dnf list all
......
zsh.x86_64                              5.5.1-6.el8_1.2                            BaseOS   
zsh-html.noarch                         5.5.1-6.el8_1.2                            AppStream
zstd.x86_64                             1.4.4-1.el8                                AppStream
zziplib.i686                            0.13.68-8.el8                              AppStream
zziplib.x86_64                          0.13.68-8.el8                              AppStream
zziplib-utils.x86_64                    0.13.68-8.el8                              AppStream
[root@mr ~]# 

7.2 yum网络仓库

  • 官方网络yum仓库(国外)
  • 阿里云yum仓库
[root@mr ~]# cd /etc/yum.repos.d/
[root@mr yum.repos.d]# ls
 marui.repo
[root@mr yum.repos.d]# rm -f marui.repo 
[root@mr yum.repos.d]# ls
[root@mr yum.repos.d]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  2495  100  2495    0     0  12927      0 --:--:-- --:--:-- --:--:-- 12927
[root@mr yum.repos.d]# ls
CentOS-Base.repo
[root@mr yum.repos.d]# sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
[root@mr yum.repos.d]# cd
[root@mr ~]# dnf clean all
13 files removed
[root@mr ~]# dnf list sll
......
zziplib.i686                               0.13.68-9.el8                           AppStream
zziplib.x86_64                             0.13.68-9.el8                           AppStream
zziplib-utils.x86_64                       0.13.68-9.el8                           AppStream
[root@mr ~]# 

  • 163yum仓库
    abc9f62a1decf3cde5868334aa054175.png
    6fe41c214f079ce71df5c3ea2ea809a8.png

  • xx大学yum仓库
    4435d640636260eef4567e4fded9d233.png
    c7793843cc3c04879c9a65a0b89c0ee8.png

  • epel源

[root@mr ~]# yum install -y https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpmLast metadata expiration check: 0:04:16 ago on Mon 11 Jul 2022 06:51:57 PM CST.
epel-release-latest-8.noarch.rpm                            200 kB/s |  24 kB     00:00    
Dependencies resolved.
============================================================================================
 Package                Architecture     Version               Repository              Size
============================================================================================
Installing:
 epel-release           noarch           8-16.el8              @commandline            24 k

Transaction Summary
============================================================================================
Install  1 Package

Total size: 24 k
Installed size: 34 k
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                    1/1 
  Installing       : epel-release-8-16.el8.noarch                                       1/1 
  Running scriptlet: epel-release-8-16.el8.noarch                                       1/1 
Many EPEL packages require the CodeReady Builder (CRB) repository.
It is recommended that you run /usr/bin/crb enable to enable the CRB repository.

  Verifying        : epel-release-8-16.el8.noarch                                       1/1 
Installed products updated.

Installed:
  epel-release-8-16.el8.noarch                                                              

Complete!
[root@mr ~]# sed -i 's|^#baseurl=https://download.example/pub|baseurl=https://mirrors.aliyun.com|' /etc/yum.repos.d/epel*
[root@mr ~]# sed -i 's|^metalink|#metalink|' /etc/yum.repos.d/epel*
[root@mr ~]# 

7.3 软件官方仓库

// 源查找方式基本一致,zabbix,mysql,saltstack,openstack等等,上官网找

7.4 redhat7使用centos7的yum源

//下载base和epel仓库

8. yum管理软件

8.1 yum命令语法

yum [options] [command] [package ...]

8.2 常用的options:

--nogpgcheck //如果从网上下载包有时会检查gpgkey,此时可以使用此命令跳过gpgkey的检查
-y //自动回答为"yes"
-q //静默模式,安装时不输出信息至标准输出
--disablerepo=repoidglob //临时禁用此处指定的repo
--enablerepo=repoidglob //临时启用此处指定的repo
--noplugins //禁用所有插件

8.3 常用的command:

list //列表
all //默认项
available //列出仓库中有的,但尚未安装的所有可用的包

[root@mr ~]# dnf list available
......
zstd.x86_64                                1.4.4-1.el8                             AppStream
zswap-cli.x86_64                           0.9.0-1.el8                             epel     
zvbi.x86_64                                0.2.35-9.el8                            epel     
zvbi-devel.x86_64                          0.2.35-9.el8                            epel     
zvbi-fonts.noarch                          0.2.35-9.el8                            epel     
zziplib.i686                               0.13.68-9.el8                           AppStream
zziplib.x86_64                             0.13.68-9.el8                           AppStream
zziplib-utils.x86_64                       0.13.68-9.el8                           AppStream
[root@mr ~]# 
installed   //列出已经安装的包
[root@mr ~]# dnf list installed
......
xmlsec1-openssl.x86_64                   1.2.25-4.el8                          @AppStream   
xz.x86_64                                5.2.4-3.el8                           @anaconda    
xz-libs.x86_64                           5.2.4-3.el8                           @anaconda    
yum.noarch                               4.4.2-2.el8                           @anaconda    
zlib.x86_64                              1.2.11-17.el8                         @anaconda    
[root@mr ~]# 

updates     //可用的升级
[root@mr ~]# dnf list updates
......
xz.x86_64                                5.2.4-3.el8                           @anaconda    
xz-libs.x86_64                           5.2.4-3.el8                           @anaconda    
yum.noarch                               4.4.2-2.el8                           @anaconda    
zlib.x86_64                              1.2.11-17.el8                         @anaconda    
[root@mr ~]# 

clean //清理缓存
packages
headers
metadata
dbcache
all

repolist //显示repo列表及其简要信息
all
enabled //默认项
disabled

[root@mr ~]# dnf repolist
repo id                  repo name
AppStream                CentOS-8.5.2111 - AppStream - mirrors.aliyun.com
base                     CentOS-8.5.2111 - Base - mirrors.aliyun.com
epel                     Extra Packages for Enterprise Linux 8 - x86_64
epel-modular             Extra Packages for Enterprise Linux Modular 8 - x86_64
extras                   CentOS-8.5.2111 - Extras - mirrors.aliyun.com
[root@mr ~]# 

install //安装
yum install packages [...]

[root@mr ~]# ls
anaconda-ks.cfg
[root@mr ~]# dnf install -y wget
Last metadata expiration check: 0:02:04 ago on Mon 11 Jul 2022 07:19:04 PM CST.
Module yaml error: Unexpected key in data: static_context [line 9 col 3]
Module yaml error: Unexpected key in data: static_context [line 9 col 3]
Dependencies resolved.
============================================================================================
 Package          Architecture       Version                    Repository             Size
============================================================================================
Installing:
 wget             x86_64             1.19.5-10.el8              AppStream             734 k

Transaction Summary
============================================================================================
Install  1 Package

Total download size: 734 k
Installed size: 2.8 M
Downloading Packages:
wget-1.19.5-10.el8.x86_64.rpm                               926 kB/s | 734 kB     00:00    
--------------------------------------------------------------------------------------------
Total                                                       923 kB/s | 734 kB     00:00     
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                    1/1 
  Installing       : wget-1.19.5-10.el8.x86_64                                          1/1 
  Running scriptlet: wget-1.19.5-10.el8.x86_64                                          1/1 
  Verifying        : wget-1.19.5-10.el8.x86_64                                          1/1 
Installed products updated.

Installed:
  wget-1.19.5-10.el8.x86_64                                                                 

Complete!
[root@mr ~]# 

update //升级
yum update packages [...]
update_to //升级为指定版本

[root@mr ~]# dnf list updates
......
vim-minimal.x86_64                              2:8.0.1763-16.el8                  base     
virt-what.x86_64                                1.18-12.el8                        base     
which.x86_64                                    2.21-16.el8                        base     
xfsprogs.x86_64                                 5.0.0-9.el8                        base     
yum.noarch                                      4.7.0-4.el8                        base     
[root@mr ~]# dnf -y update curl
Last metadata expiration check: 0:07:42 ago on Mon 11 Jul 2022 07:19:04 PM CST.
Module yaml error: Unexpected key in data: static_context [line 9 col 3]
Module yaml error: Unexpected key in data: static_context [line 9 col 3]
Dependencies resolved.
============================================================================================
 Package                Architecture     Version                       Repository      Size
============================================================================================
Upgrading:
 curl                   x86_64           7.61.1-22.el8                 base           351 k
 libcurl                x86_64           7.61.1-22.el8                 base           301 k
 openssl                x86_64           1:1.1.1k-5.el8_5              base           709 k
 openssl-libs           x86_64           1:1.1.1k-5.el8_5              base           1.5 M

Transaction Summary
============================================================================================
Upgrade  4 Packages

Total download size: 2.8 M
Downloading Packages:
(1/4): libcurl-7.61.1-22.el8.x86_64.rpm                     723 kB/s | 301 kB     00:00    
(2/4): curl-7.61.1-22.el8.x86_64.rpm                        836 kB/s | 351 kB     00:00    
(3/4): openssl-1.1.1k-5.el8_5.x86_64.rpm                    781 kB/s | 709 kB     00:00    
(4/4): openssl-libs-1.1.1k-5.el8_5.x86_64.rpm               942 kB/s | 1.5 MB     00:01    
--------------------------------------------------------------------------------------------
Total                                                       1.4 MB/s | 2.8 MB     00:02     
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                    1/1 
  Upgrading        : openssl-libs-1:1.1.1k-5.el8_5.x86_64                               1/8 
  Running scriptlet: openssl-libs-1:1.1.1k-5.el8_5.x86_64                               1/8 
  Upgrading        : libcurl-7.61.1-22.el8.x86_64                                       2/8 
  Upgrading        : curl-7.61.1-22.el8.x86_64                                          3/8 
  Upgrading        : openssl-1:1.1.1k-5.el8_5.x86_64                                    4/8 
  Cleanup          : openssl-1:1.1.1g-11.el8.x86_64                                     5/8 
  Cleanup          : curl-7.61.1-17.el8.x86_64                                          6/8 
  Cleanup          : libcurl-7.61.1-17.el8.x86_64                                       7/8 
  Cleanup          : openssl-libs-1:1.1.1g-11.el8.x86_64                                8/8 
  Running scriptlet: openssl-libs-1:1.1.1g-11.el8.x86_64                                8/8 
  Verifying        : curl-7.61.1-22.el8.x86_64                                          1/8 
  Verifying        : curl-7.61.1-17.el8.x86_64                                          2/8 
  Verifying        : libcurl-7.61.1-22.el8.x86_64                                       3/8 
  Verifying        : libcurl-7.61.1-17.el8.x86_64                                       4/8 
  Verifying        : openssl-1:1.1.1k-5.el8_5.x86_64                                    5/8 
  Verifying        : openssl-1:1.1.1g-11.el8.x86_64                                     6/8 
  Verifying        : openssl-libs-1:1.1.1k-5.el8_5.x86_64                               7/8 
  Verifying        : openssl-libs-1:1.1.1g-11.el8.x86_64                                8/8 
Installed products updated.

Upgraded:
  curl-7.61.1-22.el8.x86_64                  libcurl-7.61.1-22.el8.x86_64                   
  openssl-1:1.1.1k-5.el8_5.x86_64            openssl-libs-1:1.1.1k-5.el8_5.x86_64           

Complete!
[root@mr ~]# rpm -qa|grep curl
curl-7.61.1-22.el8.x86_64
libcurl-7.61.1-22.el8.x86_64 
[root@mr ~]# dnf list updates|grep curl
[root@mr ~]# 

downgrade package1 [package2 ...] //降级

remove|erase //卸载

[root@mr ~]# which wget
/usr/bin/wget
[root@mr ~]# dnf -y remove wget
Dependencies resolved.
============================================================================================
 Package               Architecture     Version                  Repository            Size
============================================================================================
Removing:
 wget                  x86_64           1.19.5-10.el8            @AppStream           2.8 M
Removing unused dependencies:
 libmetalink           x86_64           0.1.3-7.el8              @anaconda             75 k

Transaction Summary
============================================================================================
Remove  2 Packages

Freed space: 2.8 M
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                    1/1 
  Running scriptlet: wget-1.19.5-10.el8.x86_64                                          1/2 
  Erasing          : wget-1.19.5-10.el8.x86_64                                          1/2 
  Erasing          : libmetalink-0.1.3-7.el8.x86_64                                     2/2 
  Running scriptlet: libmetalink-0.1.3-7.el8.x86_64                                     2/2 
  Verifying        : libmetalink-0.1.3-7.el8.x86_64                                     1/2 
  Verifying        : wget-1.19.5-10.el8.x86_64                                          2/2 
Installed products updated.

Removed:
  libmetalink-0.1.3-7.el8.x86_64                  wget-1.19.5-10.el8.x86_64                 

Complete!
[root@mr ~]# which wget
/usr/bin/which: no wget in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)
[root@mr ~]# 

info //显示rpm -qi package的结果
yum info packages

[root@mr ~]# dnf info curl
Last metadata expiration check: 0:14:07 ago on Mon 11 Jul 2022 07:19:04 PM CST.
Installed Packages
Name         : curl
Version      : 7.61.1
Release      : 22.el8
Architecture : x86_64
Size         : 684 k
Source       : curl-7.61.1-22.el8.src.rpm
Repository   : @System
From repo    : base
Summary      : A utility for getting files from remote servers (FTP, HTTP, and others)
URL          : https://curl.haxx.se/
License      : MIT
Description  : curl is a command line tool for transferring data with URL syntax, supporting
             : FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS, FILE,
             : IMAP, SMTP, POP3 and RTSP.  curl supports SSL certificates, HTTP POST, HTTP
             : PUT, FTP uploading, HTTP form based upload, proxies, cookies, user+password
             : authentication (Basic, Digest, NTLM, Negotiate, kerberos...), file transfer
             : resume, proxy tunneling and a busload of other useful tricks.

[root@mr ~]# 


provides|whatprovides //查看指定的文件或特性是由哪个包安装生成的

[root@mr ~]#  rpm -qf /etc/passwd
setup-2.12.2-6.el8.noarch
[root@mr ~]# dnf provides /etc/passwd
Last metadata expiration check: 0:16:51 ago on Mon 11 Jul 2022 07:19:04 PM CST.
setup-2.12.2-6.el8.noarch : A set of system configuration and setup files
Repo        : @System
Matched from:
Filename    : /etc/passwd

setup-2.12.2-6.el8.noarch : A set of system configuration and setup files
Repo        : base
Matched from:
Filename    : /etc/passwd

[root@mr ~]# 

search string1 [string2 ...] //以指定的关键字搜索程序包名及summary信息

[root@mr ~]# dnf search wget
Last metadata expiration check: 0:18:58 ago on Mon 11 Jul 2022 07:19:04 PM CST.
================================ Name Exactly Matched: wget ================================
wget.x86_64 : A utility for retrieving files using the HTTP or FTP protocols
[root@mr ~]# 
[root@mr ~]# dnf search wget
Last metadata expiration check: 0:18:58 ago on Mon 11 Jul 2022 07:19:04 PM CST.
================================ Name Exactly Matched: wget ================================
wget.x86_64 : A utility for retrieving files using the HTTP or FTP protocols
[root@mr ~]# dnf search httpd
Last metadata expiration check: 0:19:39 ago on Mon 11 Jul 2022 07:19:04 PM CST.
Module yaml error: Unexpected key in data: static_context [line 9 col 3]
Module yaml error: Unexpected key in data: static_context [line 9 col 3]
=============================== Name Exactly Matched: httpd ================================
httpd.x86_64 : Apache HTTP Server
============================== Name & Summary Matched: httpd ===============================
centos-logos-httpd.noarch : CentOS-related icons and pictures used by httpd
dmlite-apache-httpd.x86_64 : Apache HTTPD frontend for dmlite
keycloak-httpd-client-install.noarch : Tools to configure Apache HTTPD as Keycloak client
lighttpd-fastcgi.x86_64 : FastCGI module and spawning helper for lighttpd and PHP
                        : configuration
lighttpd-filesystem.noarch : The basic directory layout for lighttpd
lighttpd-mod_authn_gssapi.x86_64 : Authentication module for lighttpd that uses GSSAPI
lighttpd-mod_authn_mysql.x86_64 : Authentication module for lighttpd that uses a MySQL
                                : database
lighttpd-mod_authn_pam.x86_64 : Authentication module for lighttpd that uses PAM
lighttpd-mod_mysql_vhost.x86_64 : Virtual host module for lighttpd that uses a MySQL
                                : database
pagure-web-apache-httpd.noarch : Apache HTTPD configuration for Pagure
python3-keycloak-httpd-client-install.noarch : Tools to configure Apache HTTPD as Keycloak
                                             : client
radicale3-httpd.noarch : httpd config for Radicale
=================================== Name Matched: httpd ====================================
httpd-devel.x86_64 : Development interfaces for the Apache HTTP server
httpd-filesystem.noarch : The basic directory layout for the Apache HTTP server
httpd-manual.noarch : Documentation for the Apache HTTP server
httpd-tools.x86_64 : Tools for use with the Apache HTTP Server
libmicrohttpd.i686 : Lightweight library for embedding a webserver in applications
libmicrohttpd.x86_64 : Lightweight library for embedding a webserver in applications
lighttpd.x86_64 : Lightning fast webserver with light system requirements
perl-Test-Fake-HTTPD.noarch : Fake HTTP server module for testing
sysusage-httpd.noarch : Apache configuration for sysusage
thttpd.x86_64 : A tiny, turbo, throttleable lightweight HTTP server
================================== Summary Matched: httpd ==================================
mod_auth_mellon.x86_64 : A SAML 2.0 authentication module for the Apache Httpd Server
mod_dav_svn.x86_64 : Apache httpd module for Subversion server
[root@mr ~]# 

deplist package [package2 ...] //显示指定包的依赖关系

[root@mr ~]# dnf deplist httpd
Last metadata expiration check: 0:21:29 ago on Mon 11 Jul 2022 07:19:04 PM CST.
package: httpd-2.4.37-41.module_el8.5.0+977+5653bbea.x86_64
  dependency: /bin/sh
   provider: bash-4.4.20-2.el8.x86_64
  dependency: /etc/mime.types
   provider: mailcap-2.1.48-3.el8.noarch
......
dependency: system-logos(httpd-logo-ng)
   provider: centos-logos-httpd-85.8-2.el8.noarch
  dependency: systemd-units
   provider: systemd-239-51.el8_5.2.i686
   provider: systemd-239-51.el8_5.2.x86_64
[root@mr ~]# 

history //查看yum的历史事务信息

[root@mr ~]# dnf history
ID     | Command line                          | Date and time    | Action(s)      | Altered
--------------------------------------------------------------------------------------------
     5 | -y remove wget                        | 2022-07-11 19:31 | Removed        |    2   
     4 | -y update curl                        | 2022-07-11 19:26 | Upgrade        |    4   
     3 | install -y wget                       | 2022-07-11 19:21 | Install        |    1   
     2 | install -y https://mirrors.aliyun.com | 2022-07-11 18:56 | Install        |    1 EE
     1 |                                       | 2022-07-06 09:33 | Install        |  456 EE
[root@mr ~]# 

localinstall //安装本地rpm包,自动解决依赖关系
grouplist //列出可用的组

groupinstall "group name" //安装一组软件

createrepo命令 //创建yum仓库的元数据信息

8.4 具体实例

8.4.1 搜索软件包

//列出软件仓库中可用的软件

//进行模糊查找

//列出软件包详情

8.4.2 安装软件包

//安装软件只需要给出软件名称

//安装过程中分析依赖关系后, 直接安装, 无需交互

//安装本地的rpm包, 如果有依赖关系, 会自动从软件仓库中下载所需依赖(非来自.repo定义的软件仓库)

//安装网络上rpm包

8.4.3 重装软件包

//检查软件是否存在

[root@mr ~]# dnf list all
......
zvbi-devel.x86_64                          0.2.35-9.el8                            epel     
zvbi-fonts.noarch                          0.2.35-9.el8                            epel     
zziplib.i686                               0.13.68-9.el8                           AppStream
zziplib.x86_64                             0.13.68-9.el8                           AppStream
zziplib-utils.x86_64                       0.13.68-9.el8                           AppStream
[root@mr ~]# 

//检查vsftpd软件配置文件

//不小心删除vsftpd配置文件

//重新安装软件

//再次检查

8.4.4 更新软件包

//对比Linux已安装的软件和yum仓库中的软件, 有哪些需要升级

//更新软件

8.4.5 删除软件包

//先安装一个samba软件

//删除该软件包,不会删除依赖, 但是我们尽可能不要使用删除软件操作

8.4.6 与仓库相关的命令

//列出yum源可用的软件仓库

//列出全部yum源可用和禁用的仓库

//查看这个文件或命令属于哪个包

8.4.7 与缓存相关的命令

//缓存yum源软件仓库, xml元数据文件
//缓存软件包, 修改yum全局配置文件
//查看缓存的xml文件
//查看缓存软件包路径

//另一种缓存rpm包方式
//1.安装插件支持只下载软件包不安装
//2.将软件下载至指定目录
//清除所有yum缓存
//只清除缓存的软件包

[root@mr ~]# dnf clean all
36 files removed
[root@mr ~]# dnf makecache
CentOS-8.5.2111 - Base - mirrors.aliyun.com                 6.7 MB/s | 4.6 MB     00:00    
CentOS-8.5.2111 - Extras - mirrors.aliyun.com               180 kB/s |  10 kB     00:00    
CentOS-8.5.2111 - AppStream - mirrors.aliyun.com            5.6 MB/s | 8.4 MB     00:01    
Extra Packages for Enterprise Linux Modular 8 - x86_64      2.4 MB/s | 1.0 MB     00:00    
Extra Packages for Enterprise Linux 8 - x86_64              5.6 MB/s |  12 MB     00:02    
Metadata cache created.
[root@mr ~]# rpm -qa|grep yum
yum-4.4.2-2.el8.noarch
[root@mr ~]# rpm -qa|grep dnf
libdnf-0.55.0-1.el8.x86_64
dnf-4.4.2-2.el8.noarch
dnf-data-4.4.2-2.el8.noarch
python3-libdnf-0.55.0-1.el8.x86_64
python3-dnf-4.4.2-2.el8.noarch
python3-dnf-plugins-core-4.0.18-1.el8.noarch
dnf-plugin-subscription-manager-1.28.5-1.el8.x86_64
dnf-plugins-core-4.0.18-1.el8.noarch
[root@mr ~]# dnf list all|grep yum-plugin-downloadonly
[root@mr ~]# dnf list all|grep dnf-plugin-downloadonly
[root@mr ~]# dnf list all|grep yum
yum.noarch                                                        4.4.2-2.el8                                            @anaconda    
yum.noarch                                                        4.7.0-4.el8                                            base         
yum-utils.noarch                                                  4.0.21-3.el8                                           base         
[root@mr ~]# dnf list all|grep dnf
dnf.noarch                                                        4.4.2-2.el8                                            @anaconda    
dnf-data.noarch                                                   4.4.2-2.el8                                            @anaconda    
dnf-plugin-subscription-manager.x86_64                            1.28.5-1.el8                                           @anaconda    

......
python3-dnf-plugin-versionlock.noarch                             4.0.21-3.el8                                           base         
python3-dnf-plugins-core.noarch                                   4.0.21-3.el8                                           base         
python3-libdnf.x86_64                                             0.63.0-3.el8                                           base         
[root@mr ~]# dnf -y install --downloadonly --downloaddir /tmp/ httpd
Last metadata expiration check: 0:06:39 ago on Mon 11 Jul 2022 07:48:02 PM CST.
Dependencies resolved.
============================================================================================
 Package              Arch     Version                                    Repository   Size
============================================================================================
Installing:
 httpd                x86_64   2.4.37-43.module_el8.5.0+1022+b541f3b1     AppStream   1.4 M
Installing dependencies:
 apr                  x86_64   1.6.3-12.el8                               AppStream   129 k
 apr-util             x86_64   1.6.1-6.el8                                AppStream   105 k
 centos-logos-httpd   noarch   85.8-2.el8                                 base         75 k
 httpd-filesystem     noarch   2.4.37-43.module_el8.5.0+1022+b541f3b1     AppStream    39 k
 httpd-tools          x86_64   2.4.37-43.module_el8.5.0+1022+b541f3b1     AppStream   107 k
 mailcap              noarch   2.1.48-3.el8                               base         39 k
 mod_http2            x86_64   1.15.7-3.module_el8.4.0+778+c970deab       AppStream   154 k
Installing weak dependencies:
 apr-util-bdb         x86_64   1.6.1-6.el8                                AppStream    25 k
 apr-util-openssl     x86_64   1.6.1-6.el8                                AppStream    27 k
Enabling module streams:
 httpd                         2.4                                                         

Transaction Summary
============================================================================================
Install  10 Packages

Total download size: 2.1 M
Installed size: 5.6 M
DNF will only download packages for the transaction.
Downloading Packages:
(1/10): mailcap-2.1.48-3.el8.noarch.rpm                     542 kB/s |  39 kB     00:00    
(2/10): apr-1.6.3-12.el8.x86_64.rpm                         1.8 MB/s | 129 kB     00:00    
(3/10): centos-logos-httpd-85.8-2.el8.noarch.rpm            788 kB/s |  75 kB     00:00    
(4/10): apr-util-bdb-1.6.1-6.el8.x86_64.rpm                 808 kB/s |  25 kB     00:00    
(5/10): apr-util-openssl-1.6.1-6.el8.x86_64.rpm             924 kB/s |  27 kB     00:00    
(6/10): apr-util-1.6.1-6.el8.x86_64.rpm                     1.5 MB/s | 105 kB     00:00    
(7/10): httpd-filesystem-2.4.37-43.module_el8.5.0+1022+b541 806 kB/s |  39 kB     00:00    
(8/10): httpd-tools-2.4.37-43.module_el8.5.0+1022+b541f3b1. 1.6 MB/s | 107 kB     00:00    
(9/10): mod_http2-1.15.7-3.module_el8.4.0+778+c970deab.x86_ 2.3 MB/s | 154 kB     00:00    
(10/10): httpd-2.4.37-43.module_el8.5.0+1022+b541f3b1.x86_6 3.2 MB/s | 1.4 MB     00:00    
--------------------------------------------------------------------------------------------
Total                                                       3.8 MB/s | 2.1 MB     00:00     
Complete!
The downloaded packages were saved in cache until the next successful transaction.
You can remove cached packages by executing 'dnf clean packages'.
[root@mr ~]# ls /tmp/
apr-1.6.3-12.el8.x86_64.rpm
apr-util-1.6.1-6.el8.x86_64.rpm
apr-util-bdb-1.6.1-6.el8.x86_64.rpm
apr-util-openssl-1.6.1-6.el8.x86_64.rpm
centos-logos-httpd-85.8-2.el8.noarch.rpm
httpd-2.4.37-43.module_el8.5.0+1022+b541f3b1.x86_64.rpm
httpd-filesystem-2.4.37-43.module_el8.5.0+1022+b541f3b1.noarch.rpm
httpd-tools-2.4.37-43.module_el8.5.0+1022+b541f3b1.x86_64.rpm
ks-script-tfbfsgp1
mailcap-2.1.48-3.el8.noarch.rpm
mod_http2-1.15.7-3.module_el8.4.0+778+c970deab.x86_64.rpm
vmware-root_916-2689078442
vmware-root_960-2999133023
[root@mr ~]# rpm -qa|grep httpd
[root@mr ~]# 

8.4.8 与包组相关的命令

//列出已经安装和所有可使用的软件组
//安装一整个组的软件
//yum删除包组

[root@mr ~]# dnf grouplist
Last metadata expiration check: 0:09:23 ago on Mon 11 Jul 2022 07:48:02 PM CST.
Available Environment Groups:
   Server with GUI
   Server
   Workstation
   KDE Plasma Workspaces
   Custom Operating System
   Virtualization Host
Installed Environment Groups:
   Minimal Install
Available Groups:
   Legacy UNIX Compatibility
   Container Management
   Development Tools
   .NET Core Development
   Graphical Administration Tools
   Headless Management
   Network Servers
   RPM Development Tools
   Scientific Support
   Security Tools
   Smart Card Support
   System Tools
   Fedora Packager
   Xfce
[root@mr ~]# 
[root@mr ~]# dnf groupinstall "Development Tools" -y
......
xorg-x11-font-utils-1:7.5-41.el8.x86_64                                                   
  xorg-x11-fonts-ISO8859-1-100dpi-7.5-19.el8.noarch                                         
  xorg-x11-server-utils-7.7-27.el8.x86_64                                                   
  xz-devel-5.2.4-3.el8.x86_64                                                               
  zip-3.0-23.el8.x86_64                                                                     
  zlib-devel-1.2.11-17.el8.x86_64                                                           
  zstd-1.4.4-1.el8.x86_64                                                                   

Complete!
[root@mr ~]# 

8.4.9 与历史记录相关的命令

//查看历史执行yum命令
//查询历史执行yum命令ID详细信息
//撤销历史执行过的yum命令

[root@mr ~]# dnf history
ID     | Command line                          | Date and time    | Action(s)      | Altered
--------------------------------------------------------------------------------------------
     6 | groupinstall Development Tools -y     | 2022-07-11 19:59 | I, U           |  221 EE
     5 | -y remove wget                        | 2022-07-11 19:31 | Removed        |    2   
     4 | -y update curl                        | 2022-07-11 19:26 | Upgrade        |    4   
     3 | install -y wget                       | 2022-07-11 19:21 | Install        |    1   
     2 | install -y https://mirrors.aliyun.com | 2022-07-11 18:56 | Install        |    1 EE
     1 |                                       | 2022-07-06 09:33 | Install        |  456 EE
[root@mr ~]# 
[root@mr ~]# dnf history info 5
Transaction ID : 5
Begin time     : Mon 11 Jul 2022 07:31:51 PM CST
Begin rpmdb    : 455:7cae6512624862641ac740195b49852c32ac3087
End time       : Mon 11 Jul 2022 07:31:51 PM CST (0 seconds)
End rpmdb      : 453:4a2cb5b7cb8e35905647301449da3b27ce700e20
User           : root <root>
Return-Code    : Success
Releasever     : 8
Command Line   : -y remove wget
Comment        : 
Packages Altered:
    Removed libmetalink-0.1.3-7.el8.x86_64 @@System
    Removed wget-1.19.5-10.el8.x86_64      @@System
[root@mr ~]# 
[root@mr ~]# dnf grouplist
Last metadata expiration check: 0:16:18 ago on Mon 11 Jul 2022 07:48:02 PM CST.
Module yaml error: Unexpected key in data: static_context [line 9 col 3]
Module yaml error: Unexpected key in data: static_context [line 9 col 3]
Available Environment Groups:
   Server with GUI
   Server
   Workstation
   KDE Plasma Workspaces
   Custom Operating System
   Virtualization Host
Installed Environment Groups:
   Minimal Install
Installed Groups:
   Development Tools
Available Groups:
   Legacy UNIX Compatibility
   Container Management
   .NET Core Development
   Graphical Administration Tools
   Headless Management
   Network Servers
   RPM Development Tools
   Scientific Support
   Security Tools
   Smart Card Support
   System Tools
   Fedora Packager
   Xfce
[root@mr ~]# dnf history undo 5
Last metadata expiration check: 0:16:41 ago on Mon 11 Jul 2022 07:48:02 PM CST.
Module yaml error: Unexpected key in data: static_context [line 9 col 3]
Module yaml error: Unexpected key in data: static_context [line 9 col 3]
Undoing transaction 5, from Mon 11 Jul 2022 07:31:51 PM CST
    Removed libmetalink-0.1.3-7.el8.x86_64 @@System
    Removed wget-1.19.5-10.el8.x86_64      @@System
Dependencies resolved.
============================================================================================
 Package               Architecture     Version                   Repository           Size
============================================================================================
Installing:
 libmetalink           x86_64           0.1.3-7.el8               base                 32 k
 wget                  x86_64           1.19.5-10.el8             AppStream           734 k

Transaction Summary
============================================================================================
Install  2 Packages

Total download size: 766 k
Installed size: 2.8 M
Is this ok [y/N]: y
Downloading Packages:
(1/2): libmetalink-0.1.3-7.el8.x86_64.rpm                    21 kB/s |  32 kB     00:01    
(2/2): wget-1.19.5-10.el8.x86_64.rpm                        458 kB/s | 734 kB     00:01    
--------------------------------------------------------------------------------------------
Total                                                       477 kB/s | 766 kB     00:01     
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                    1/1 
  Installing       : libmetalink-0.1.3-7.el8.x86_64                                     1/2 
  Installing       : wget-1.19.5-10.el8.x86_64                                          2/2 
  Running scriptlet: wget-1.19.5-10.el8.x86_64                                          2/2 
  Verifying        : libmetalink-0.1.3-7.el8.x86_64                                     1/2 
  Verifying        : wget-1.19.5-10.el8.x86_64                                          2/2 
Installed products updated.

Installed:
  libmetalink-0.1.3-7.el8.x86_64                  wget-1.19.5-10.el8.x86_64                 

Complete!
[root@mr ~]# 

8.4.10 YUM签名检查机制

  • rpm软件提供组织redhat在构建rpm包时, 使用其私钥private key对 rpm进行签名
  • 客户端在使用rpm为了验证其合法性, 可以使用redhat提供的公钥public key进行签名检查

方式1:指定公钥位置

vim /etc/yum.repos.d/CentOS-Base.repo

方式2:提前导入公钥

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

vim /etc/yum.repos.d/CentOS-Base.repo

方式3:不进行签名验证

yum install httpd --nogpgcheck

posted @ 2022-07-12 08:52  溜溜威  阅读(697)  评论(0)    收藏  举报