yum 仓库管理

配置本地仓库

mkdir -p /mnt/cdrom
mount /dev/sr0 /mnt/cdrom
touch /etc/yum.repos.d/local.repo
echo -e '[BaseOS]\nname=BaseOS\nbaseurl=file:///mnt/cdrom/BaseOS\nenabled=1\ngpgcheck=0\n\n[AppStream]\nname=AppStream\nbaseurl=file:///mnt/cdrom/AppStream\nenabled=1\ngpgcheck=0' > /etc/yum.repos.d/local.repo
sed -i '$a /dev/sr0 /mnt/cdrom/ iso9660 defaults 0 0' /etc/fstab
yum clean all
yum list all

挂载光盘

[root@192 ~]# mount /dev/cdrom /mnt/      将/dev/cdrom挂载到/mnt
mount: /mnt: WARNING: device write-protected, mounted read-only.
[root@192 ~]# ls /mnt/
AppStream  BaseOS  EFI  LICENSE  TRANS.TBL  images  isolinux  media.repo
                           1:1.39.5-1.el8                   

配置/etc/yum.repos.d/**.repo文件

[root@192 ~]# vim /etc/yum.repos.d/du.repo
[root@192 ~]# cat /etc/yum.repos.d/du.repo 
[BaseOS]                            仓库名字  
name=BaseOS                         描述信息     
baseurl=file:///mnt/BaseOS   指定仓库的具体位置(本地/网络)接受的类型有 ftp://,http://,file:// 
gpgcheck=0                  0表示为不检查来源 1表示检查软件包的来源合法性
enabled=1                   1表示启用仓库 0表示为禁用仓库

[AppStream]
name=AppStream
baseurl=file:///mnt/AppStream
gpgcheck=0
enabled=1

清空yum本地缓存

[root@192 ~]# yum clean all             清除缓存
20 files removed

检验yum本地仓库

[root@192 ~]# yum list all              
CentOS-8.5.2111 - Base - mirrors.aliyun.com                                    682 kB/s | 4.6 MB     00:06    
CentOS-8.5.2111 - Extras - mirrors.aliyun.com                                   45 kB/s |  10 kB     00:00    
CentOS-8.5.2111 - AppStream - mirrors.aliyun.com                               705 kB/s | 8.4 MB     00:12    
BaseOS                                                                          46 MB/s | 2.6 MB     00:00    
Installed Packages
NetworkManager.x86_64                                  1:1.39.5-1.el8                                @anaconda 
NetworkManager-libnm.x86_64 

yum网络仓库

  • 官方网络yum仓库(国外)
  • 阿里云yum仓库
  • 163yum仓库
  • xx大学yum仓库
  • epel源

Centos8自带的就是国外的源下载会非常的慢

// Base/Extras/Updates: 默认国外官方源
[root@localhost ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo \
http://mirrors.aliyun.com/repo/Centos-7.repo

//国外epel源
[root@localhost ~]# yum -y install epel-release

//阿里云epel源
[root@localhost ~]# curl -o /etc/yum.repos.d/epel.repo \
http://mirrors.aliyun.com/repo/epel-7.repo

下载阿里云yum仓库

-阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区 (aliyun.com)

[root@192 yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo


--2022-07-11 20:16:15--  https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
Resolving mirrors.aliyun.com (mirrors.aliyun.com)... 116.162.173.85, 116.162.173.90, 116.162.173.88, ...
Connecting to mirrors.aliyun.com (mirrors.aliyun.com)|116.162.173.85|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2495 (2.4K) [application/octet-stream]
Saving to: '/etc/yum.repos.d/CentOS-Base.repo'

/etc/yum.repos.d/CentOS-Bas 100%[=========================================>]   2.44K  --.-KB/s    in 0s      

2022-07-11 20:16:15 (76.8 MB/s) - '/etc/yum.repos.d/CentOS-Base.repo' saved [2495/2495]

[root@192 yum.repos.d]# yum clean all
18 files removed
[root@192 yum.repos.d]# yum list all

yum 管理软件

yum命令语法

yum [选项] [命令] [包 ...]

常用的options

--nogpgcheck                //如果从网上下载包有时会检查gpgkey,此时可以使用此命令跳过gpgkey的检查
-y                          //自动回答为"yes"
-q                          //静默模式,安装时不输出信息至标准输出
--disablerepo=repoidglob    //临时禁用此处指定的repo
--enablerepo=repoidglob     //临时启用此处指定的repo
--noplugins                 //禁用所有插件
命令的使用
[root@192 ~]# yum --nogpgcheck install ls*
Last metadata expiration check: 0:06:55 ago on Mon Jul 11 20:17:25 2022.
Package lshw-B.02.19.2-6.el8.x86_64 is already installed.
Package lsscsi-0.32-3.el8.x86_64 is already installed.
Dependencies resolved.


[root@192 ~]# yum -y install ls*
Last metadata expiration check: 0:07:58 ago on Mon Jul 11 20:17:25 2022.
Package lshw-B.02.19.2-6.el8.x86_64 is already installed.
Package lsscsi-0.32-3.el8.x86_64 is already installed.
Dependencies resolved.

[root@192 ~]# yum -q install ls*
Is this ok [y/N]: 

[root@192 ~]# yum --disablerepo=BaseOS install ls*
No repository match: BaseOS
Last metadata expiration check: 0:12:07 ago on Mon Jul 11 20:17:25 2022.
Package lshw-B.02.19.2-6.el8.x86_64 is already installed.
Package lsscsi-0.32-3.el8.x86_64 is already installed.
Dependencies resolved.

[root@192 ~]# yum  --enablerepo=base install ls*
Last metadata expiration check: 0:14:19 ago on Mon Jul 11 20:17:25 2022.
Package lshw-B.02.19.2-6.el8.x86_64 is already installed.
Package lsscsi-0.32-3.el8.x86_64 is already installed.
Dependencies resolved.

[root@192 ~]# yum  --noplugins install ls*
Last metadata expiration check: 0:14:59 ago on Mon Jul 11 20:17:25 2022.
Package lshw-B.02.19.2-6.el8.x86_64 is already installed.
Package lsscsi-0.32-3.el8.x86_64 is already installed.
Dependencies resolved.

常用的command

list            //列表
    all         //默认项
    available   //列出仓库中有的,但尚未安装的所有可用的包
    installed   //列出已经安装的包
    updates     //可用的升级
    
clean           //清理缓存
    packages
    headers
    metadata
    dbcache
    all
    
repolist        //显示repo列表及其简要信息
    all
    enabled     //默认项
    disabled
    
install         //安装
    yum install packages [...]
    
update          //升级
    yum update packages [...]
update_to       //升级为指定版本

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

remove|erase    //卸载

info    //显示rpm -qi package的结果
    yum info packages
    
provides|whatprovides   //查看指定的文件或特性是由哪个包安装生成的

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

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

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

localinstall    //安装本地rpm包,自动解决依赖关系

grouplist       //列出可用的组

groupinstall "group name"   //安装一组软件
        
createrepo命令    //创建yum仓库的元数据信息
命令的使用

list列表

[root@192 ~]# yum list available 
libmnl-devel.i686                                    1.0.4-6.el8                                    AppStream 
   
[root@192 ~]# yum list installed  
perl-Digest.noarch                                  1.17-395.el8                                    @AppStream

[root@192 ~]# yum list  all 
nss-altfiles.i686                                      2.18.1-12.el8                                 AppStream

[root@192 ~]# yum list updates


clean清理缓存

[root@192 ~]# yum clean packages

[root@192 ~]# yum clean all
18 files removed

repolist显示repo列表及其简要信息

[root@192 ~]# yum repolist all
repo id                        repo name                                                              status
AppStream                      CentOS-8.5.2111 - AppStream - mirrors.aliyun.com                       enabled
PowerTools                     CentOS-8.5.2111 - PowerTools - mirrors.aliyun.com                      disabled
base                           CentOS-8.5.2111 - Base - mirrors.aliyun.com                            enabled
centosplus                     CentOS-8.5.2111 - Plus - mirrors.aliyun.com                            disabled
extras                         CentOS-8.5.2111 - Extras - mirrors.aliyun.com                          enabled

[root@192 ~]# yum repolist enabled 
repo id                             repo name
AppStream                           CentOS-8.5.2111 - AppStream - mirrors.aliyun.com
base                                CentOS-8.5.2111 - Base - mirrors.aliyun.com
extras                              CentOS-8.5.2111 - Extras - mirrors.aliyun.com

[root@192 ~]# yum repolist disabled 
repo id                             repo name
PowerTools                          CentOS-8.5.2111 - PowerTools - mirrors.aliyun.com
centosplus                          CentOS-8.5.2111 - Plus - mirrors.aliyun.com

install 安装

[root@192 ~]# yum  install httpd
CentOS-8.5.2111 - Base - mirrors.aliyun.com                                   5.2 MB/s | 4.6 MB     00:00    
CentOS-8.5.2111 - Extras - mirrors.aliyun.com                                  31 kB/s |

update升级

[root@192 ~]#yum update

remove卸载

[root@192 ~]# yum remove httpd
Dependencies resolved.
================================

info 显示rpm -qi package的结果

[root@192 ~]# yum info httpd
Last metadata expiration check: 0:07:19 ago on Mon Jul 11 20:43:42 2022.
Installed Packages
Name         : httpd
Version      : 2.4.37
Release      : 43.module_el8.5.0+1022+b541f3b1
Architecture : x86_64
Size         : 4.3 M
Source       : httpd-2.4.37-43.module_el8.5.0+1022+b541f3b1.src.rpm
Repository   : @System
From repo    : AppStream
Summary      : Apache HTTP Server
URL          : https://httpd.apache.org/
License      : ASL 2.0
Description  : The Apache HTTP Server is a powerful, efficient, and extensible
             : web server.

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

[root@192 ~]# yum provides wget
Last metadata expiration check: 0:08:24 ago on Mon Jul 11 20:43:42 2022.
wget-1.19.5-10.el8.x86_64 : A utility for retrieving files using the HTTP or FTP protocols
Repo        : @System
Matched from:
Provide    : wget = 1.19.5-10.el8

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

[root@192 ~]# yum search htt
Last metadata expiration check: 0:09:18 ago on Mon Jul 11 20:43:42 2022.
=================================================== Name & Summary Matched: htt ===================================================
centos-logos-httpd.noarch : CentOS-related icons and pictures used by httpd
http-parser.i686 : HTTP request/response parser for C
http-parser.x86_64 : HTTP request/response parser for C
httpcomponents-client.noarch : HTTP agent implementation based on httpcomponents HttpCore
httpcomponents-core.noarch : Set of low level Java HTTP transport components for HTTP services
httpd.x86_64 : Apache HTTP Server
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
keycloak-httpd-client-install.noarch : Tools to configu

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

[root@192 ~]# yum deplist httpd
Last metadata expiration check: 0:10:04 ago on Mon Jul 11 20:43:42 2022.
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: httpd-filesystem
   provider: httpd-filesystem-2.4.37-43.module_el8.5.0+1022+b541f3b1.noarch
  dependency: httpd-filesystem = 2.4.37-41.module_el8.5.0+977+5653bbea
   provider: httpd-filesystem-2.4.37-41.module_el8.5.0+977+5653bbea.noarch
  dependency: httpd-tools = 2.4.37-41.module_el8.5.0+977+5653bbea
   provider: httpd-tools-2.4.37-41.module_el8.5.0+977+5653bbea.x86_64
  dependency: libapr-1.so.0()(64bit)

history 查看yum的历史事务信息

[root@192 ~]# yum  history yum
ID     | Command line                                                                 | Date and time    | Action(s)      | Altered
-----------------------------------------------------------------------------------------------------------------------------------
     8 | -y install dnf* --skip-broken                                                | 2022-07-11 16:29 | D, I           |   28  <
     1 |                                                                              | 2022-06-28 22:47 | Install        |  378 >E

localinstall 安装本地rpm包,自动解决依赖关系

yum localinstall (本地rpm包)

grouplist 列出可用的组

[root@192 ~]# yum grouplist 
Last metadata expiration check: 0:13:11 ago on Mon Jul 11 20:43:42 2022.
Available Environment Groups:
   Server with GUI
   Server
   Workstation
   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

groupinstall “group name” 安装一组软件

[root@192 ~]# yum -y groupinstall "Development Tools"

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

[root@localhost ~]# yum install createrepo -y
[root@localhost ~]# createrepo [选项] <目录>

具体实例

[root@localhost ~]# yum list all        列出软件仓库中可用的软件

[root@localhost ~]# yum list|grep httpd    进行模糊查找

[root@localhost ~]# yum info httpd        列出软件包详情
安装软件包
[root@localhost ~]# yum install httpd    安装软件只需要给出软件名称

[root@localhost ~]# yum -y install httpd  安装过程中分析依赖关系后, 直接安装, 无需交互

安装本地的rpm包, 如果有依赖关系, 会自动从软件仓库中下载所需依赖(非来自.repo定义的软件仓库)
[root@localhost ~]# yum localinstall /mnt/Packages/bind-9.9.4-50.el7.x86_64.rpm

安装网络上rpm包
[root@localhost ~]# yum install http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm
重装软件包
[root@192 ~]# rpm -q wget             检查软件是否存在
wget-1.19.5-10.el8.x86_64

[root@192 ~]# rpm -qc wget            检查wget软件配置文件
/etc/wgetrc

[root@192 ~]# rm -rf /etc/wgetrc     不小心删除wget配置文件

[root@192 ~]# yum reinstall wget       重新安装

[root@192 ~]# rpm -qc wget            再次检查
/etc/wgetrc

更新软件包
[root@192 ~]# yum check-update       对比Linux已安装的软件和yum仓库中的软件, 有哪些需要升级

[root@192 ~]# yum update (需要升级的包名)      更新软件 
删除软件包
[root@192 ~]# yum  remove wget    删除该软件包,不会删除依赖, 但是我们尽可能不要使用删除软件操作
与仓库相关的命令
[root@192 ~]# yum repolist     列出yum源可用的软件仓库
repo id                                       repo name
AppStream                                     CentOS-8.5.2111 - AppStream - mirrors.aliyun.com
base                                          CentOS-8.5.2111 - Base - mirrors.aliyun.com
extras                                        CentOS-8.5.2111 - Extras - mirrors.aliyun.com

[root@192 ~]# yum repolist all  列出全部yum源可用和禁用的仓库
mirrors.aliyun.com                                 enabled
PowerTools                                CentOS-8.5.2111 - PowerTools - mirrors.aliyun.com                                disabled
base                                      CentOS-8.5.2111 - Base - mirrors.aliyun.com                                      enabled
centosplus                                CentOS-8.5.2111 - Plus - mirrors.aliyun.com                                      disabled
extras                                    CentOS-8.5.2111 - Extras - mirrors.aliyun.com 

[root@192 ~]# yum provides cd    查看这个文件或命令属于哪个包
Last metadata expiration check: 0:28:11 ago on Mon Jul 11 20:43:42 2022.
bash-4.4.20-2.el8.x86_64 : The GNU Bourne Again shell
Repo        : base
Matched from:
Filename    : /usr/bin/cd
与缓存相关的命令
[root@192 ~]# yum makecache      缓存yum源软件仓库, xml元数据文件
CentOS-8.5.2111 - Base - mirrors.aliyun.com                                                         27 kB/s | 3.9 kB     00:00    
CentOS-8.5.2111 - Extras - mirrors.aliyun.com                                                       21 kB/s | 1.5 kB     00:00    
CentOS-8.5.2111 - AppStream - mirrors.aliyun.com                                                    56 kB/s | 4.3 kB     00:00    
Metadata cache created.


[root@192 ~]# vim /etc/yum.conf      缓存软件包, 修改yum全局配置文件
[root@192 ~]# cat /etc/yum.conf 
[main]
gpgcheck=1
installonly_limit=3
clean_requirements_on_remove=True
best=True
skip_if_unavailable=False

[root@192 ~]# yum clean all        清除所有yum缓存

[root@192 ~]# yum clean packages   只清除缓存的软件包 
与包组相关的命令
[root@192 ~]# yum group list       列出已经安装和所有可使用的软件组

[root@192 ~]# yum groupinstall 'Development Tools'   安装一整个组的软件

[root@192 ~]# yum groupremove 'Development Tools'    yum删除包组

与历史记录相关的命令
[root@192 ~]# yum history      查看历史执行yum命令

[root@192 ~]# yum history info 6   查询历史执行yum命令ID详细信息
Transaction ID : 6
Begin time     : Wed Jun 29 15:15:24 2022
Begin rpmdb    : 383:b10114e0b1d414da7969a3f791a5c7858495ec86
End time       : Wed Jun 29 15:15:25 2022 (1 seconds)
End rpmdb      : 384:a9e670fceb941722be2e5fc1807c4b5094bce7b8
User           : root <root>
Return-Code    : Success
Releasever     : 8
Command Line   : -y install tcsh
Comment        : 
Packages Altered:
    Install tcsh-6.20.00-15.el8.x86_64 @appstream

[root@192 ~]# yum history undo 5  撤销历史执行过的yum命令
===================================================================================================================================
 Package                    Architecture                 Version                               Repository                     Size
===================================================================================================================================
Removing:
 tree                       x86_64                       1.7.0-15.el8                          @baseos                       109 k

Transaction Summary
===================================================================================================================================
Remove  1 Package


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

方式1:指定公钥位置

[root@localhost ~]# vim /etc/yum.repos.d/CentOS-Base.repo
[base]
name=CentOS-$releasever - Base mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra #baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8

方式2:提前导入公钥

[root@localhost ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8
[root@localhost ~]# vim /etc/yum.repos.d/CentOS-Base.repo
[base]
name=CentOS-$releasever - Base 
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1

方式3:不进行签名验证

[root@192 ~]#  yum install wget --nogpgcheck      不检查软件包的签名