简介
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 提供出去就可以了