yum工具的使用

本文详细介绍了yum工具的用途,它作为rpm的前端管理器,能自动解决软件安装时的依赖问题。讨论了yum的优缺点,比如在未完成安装时可能引发的依赖问题,以及通过dnf工具来解决这一问题。解释了yum的工作原理,包括服务器端和客户端的角色。此外,还讲解了如何配置和管理yum仓库,包括本地仓库和网络仓库的设置。最后,列举了一系列yum命令的使用示例,如搜索、安装、更新和卸载软件包。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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. 挂载光盘


  • 插入光盘
  • 执行以下命令
[root@zjq ~]# mount /dev/cdrom /mnt/
mount: /mnt: WARNING: device write-protected, mounted read-only.
[root@zjq ~]# ls /mnt/
AppStream  BaseOS  EFI  images  isolinux  LICENSE  media.repo  TRANS.TBL

5. 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)

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目录 

7. yum仓库管理


7.1 yum本地仓库
  • 创建本地yum文件
[root@zjq ~]# cd /etc/yum.repos.d/
[root@zjq yum.repos.d]# vi base.repo 
  • 配置repo文件
[BaseOS]
name=BaseOS
baseurl=file:///mnt/BaseOS
gpgcheck=0
enabled=1
[AppStream]
name=AppStream
baseurl=file:///mnt/AppStream
gpgcheck=0
enabled=1
  • 清空yum本地缓存
[root@zjq ~]# yum clean all
32 files removed
  • 检验yum本地仓库
[root@zjq ~]# yum list all 
7.2 yum网络仓库
  • 官方网络yum仓库(国外)
  • 阿里云yum仓库
  • 163yum仓库
  • xx大学yum仓库
  • epel源
// 阿里云centos 8镜像
[root@zjq ~]# 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
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--       0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--       0     0    0     0    0     0      0      0 --:--:--  0:00:01 --:--:--     100  2495  100  2495    0     0    981      0  0:00:02  0:00:02 --:--:--   981

//删除云主机配置
[root@zjq ~]# sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo

//清空本地缓存
[root@zjq ~]# yum clean all
13 files removed

