Yum解决了rpm不能解决的依赖关系,但是YUM是依赖RPM运行的
yum服务器
所有要发行的rpm包都放在yum服务器上以提供别人来下载,rpm包根据kernel的版本号,cpu的版本号分别编译发布。yum服务器只要提 供简单的下载就可以了,ftp或者httpd的形式都可以。yum服务器有一个最重要的环节就是整理出每个rpm包的基本信息,包括rpm包对应的版本 号,conf文件,binary信息,以及很关键的依赖信息。在yum服务器上提供了createrepo工具,用于把rpm包的基本概要信息(元数据)做成一张" 清单",这张"清单""就是描述每个rpm包的spec文件中信息。
yum 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),yum安装完成后自动删除已安装程序的安装包,但是不会删除元数据,方便下次使用
Yum仓库相当于rpm仓库+元数据
Createrepo命令(用于分析每个包后在rpm仓库中生成元数据)
当第一次使用yum管理软件时,yum会自动下载所需要的headers放置在/var/cache/yum目录下;
Yum仓库---->yum 缓存---->本地安装
yum的配置文件:
1./etc/yum.conf:为所有仓库提供公共配置[main]cachedir: yum缓存的目录,yum在此路径下存储下载的rpm包和数据库,一般是/var/cache/yum。debuglevel:除错级别,0──10,默认是2logfile: yum的日志文件,默认是/var/log/yum.log。pkgpolicy:包的策略。
一共有两个选项,newest和last,这个作用是如果你设置了多个repository,而同一软件在不同的repository中同时存 在,yum应该安装哪一个,如果是newest,则yum会安装最新的那个版本。如果是last,则yum会将服务器id以字母表排序,并选择最后的那个 服务器上的软件安装。一般都是选newest。distroverpkg:指定一个软件包,yum会根据这个包判断你的发行版本,默认是redhat-release,也可以是安装的任何针对自己发行版的rpm包。exactarch:有两个选项1和0,代表是否只升级和你安装软件包cpu体系一致的包,如果设为1,则如你安装了一个i386的rpm,则yum不会用i686的包来升级。retries: 网络连接发生错误后的重试次数,如果设为0,则会无限重试。tolerent: 也有1和0两个选项,表示yum是否容忍命令行发生与软件包有关的错误,比如你要安装1,2,3三个包,而其中3此前已经安装了,如果你设为1则yum不会出现错误信息,默认是0。除了上述之外,还有一些可以添加的选项,如exclude: 排除某些软件在升级名单之外,可以用通配符,列表中各个项目要用空格隔开,这个对于安装了诸如美化包,中文补丁的朋友特别有用。gpgcheck: 有1和0两个选择,分别代表是否是否进行gpg校验,如果没有这一项,默认好像也是检查的。
plugins: 是否启用所有的插件(plug-in),默认为0,代表不启用。由于RHEL为YUM提供了一个名为rhn-plugin的插件,以便读取RHN提供的YUM下载源,因此你必须保持这个参数为1,才能顺利使用RHN的YUM下载源来安装、升级你的RHEL。
metadata_expire: 定义YUM缓存中数据的过期时间,单位为秒。
proxy: 指定读取下载源时使用的代理服务器的路径(URL)。
2. /etc/yum.repos.d/*.repo:为仓库的指向提供配置
仓库指向的定义: [repositoryID] name=Some name for this repository baseurl=url://path/to/repository/ enabled={1|0} gpgcheck={1|0} gpgkey=URL enablegroups={1|0} failovermethod={roundrobin|priority} 默认为:roundrobin,意为随机挑选;baseurl有多个时,会轮询挑选,如果选 roundrobin,会随机挑选
cost=(默认为1000)
YUM工具的使用:
yum的命令行选项:
--nogpgcheck:禁止进行gpg check; -y: 自动回答为“yes”; -q:静默模式; --disablerepo=repoidglob:临时禁用此处指定的repo; --enablerepo=repoidglob:临时启用此处指定的repo; --noplugins:禁用所有插件; yum的repo配置文件中可用的变量: $releasever: 当前OS的发行版的主版本号; $arch: 平台; $basearch:基础平台; $YUM0-$YUM9下面的配置中使用了变量:
man手册输出
yum [options] [command] [package ...] command is one of: * install package1 [package2] [...] * update [package1] [package2] [...] * update-to [package1] [package2] [...] * check-update * upgrade [package1] [package2] [...] * upgrade-to [package1] [package2] [...] * distribution-synchronization [package1] [package2] [...] * remove | erase package1 [package2] [...] * list [...] * info [...] * provides | whatprovides feature1 [feature2] [...] * clean [ packages | metadata | expire-cache | rpmdb | plugins | all ] * makecache * groupinstall group1 [group2] [...] * groupupdate group1 [group2] [...] * grouplist [hidden] [groupwildcard] [...] * groupremove group1 [group2] [...] * groupinfo group1 [...] * search string1 [string2] [...] * shell [filename] * resolvedep dep1 [dep2] [...] * localinstall rpmfile1 [rpmfile2] [...] (maintained for legacy reasons only - use install) * localupdate rpmfile1 [rpmfile2] [...] (maintained for legacy reasons only - use update) * reinstall package1 [package2] [...] * downgrade package1 [package2] [...] * deplist package1 [package2] [...] * repolist [all|enabled|disabled] * version [ all | installed | available | group-* | nogroups* | grouplist | groupinfo ] * history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats] * check * help [command]
总结用法:
显示仓库列表:
repolist [all|enabled|disabled]显示程序包:
list # yum list [all | glob_exp1] [glob_exp2] [...] # yum list {available|installed|updates} [glob_exp1] [...]安装程序包:
install package1 [package2] [...] reinstall package1 [package2] [...] (重新安装) 升级程序包: update [package1] [package2] [...] downgrade package1 [package2] [...] (降级) 检查可用升级: check-update 卸载程序包: remove | erase package1 [package2] [...] 查看程序包information: info [...] 查看指定的特性(可以是某文件)是由哪个程序包所提供: provides | whatprovides feature1 [feature2] [...] 清理本地缓存: clean [ packages | metadata | expire-cache | rpmdb | plugins | all ] 构建缓存: makecache搜索:
search string1 [string2] [...] 以指定的关键字搜索程序包名及summary信息; 查看指定包所依赖的capabilities: deplist package1 [package2] [...]查看yum事务历史:
history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]
安装及升级本地程序包:
* localinstall rpmfile1 [rpmfile2] [...] (maintained for legacy reasons only - use install) * localupdate rpmfile1 [rpmfile2] [...] (maintained for legacy reasons only - use update) 包组管理的相关命令: * groupinstall group1 [group2] [...] * groupupdate group1 [group2] [...] * grouplist [hidden] [groupwildcard] [...] * groupremove group1 [group2] [...] * groupinfo group1 [...]话题:创建YUM仓库
步骤:
服务器端配置:
创建要设置为yum源的目录,并且拷贝一些rpm包到此目录
使用createrepo命令生成repodata信息
如果想提供远程仓库需要配置httpd服务器到发布目录
客户端配置:
在/etc/repo.d目录下新建一个repo文件
测试:发现最后一行我们配置的local仓库生效了