Linux yum工具

本文详细介绍了Linux系统中yum工具的使用,包括yum的工作流程、配置文件解析、各种yum命令的详细操作,如安装、升级、卸载软件包,以及如何创建和使用本地yum仓库。此外,还讲解了yum的命令行选项和依赖关系处理。

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

简介

yum(全称为 Yellow dog Updater,modified),是一个在 Fedora 和 RadHat 以及 SUSE 中的 shell 前端软件包管理器。基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装。可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。yum 提供了查找、安装、删除某一个。一组甚至全部软件包的命令,而且命令简洁又好记。

yum工作流程简单介绍

与yum相关的资源主要有以下几个:
1.yum repository:yum repo --> 软件仓库
存储了众多的rpm包,以及与包相关的元数据文件,元数据文件放置于特定的目录下(repodata),其并不是本来就存在的,在自己创建 yum 软件仓库时,可使用 createrepo 工具创建生成各 rpm 包的元数据文件。
2.yum客户端配置文件
其配置文件主要有两类,/etc/yum.conf 配置文件为所有仓库提供公共的配置,/etc/yum.repos.d/*.repo 配置文件为各软件仓库提供配置,进行分而治之,方便管理。
3.文件共享服务器
yum软件仓库的 rpm 包可通过共享文件服务器进行上传下载,其支持以下四类文件服务:
ftp服务:ftp://
http服务:http://
nfs服务:nfs://
本地服务:file://

一张简单的图,帮助理解
在这里插入图片描述

yum客户端的使用

yum 客户端的配置
yum的配置方式是基于分段配置的。
	主配置文件:/etc/yum.conf
	yum的片段配置:/etc/yum.repos.d/*.repo

yum主配置文件

主配置文件配置了一个特殊的仓库,名称为 mail,main是为其它仓库提供默认的全局配置的。
	[main]
	cachedir=/var/cache/yum/$basearch/$releasever
	keepcache=0
	debuglevel=2
	logfile=/var/log/yum.log
	exactarch=1
	obsoletes=1
	gpgcheck=1
	plugins=1
	installonly_limit=5
	bugtracker_url=http://bugs.centos.org/set_project.phpproject_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
	distroverpkg=centos-release
	
	
	#  This is the default, if you make this bigger yum won't see if the metadata
	# is newer on the remote and so you'll "gain" the bandwidth of not having to
	# download the new metadata and "pay" for it by yum not having correct
	# information.
	#  It is esp. important, to have correct metadata, for distributions like
	# Fedora which don't keep old packages around. If you don't like this checking
	# interupting your command line usage, it's much better to have something
	# manually check the metadata once an hour (yum-updatesd will do this).
	# metadata_expire=90m
	
	# PUT YOUR REPOS HERE OR IN separate files named file.repo
	# in /etc/yum.repos.d

配置文件说明:
	[main] 	# main仓库。[ ]中括号表示一个仓库的定义。其中是仓库的名称ID
	cachedir=/var/cache/yum/$basearch/$releasever  # RPM包的缓存位置
	keepcache=0  # RPM包在本地是否需要长期保存。1 表示 yes,0 表示 no
	debuglevel=2  #日志级别
	logfile=/var/log/yum.log  # 日志文件
	exactarch=1  # 下载的 RPM 包是否需要与本地平台完全匹配。1 表示 yes,0 表示 no
	obsoletes=1
	gpgcheck=1  # 是否自动检查来源合法性
	plugins=1
	installonly_limit=5

yum片段配置文件

在这里插入图片描述
Centos 自带的这些配置文件中,其实只有 Centos-Base.repo 文件有效。按照需求,这些文件可以删除或改名,或自己建立一个 .repo 的配置文件,实际使用中,可以参考 CentOS-Base.repo 的配置自定义 .repo 文件。

查看 CentOS-Base.repo

在这里插入图片描述
在这里插入图片描述
对配置文件中的一些配置做说明:
[repositoryid]:软件参股的ID,不可以与其他仓库重名
name=:对仓库的描述。该项必须有
baseurl=:指明软件仓库的路径。用于指定一个url
mirrorlist:指向一个镜像列表,里面有多个url;与baseurl选其一
enabled=[0 | 1]:是否启用当前仓库,值为 1 或 0,默认为 1,1表示启用
gpgcheck=[0 | 1]:是否校验数据完整性和来源合法性,值为 1 或 0,默认为1
gpgkey=URL:指明密钥的路径;验证 RPM 包的密钥文件路径。该文件可以在远处服务器上,也可以在本地
repo_gpgcheck=[0 | 1]:是否使用密钥验证元数据的合法性
failovermethod=[roundrobin | priority]:故障转移方法,默认为 roundrobin,随机挑选,priority 按优先级查找
cost=:代价,其本质是仓库优先级的配置。值越低,表示访问的代价越低,也即优先使用;默认为1000

yum的repo配置文件中可用的变量
$releasever:当前OS的发行版的主版本号
$arch:平台(i386、x86)
$basearch:基础平台
$YUM0-YUM9

http://mirrors.magedu.com/centos/$releasever/$basearch/os

注意:配置文件中“ = ”号的前后不能有空格
在这里插入图片描述
例如:自己写一个 repo 配置文件
在这里插入图片描述

yum命令的使用

yum命令的格式一般如下:yum [OPTIONS] [subcommand] [package …]

yum list相关命令显示程序包

命令:yum list all
在这里插入图片描述
结果说明:列出仓库中的所有程序包
第一列:软件包名称、平台名称
第二列:软件版本号-release号
第三列:安装情况
若显示 @ 则表示该软件已经通过仓库安装。如 @anaconda … 表示已经通过 anaconda 仓库安装
install:则表示系统已经安装,未通过仓库安装
若无 @ 或不是 install,则表示尚未安装。如 bas,表示未安装,包位于 base 仓库中。
updates:表示未安装,包位于 updates 仓库中。

查看 yum 仓库中指定包名的软件包,可以使用通配符。
命令:yum list all mysql*
在这里插入图片描述
Installed Package:表示已经安装的包
Avaliable Package:表示没有安装,但可以安装的包

只显示已经安装的包
# yum list installed

只显示没有安装,但可以安装的包
# yum list available

查看所有可更新的包
# yum list updates

显示不属于任何仓库的,额外的包。
# yum list extras

显示被废弃的包
# yum list obsoletes

新添加进 yum 仓库的包
# yum list recent

模糊匹配搜索yum包

格式:yum search 查询名
例如:查询软件包中出带有 init 的软件包
# yum search init
在这里插入图片描述

yum仓库相关命令

命令格式:# yum repolist [all | enabled | disabled]
解释:显示仓库列表(all:所有;enabled:启用;disabled:禁用)
默认为当前能够使用的yum仓库

查看当前能够使用的yum仓库
# yum repolist

显示所有仓库
# yum repolist all

显示启用的仓库
# yum repolist enabled

显示禁用的仓库
# yum repolist disabled

程序包相关命令

Command解释
list [all | available | updates | installed] [glob_exp1]显示程序包(available:未安装但可用)
info […]查看程序包infomation
install package1 [package2] […]安装程序包
reinstall package1 [package2] […]重新安装程序包
update [package1] [package2] […]升级程序包
remove | erase package1 [package2] […]卸载程序包
provides | whatprovides feature1 [feture2] […]查看某个功能由哪些程序包提供
clean [packages | metadata | expire-cache | rpmdb | plugins| all]清楚本地缓存
search string1 [string2] […]以指定的关键字搜索程序包和summary信息,模糊匹配
deplist package1 [package2] […]查看指定的程序包的依赖包
history [info | list | packages-list | packages-info | summary | stats]查看yum事物历史(yum实行修改操作,会触发一次事物,事物有阻塞和隔离,串行执行)
localinstall package_file可用于安装本地的rpm包
localupdate package_file可用于升级本地的rpm包

程序包组相关命令

Command解释
grouplist查看包组
groupinstall group1 group2 …安装包组
groupremove group1 group2 …卸载包组
grouinfo group1 …查看包组详细信息

显示软件包的摘要信息(infomation)

格式:yum info PACKAGE(包名)
类似于 rpm -qi 包名,yum info 没有 rpm -qi 显示的详细全面。但可以显示出安装状态(Installed,Available)
在这里插入图片描述

查询指定的特性(可以是某个文件)是由哪个程序包所提供的

该功能类似于 rpm -qf 包名
命令格式:yum provides 文件
命令格式:yum whatprovides 文件

在这里插入图片描述
说明:
setup-2.8.14-20.el6_4.1.noarch 位于仓库中,尚未安装。但若安装了该包,也会生成/etc/fstab
setup-2.8.14-20.el6_4.1.noarch 显示已被安装。当前 /etc/fstab 由该包生成

yum甚至可以查询出未来将会存在的文件属于的软件包
例如:查询 /etc/named.conf 将会由哪个包生成
首先,说明目前实验目录中无 named.conf
在这里插入图片描述
输入:yum provides /etc/named.conf
在这里插入图片描述
显示两个包,都位于 base 仓库中,尚未安装。

清楚本地 yum 缓存

yum 仓库若更新,则本地缓存就没有意义了。所以本地缓存需要清空。
命令格式:yum clean [ packages | metadata | expire-cache | rpmdb | plugins | all]

手动在本地构建yum缓存

yum客户端下载远程yum文件。在本地生成缓存
命令:yum makecache

yum安装程序包(应用程序)

基本格式:yum install [-y] PACKAGES1 PACKAGES2 …

说明:
若安装多个包,则使用包名之间使用空格隔开
安装过程中,yum会询问用户是否安装,使用 yum -y 选项,表示自动回答 yes。

例如:安装 wget
命令:yum install wget
在这里插入图片描述

重新安装软件包

命令格式:yum reinstall [-y] package1 [package2] […]

升级软件包

命令格式:yum update [package1] [package2] […]
命令格式:yum update-to PACKEGES-VERSION
说明:update-to 可以指定版本号

检查可升级的包

命令:yum check-update

卸载软件包

命令格式:yum remove | erase package1 [package2] […]
注意:卸载此包时会把依赖于此包的包卸载

本地安装升级 RPM 包

在 RHEL 6 / Centos 6 可以直接使用 install ,update 命令安装本地 rpm 包
命令格式:yum install rpm包路径
命令格式:yum update rpm包路径

或者使用 localinstall,localupdate。在 RHEL5 / Centos 5 以下必须使用 localinstall,localupdate。
命令格式:yum localinstall rpm包路径
命令格式:yum localupdate rpm包路径

yum 安装 rpm 默认会查询软件包来源合法性,但有时没提供密钥,无法安装。使用 --nogpgcheck 选项。可以避免 yum 做校验。
命令:yum localinstall --nogpgcheck rpm包路径

降级

命令格式:# yum downgrade package1 [package2] […]

显示程序包的依赖关系(查看指定包所依赖的capabilities)

命令格式:yum deplist package1 [package2] […]

查看yum事务历史

命令格式:yum history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]

如何使用光盘当作本地yum仓库:

(1)挂载光盘至某目录,例如 /media/cdrom
mount -r -t iso9660 /dev/cdrom /media/cdrom
(2)创建 yum 仓库指向配置文件
[NAME]
name=
baseurl=
gpgcheck=
enabled=

yum的命令行选项:

--nogpgcheck:禁止进行gpg check
-y:自动回答为“yes”
-q:静默模式
--disablerepo=repoidglob:临时禁用此处指定的repo
--enabledrepo=repoidglob:临时启用此处指定的repo
--noplugins:禁用所有插件

创建 yum 仓库

创建仓库需要使用 createrepo 命令

只需要在存有 rpm包的目录中使用 此命令即可
命令格式:createrepo [OPTIONS] DIR(DIR就是RPM包所在的目录)

剩余的工作只需将这个目录作为 baseurl 提供出去就可以了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值