//运行 yum makecache 生成缓存
[root@zjq ~]# yum makecache 
CentOS-8.5.2111 - Base - mirrors.aliyun.com  490 kB/s | 4.6 MB     00:09    
CentOS-8.5.2111 - Extras - mirrors.aliyun.co  30 kB/s |  10 kB     00:00    
CentOS-8.5.2111 - AppStream - mirrors.aliyun 376 kB/s | 8.4 MB     00:22    
Metadata cache created.
7.3 软件官方仓库
// 源查找方式基本一致,zabbix,mysql,saltstack,openstack等等,上官网找
[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
7.4 redhat7使用centos7的yum源
//下载base和epel仓库
[root@localhost ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@localhost ~]# sed -i 's#\$releasever#7#g' /etc/yum.repos.d/CentOS-Base.repo

[root@localhost ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

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   //列出仓库中有的,但尚未安装的所有可用的包
    installed   //列出已经安装的包
    updates     //可用的升级
    
clean           //清理缓存
    packages
    headers
    metadata
    dbcache
    all
    
//repolist        //显示repo列表及其简要信息
    all
    enabled     //默认项
    disabled
[root@zjq ~]# dnf repolist 
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

    
//install         //安装
    yum install packages [...]
[root@zjq ~]# yum -y install vim
......
Installed:
  gpm-libs-1.20.7-17.el8.x86_64                                              
  vim-common-2:8.0.1763-16.el8.x86_64                                        
  vim-enhanced-2:8.0.1763-16.el8.x86_64                                      
  vim-filesystem-2:8.0.1763-16.el8.noarch                                    

Complete!

    
//update          //升级
    yum update packages [...]
[root@zjq ~]# dnf -y update

//列出可以更新的包
[root@zjq ~]# dnf list updates 

update_to       //升级为指定版本

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

//remove|erase    //卸载
[root@zjq ~]# yum -y remove vim
......
Removed:
  gpm-libs-1.20.7-17.el8.x86_64                                              
  vim-common-2:8.0.1763-16.el8.x86_64                                        
  vim-enhanced-2:8.0.1763-16.el8.x86_64                                      
  vim-filesystem-2:8.0.1763-16.el8.noarch                                    

Complete!


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

//search string1 [string2 ...]    //以指定的关键字搜索程序包名及summary信息
[root@zjq ~]# dnf search wget
Last metadata expiration check: 0:42:25 ago on Mon 11 Jul 2022 02:59:52 PM CST.
======================== Name Exactly Matched: wget =========================
wget.x86_64 : A utility for retrieving files using the HTTP or FTP protocols

//deplist package [package2 ...]  //显示指定包的依赖关系
[root@zjq ~]# dnf deplist httpd
Last metadata expiration check: 0:44:21 ago on Mon 11 Jul 2022 02:59:52 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: httpd-filesystem
......

//history     //查看yum的历史事务信息
[root@zjq ~]# dnf history 
ID     | Command line             | Date and time    | Action(s)      | Altered
-------------------------------------------------------------------------------
     3 | -y install vim           | 2022-07-11 13:01 | Install        |    4   
     2 | -y install bash-completi | 2022-07-05 09:23 | Install        |    5   
     1 |                          | 2022-06-27 19:17 | Install        |  378 EE

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

//grouplist       //列出可用的组
[root@zjq ~]# dnf grouplist 
Last metadata expiration check: 5:11:06 ago on Mon 11 Jul 2022 04:24:06 PM CST.
Available Environment Groups:
   Server with GUI
   Server
   Workstation
   Custom Operating System
   Virtualization Host
Installed Environment Groups:
   Minimal Install
......

//groupinstall "group name"   //安装一组软件
[root@zjq ~]# dnf groupinstall "Development Tools" -y
        
createrepo命令    //创建yum仓库的元数据信息
[root@zjq ~]# yum -y install createrepo 
[root@zjq ~]# createrepo [options] <directory>
8.4 具体实例
8.4.1 搜索软件包
//列出软件仓库中可用的软件
[root@zjq ~]# dnf list all

//进行模糊查找
[root@zjq ~]# dnf list |grep ftp
ftp.x86_64                                             0.17-78.el8                                            AppStream 
lftp.i686                                              4.8.4-2.el8                                            AppStream 
lftp.x86_64                                            4.8.4-2.el8                                            AppStream 
lftp-scripts.noarch                                    4.8.4-2.el8                                            AppStream 
python3-requests-ftp.noarch                            0.3.1-11.el8                                           AppStream 
syslinux-tftpboot.noarch                               6.04-5.el8                                             base      
tftp.x86_64                                            5.2-24.el8                                             AppStream 
tftp-server.x86_64                                     5.2-24.el8                                             AppStream 
vsftpd.x86_64                                          3.0.3-34.el8                                           AppStream 

//列出软件包详情
[root@zjq ~]# dnf info ftp
Last metadata expiration check: 0:20:09 ago on Mon 11 Jul 2022 02:59:52 PM CST.
Available Packages
Name         : ftp
Version      : 0.17
Release      : 78.el8
Architecture : x86_64
Size         : 70 k
Source       : ftp-0.17-78.el8.src.rpm
Repository   : AppStream
Summary      : The standard UNIX FTP (File Transfer Protocol) client
URL          : ftp://ftp.linux.org.uk/pub/linux/Networking/netkit
License      : BSD with advertising
Description  : The ftp package provides the standard UNIX command-line FTP
             : (File Transfer Protocol) client.  FTP is a widely used
             : protocol for transferring files over the Internet and for
             : archiving files.
             : 
             : If your system is on a network, you should install ftp in
             : order to do file transfers.
standard UNIX command-line FTP
(File Transfer Protocol) client. FTP is a widely used
protocol for transferring files over the Internet and for
archiving files.
:
If your system is on a network, you should install ftp in
order to do file transfers.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

随便投投

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值