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

  • 插入光盘
  • 执行以下命令
text 复制代码
[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. 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文件:

text 复制代码
[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目录 

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

配置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
........
省略.....

清空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

检验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 
省略......
yum网络仓库

软件官方仓库

复制代码
[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

yum 管理软件

yum 命令语法
复制代码
yum [options] [command] [package ...]

常用的选项:

常用的选项:

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

[root@localhost ~]# yum -y -q install vsftpd
[root@localhost ~]#

常用的命令

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

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

复制代码
[root@tq ~]# yum list available

installed :例出已经安装的包

复制代码
[root@tq ~]# yum list installed | grep wget
[root@tq ~]# yum list installed

**clean //**清理缓存

packages

headers

metadata

dbcache

all

复制代码
[root@tq ~]# yum clean all

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

all

enabled

disabled

复制代码
[root@tq ~]# yum repolist all

install // 安装

复制代码
[root@tq ~]# yum install zsh

**update //**升级

复制代码
[root@tq ~]# yum check-update ##先检查可以升级
[root@tq ~]# yum update grub2 -y

**downgrade package //**降级

**remove/erase //**卸载

复制代码
[root@tq ~]# yum -y remove zsh

info

yum info package

复制代码
[root@tq ~]# yum info wget

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

复制代码
[root@tq ~]# yum provides */bin/ls
[root@tq ~]# yum provides wget

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

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

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

复制代码
[root@tq ~]# yum history

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

复制代码
[root@localhost ~]# rpm -e vsftpd //卸载
[root@localhost ~]# yum -y localinstall vsftpd-3.0.5-5.el9.x86_64.rpm

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

复制代码
[root@tq ~]# yum grouplist

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

复制代码
[root@tq ~]# yum -y groupinstall "Development Tools"

yum groups remove - y xx

复制代码
[root@localhost ~]# yum groups remove -y Base

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

复制代码
[root@localhost ~]# yum install createrepo -y
[root@localhost ~]# createrepo 1

搜索软件包

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

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

复制代码
[root@localhost ~]# yum list |grep vsftpd

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

复制代码
[root@localhost ~]# yum info vsftpd

重装软件包

复制代码
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

与缓存相关命令

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

复制代码
[root@localhost ~]# yum makecache

修改软件包和全居配置

复制代码
[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

另一种缓存rpm包方式:

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

复制代码
[root@localhost ~]# yum -y install zsh --downloadonly --downloaddir=/tmp
httpd

清除所有yum缓存

复制代码
[root@localhost ~]# yum clean all

只清除缓存包

复制代码
[root@localhost ~]# yum clean packages

历史命令相关

查看历史执行yum 命令

复制代码
[root@localhost ~]# yum history

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

复制代码
[root@localhost ~]# yum history info 5

撤销历史执行过的yum命令

复制代码
[root@localhost ~]# yum history undo 5

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]#

方式二:提起导入公钥

复制代码
[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

方式三:不进行签名验证

复制代码
[root@localhost ~]# yum install httpd --nogpgcheck
相关推荐
HLC++10 小时前
Linux的进程间通信
android·linux·服务器
华清远见IT开放实验室12 小时前
实验室建设案例 | 石家庄科技信息职业学院嵌入式实验室——从底层硬件到系统应用,一所应用型高校的嵌入式人才培养这样落地
linux·arm开发·stm32·嵌入式硬件·高校·实验室建设
groundhappy14 小时前
idalib安装和codex ida-mcp配置
linux·开发语言·python
通信小小昕15 小时前
Ubuntu 26.04 中文输入法安装
linux·运维·ubuntu
张小姐的猫16 小时前
【Linux】网络编程 —— HTTP协议(上)
linux·运维·服务器·网络·http·单例模式·策略模式
栩栩云生16 小时前
AI 写代码犯的错,早被写进了错题集
linux·安全·ai编程
imc.1117 小时前
linux基础IO
linux·运维·服务器
BelongPanda19 小时前
Linux Nginx 纯手动 Let‘s Encrypt 泛域名证书配置教程
linux·nginx
酷可达拉斯20 小时前
Linux操作系统-shell编程(0)
linux·运维·服务器·python·云计算
2301_7779983420 小时前
Linux中断机制:操作系统如何高效运行
linux·运维·服务器