一、前言 RPM安装软件有一个很繁琐的问题,那就是包与包之间的依赖关系,如果想正常安装和使用软件程序,就必须根据要求一步一步的解决软件之间的依赖关系。那么如果程序使用的包很多,将会很消耗使用人的时间和精力。那么有没有办法解决这一问题呢? 在RPM中我们介绍了RPM软件会记录软件之间的安装信息,其中也包括了软件之间的依赖属性。那么如果我们在安装前就分析这个列表,那么在安装时就能根据软件之间的关系将所需的软件一次性安装起来,这样就能解决这一问题,这就是 YUM 的机制。 二、yum的介绍yum(Yellow dog Updater Modified)是CentOS中属于RPM前段软件包管理器,能从指定的服务器中下载RPM包,并自动分析和处理RPM包之间的依赖关系,最后将依次所依赖的软件包都安装了,而无需繁琐的一个一个安装。 三、yum repository:yum仓库yum仓库的组成部分 3.1、数据
3.2、元数据 小扩展:元数据是怎么来的呢? 使用createrepo工具,能够简洁的快速的将我们所指定的存放大量RPM包的目录,里面所有的RPM包信息都读出来,分析他的依赖关系并生成元数据。所以createrepo可以理解为它是制作yum元数据的工具。 在光盘里其实也有这个元数据,路径在光盘中的 [root@www mnt]# cd repodata/ 里,然后是以 sqlite文件后缀 备注:centos5 是以 xml 后缀,centos6、7是以sqlite数据库的方式存储的 四、yum的配置文件介绍4.1、主配置文件路径 /etc/yum.conf [main] cachedir=/var/cache/yum/$basearch/$releasever #下载RPM包的缓存目录 keepcache=0 #RPM缓存的程序包安装完成后是否保存,0表示不保存,1表示保存 buglevel=2 #调试级别取值范围0-10,默认值为2 logfile=/var/log/yum.log #yum相关日志存放路径 exactarch=1 #是否要平台完全匹配才能安装 obsoletes=1 #需不需要检查已过期的仓库 gpgcheck=1 #是否检查包的完整性和合法性 plugins=1 #是否允许支持yum的插件功能,0表示不允许,1表示允许,建议允许,一般会用yum-fastestmirror这个插件 installonly_limit=5 #允许保留多少个内核包 bugtracker_url=http://bugs.centos.org/set_project.PHP?project_id=16&ref=http://bugs.centos.org/bug_report_page.PHP?category=yum distroverpkg=centos-release #指定一个软件包,yum会根据这个包判断你的发行版本,默认是RedHat-release,也可以是安装的任何针对自己发行版的rpm包 4.2、仓库配置文件路径 /etc/yum.repos.d/*.repo 仓库文件可以有多个,而且一个或几个相关的仓库的配置信息也可保存为一个文件,并且所以的仓库文件名都以 .repo结尾。 [REPOID]#容器名字,必须是唯一的 name=#somenameforthisrepository仓库的名字,仅作一个标识 baseurl=#指定真正仓库所在的路径,可以指多个仓库 #例如:baseurl=file:///media/cdrom #ftp://172.168.1.1/path#备注第二行不能顶格写,否则会出错 mirrorlist=#列出容器可以使用站点,如果不想使用,可以再前面加#注释 enabled={0|1}#指是否启用这个仓库,0表示不启用,1表示启用 gpgcheck={0|1}#是否要检测软件包的合法性,0表示不检测,1表示不检查 gpgkey=#软件包的公钥文件所在路径,例如:gpgkey=file:///media/cdrom/GPG-RPM-KEY-centos-6 cost= #仓库优先级,比如一个软件包在多个仓库都有,那应该选择哪个安装呢?就是根据这个优先级,默认是100, 数字越小表示越优先使用 备注:默认各仓库的用法: base库:通常为系统发行版所提供的程序包(就是光盘) updates库:存放更新包 extra库:存放额外包 epel库:epel库文件 库本身有优先级的,但是仅是在客户端有,服务器端是没有优先级的 小贴士:yum可支持多个协议,包括 ftp、http、nfs和本地文件共享服务 所以仓库配置文件中的 baseurl 一项可以有多个写法,下面是各写法的格式 1)ftp 格式: 2)http 格式: 3)nfs 格式: 4)本地文件共享服务 格式: 五、yum安装步骤 |