• yum工具的使用


    yum工具的使用

    1. rpm的弊端

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

    1. yum的优劣势

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

    1. 什么是yum及其作用

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

    1. 挂载光盘

    • 插入光盘
    • 执行以下命令
    [root@localhost ~]# mount /dev/cdrom /mnt
    mount: /dev/sr0 is write-protected, mounting read-only
    [root@localhost ~]# ls /mnt/
    addons  EULA              GPL     isolinux  media.repo  repodata                 RPM-GPG-KEY-redhat-release
    EFI     extra_files.json  images  LiveOS    Packages    RPM-GPG-KEY-redhat-beta  TRANS.TBL
    [root@localhost ~]#
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    1. yum的原理

    在这里插入图片描述

    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)

    1. 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目录 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    yum仓库管理

    yum本地仓库

    • 挂载光盘参照本章第4部分内容
    • 复制光盘内容到yum服务器
    [root@localhost ~]# mkdir /opt/myrepo
    [root@localhost ~]# cp -r /mnt/* /opt/myrepo/
    [root@localhost ~]# ls /opt/myrepo/
    addons  EULA              GPL     isolinux  media.repo  repodata                 RPM-GPG-KEY-redhat-release
    EFI     extra_files.json  images  LiveOS    Packages    RPM-GPG-KEY-redhat-beta  TRANS.TBL
    
    • 1
    • 2
    • 3
    • 4
    • 5
    配置yum仓库repo 文件
    [root@localhost ~]# vim /etc/yum.repos.d/myrepo.repo
    [root@localhost ~]# cat /etc/yum.repos.d/myrepo.repo
    [myrepo]
    name=myrepo
    baseurl=file:///opt/myrepo
    gpgcheck=0
    enabled=1
    [root@localhost ~]#
    #清空yum本地缓存
    [root@localhost ~]# yum clean all
    Loaded plugins: langpacks, product-id, search-disabled-repos, subscriptionmanager
    This system is not registered with an entitlement server. You can use
    subscription-manager to register.
    Cleaning repos: myrepo
    Cleaning up everything
    Maybe you want: rm -rf /var/cache/yum, to also free up space taken by
    orphaned data from disabled or removed repos
    #检验yum本地仓库
    [root@localhost ~]# yum list all
    ......
    plymouth-core-libs.i686
    0.8.9-0.28.20140113.el7 myrepo
    plymouth-graphics-libs.i686
    0.8.9-0.28.20140113.el7 myrepo
    policycoreutils-devel.i686
    2.5-17.1.el7 myrepo
    policycoreutils-devel.x86_64
    ........
    省略.....
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    清空yum 本地缓存

    Updating Subscription Management repositories.
    Unable to read consumer identity
    This system is not registered with an entitlement server. You can use
    subscription-manager to register.
    17 files removed
    
    • 1
    • 2
    • 3
    • 4
    • 5

    检验yum本地仓库

    [root@localhost yum.repos.d]# yum list all
    yajl.i686 2.1.0-21.el9
    AppStream
    yajl.x86_64 2.1.0-21.el9
    AppStream 
    省略......
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    yum网络仓库
    • 官方网络yum仓库(国外)
    • 阿里云yum仓库
    • 163yum仓库
    • xx大学yum仓库
    • epel源
    [root@localhost yum.repos.d]# cat tq.repo
    [BaseOS]
    name=BaseOS
    baseurl=https://mirrors.aliyun.com/rockylinux/9/BaseOS/$basearch/os/
    gpgcheck=0
    enabled=1
    gpgkey=https://mirrors.aliyun.com/rockylinux/RPM-GPG-KEY-Rocky-9
    
    [AppStream]
    name=AppStream
    baseurl=https://mirrors.aliyun.com/rockylinux/9/AppStream/$basearch/os/
    gpgcheck=0
    enabled=1
    gpgkey=https://mirrors.aliyun.com/rockylinux/RPM-GPG-KEY-Rocky-9
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    软件官方仓库

    [root@localhost ~]# vim /etc/yum.repos.d/nginx.repo
    
    [nginx]
    
    name=nginx repo
    
    baseurl=http://nginx.org/packages/centos/7/$basearch/
    
    gpgcheck=0
    
    enabled=1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    yum 管理软件

    yum 命令语法
    yum [options] [command] [package ...]
    
    常用的选项:
    
    • 1
    • 2
    • 3

    常用的选项:

    --nogpgcheck //如果从网上下载包有时会检查gpgkey,此时可以使用此命令跳
    过gpgkey的检查
    -y //自动回答为"yes"
    -q //静默模式,安装时不输出信息至标准输出
    --disablerepo=repoidglob //临时禁用此处指定的repo
    --enablerepo=repoidglob //临时启用此处指定的repo
    --noplugins //禁用所有插件
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    [root@localhost ~]# yum -y -q install vsftpd
    [root@localhost ~]#
    
    • 1
    • 2

    常用的命令

    list // 列表

    all

    [root@localhost ~]# yum list all
    yara.x86_64 4.2.3-1.el9
    AppStream
    yelp.x86_64 2:40.3-2.el9
    AppStream
    
    • 1
    • 2
    • 3
    • 4
    • 5

    available :列出仓库中有的,但尚未安装的所有可用包

    [root@tq ~]# yum list available
    
    • 1

    installed :例出已经安装的包

    [root@tq ~]# yum list installed | grep wget
    [root@tq ~]# yum list installed
    
    • 1
    • 2

    **clean //**清理缓存

    packages

    headers

    metadata

    dbcache

    all

    [root@tq ~]# yum clean all
    
    • 1

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

    all

    enabled

    disabled

    [root@tq ~]# yum repolist all
    
    • 1

    install // 安装

    [root@tq ~]# yum install zsh
    
    • 1

    **update //**升级

    [root@tq ~]# yum check-update ##先检查可以升级
    [root@tq ~]# yum update grub2 -y
    
    • 1
    • 2

    **downgrade package //**降级

    **remove/erase //**卸载

    [root@tq ~]# yum -y remove zsh
    
    • 1

    info

    yum info package

    [root@tq ~]# yum info wget
    
    • 1

    provides|whatprovides :查看文件由那个包所提供的

    [root@tq ~]# yum provides */bin/ls
    [root@tq ~]# yum provides wget
    
    • 1
    • 2

    **search string //**以指定的关键字搜索程序名及信息

    **deplist package //**显示指定包的依赖关系

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

    [root@tq ~]# yum history
    
    • 1

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

    [root@localhost ~]# rpm -e vsftpd //卸载
    [root@localhost ~]# yum -y localinstall vsftpd-3.0.5-5.el9.x86_64.rpm
    
    • 1
    • 2

    **grouplist //**列出可用的组

    [root@tq ~]# yum grouplist
    
    • 1

    groupinstall “group name” :安装一组软件

    [root@tq ~]# yum -y groupinstall "Development Tools"
    
    • 1

    yum groups remove - y xx

    [root@localhost ~]# yum groups remove -y Base
    
    • 1

    **createrepo //**常见yum仓库的元数据信息

    [root@localhost ~]# yum install createrepo -y
    [root@localhost ~]# createrepo 1
    
    • 1
    • 2

    搜索软件包

    yum list all :列出软件仓库中可用的软件

    [root@localhost ~]# yum list all
    zlib-devel.i686 1.2.11-39.el9
    AppStream
    zlib-devel.x86_64 1.2.11-39.el9
    AppStream
    zram-generator.x86_64 0.3.2-7.el9
    AppStream
    zsh.x86_64 5.8-9.el9
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    yum list | grep 服务名 :进行模糊查找

    [root@localhost ~]# yum list |grep vsftpd
    
    • 1

    yum info 服务名 :列出软件包详情

    [root@localhost ~]# yum info vsftpd
    
    • 1

    重装软件包

    root@localhost ~]# rpm -q vsftpd //查看以及安装的包
    vsftpd-3.0.5-5.el9.x86_64
    [root@localhost ~]# rpm -qc vsftpd //查看配置文件信息
    /etc/logrotate.d/vsftpd
    /etc/pam.d/vsftpd
    /etc/vsftpd/ftpusers
    /etc/vsftpd/user_list
    /etc/vsftpd/vsftpd.conf
    [root@localhost ~]# rm -f /etc/vsftpd/vsftpd.conf
    [root@localhost ~]# yum reinstall vsftpd-3.0.5-5.el9.x86_64.rpm
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    与缓存相关命令

    yum makecache :缓存yum源软件仓库, xml元数据文件

    [root@localhost ~]# yum makecache
    
    • 1

    修改软件包和全居配置

    [root@localhost ~]# vi /etc/yum.conf
    [root@localhost ~]# cat /etc/yum.conf
    [main]
    gpgcheck=1
    installonly_limit=3
    clean_requirements_on_remove=True
    best=True
    skip_if_unavailable=False
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    另一种缓存rpm包方式:

    安装插件支持只下载软件包不安装

    [root@localhost ~]# yum -y install zsh --downloadonly --downloaddir=/tmp
    httpd
    
    • 1
    • 2

    清除所有yum缓存

    [root@localhost ~]# yum clean all
    
    • 1

    只清除缓存包

    [root@localhost ~]# yum clean packages
    
    • 1

    历史命令相关

    查看历史执行yum 命令

    [root@localhost ~]# yum history
    
    • 1

    查询历史执行yum命令ID详细信息

    [root@localhost ~]# yum history info 5
    
    • 1

    撤销历史执行过的yum命令

    [root@localhost ~]# yum history undo 5
    
    • 1

    yum签名检查机制

    1.rpm软件提供组织redhat在构建rpm包时, 使用其私钥private key对 rpm进行签名

    2.客户端在使用rpm为了验证其合法性, 可以使用redhat提供的公钥public key进行签名检查

    方式一:指定公钥位置

    [root@localhost yum.repos.d]# cat tq.repo
    [BaseOS]
    name=BaseOS
    baseurl=https://mirrors.aliyun.com/rockylinux/9/BaseOS/$basearch/os/
    gpgcheck=0
    enabled=1
    gpgkey=https://mirrors.aliyun.com/rockylinux/RPM-GPG-KEY-Rocky-9
    [AppStream]
    name=AppStream
    baseurl=https://mirrors.aliyun.com/rockylinux/9/AppStream/$basearch/os/
    gpgcheck=0
    enabled=1
    # gpgkey=https://mirrors.aliyun.com/rockylinux/RPM-GPG-KEY-Rocky-9
    [root@localhost yum.repos.d]#
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    方式二:提起导入公钥

    [root@localhost ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
    [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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    方式三:不进行签名验证

    [root@localhost ~]# yum install httpd --nogpgcheck
    
    • 1
  • 相关阅读:
    为React Ant-Design Table增加字段设置 | 京东云技术团队
    【OpenCV实现图像:用OpenCV图像处理技巧之巧用直方图】
    raw图片处理软件:DxO PhotoLab 6 mac中文版支持相机格式
    数字化校园建设规划方案
    [rust] Rust与C++20编码习惯对照
    es如何聚合查询同一字段文档数大于1的文档
    电商行业少不了的营销方式——邮件营销
    嵌入式Linux入门-异常与中断(流程+寄存器全解析)
    Freemarker快速入门(SpringBoot版)
    Matlab论文插图绘制模板第65期—带等高线的曲面图(Surfc)
  • 原文地址:https://blog.csdn.net/m0_74939224/article/details/134266877