1、需要考核的练习:请参考以下文档,实现配置本地 Yum 源库,适用本地目录上建立一个 Yum 源库,RPM 包来自安装光盘。在使用 Linux 系列版本时,我们常常会有需要 安装 RPM 库的情况。同 Windows环境相同,rpm 包是 Linux 很多版本的可执行程序版本。但是在我们使用时,经常会遇到 rpm 相互依赖的困境。我们安装一个 RPM,可能需要连带安装很多依赖的 rpm,需要我们一个个的进行寻找安装。当我们需要的 rpm 包都在安装光盘介质上,一个个的寻找定位还可以。但是如果我们需要升级 RPM 或者手边恰好没有光盘,那么寻找的难度就很大了。这个时候,我们可以借助 Yum 工具。
2、1、 Yum 简说Yum 是在目前 Linux 主流版本中配置的一个 shell 前端 软件管理器。在使用 yum进行指定包安装的时候,可以自动的进行依赖软件的定位、指定服务器的下载,实现一次性的将所有包安装完成。Yum 使用有很多好处,最大的好处莫过于简单化 RPM 软件包的安装、删除和更新,同时自动的解决了软件包依赖和下载包库(Repository)方便配置问题。在 Yum 的使用上,配置文件管理和使用是一个重点内容。具体来说,有两个主要配置文件需要关注,分别为 Yum 服务端配置文件和 Yum 源配置文件。 Yum 服务端配置文件/etc/yum.conf在目前流行的 Linux 版本中
3、,大都已经配置了 Yum 工具。配置文件/etc/yum.conf 中,详细定义了 yum 的工作方式和参数。rootbspdev etc# cat /etc/yum.confmain /主配置信息cachedir=/var/cache/yum /保存缓存和数据库文件的位置keepcache=0debuglevel=2 /调试信息输出等级logfile=/var/log/yum.log /日志位置distroverpkg=redhat-release /yum 使用的 RPM 包 distribution 版本;tolerant=1 /默认为 0,如果为 1 表示当安装多个包是,失败了继续安装
4、其他;exactarch=1 /精确匹配硬件平台,只有完全相同才更新;obsoletes=1 /当使用升级模式时,一些包没有用了,可以删除(取值 1)gpgcheck=0 /安装时是否检查 RPM 包的 PGP 签名;plugins=1 /Yum 插件是否可用bugtracker_url=http:/bugs.centos.org/yum5bug# Note: yum-RHN-plugin doesnt honor this.metadata_expire=1hinstallonly_limit = 5# PUT YOUR REPOS HERE OR IN separate files nam
5、ed file.repo# in /etc/yum.repos.d /定义可选的位置rootbspdev etc# Yum 源配置/etc/yum.repos.d/*.repo要定义好 yum 源库的信息,以配置文件的方式进行。rootbspdev etc# cd /etc/yum.repos.d/rootbspdev yum.repos.d# ls -ltotal 8drwxr-xr-x 2 root root 4096 Jun 17 05:47 bak /笔者自己做的备份-rw-r-r- 1 root root 72 Jun 17 05:52 localyum.reporootbspdev
6、 yum.repos.d# cd bakrootbspdev bak# ls -ltotal 36-rw-r-r- 1 root root 1926 Feb 25 16:20 CentOS-Base.repo-rw-r-r- 1 root root 631 Feb 25 16:20 CentOS-Debuginfo.repo-rw-r-r- 1 root root 626 Feb 25 16:20 CentOS-Media.repo-rw-r-r- 1 root root 6118 Feb 25 16:20 CentOS-Vault.reporootbspdev bak# pwd/etc/yu
7、m.repos.d/bakrootbspdev bak# cat CentOS-Base.repo# CentOS-Base.repo# The mirror system uses the connecting IP address of the client and the# update status of each mirror to pick mirrors that are updated to and# geographically close to the client. You should use this for CentOS updates# unless you ar
8、e manually picking other mirrors.# If the mirrorlist= does not work for you, as a fall back you can try the# remarked out baseurl= line instead.#base /容器名称name=CentOS-$releasever Base /容器说明信息mirrorlist=http:/mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os /容器地址#baseurl=http:/mirror
9、.centos.org/centos/$releasever/os/$basearch/gpgcheck=1gpgkey=file:/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5#released updatesupdatesname=CentOS-$releasever - Updatesmirrorlist=http:/mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates#baseurl=http:/mirror.centos.org/centos/$releasever/u
10、pdates/$basearch/gpgcheck=1gpgkey=file:/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5(篇幅原因,省略部分)rootbspdev bak#目前,Yum 支持的源地址种类很多,有本地、FTP 和 Internet 等。三种方式的差异仅仅在于客户端访问 Yum 的方式不同。本篇仅介绍本地 Yum 源的配置和使用。2、配置本地 Yum 源库目的是在本地目录上建立一个 Yum 源库,RPM 包来自安装光盘。使用 Mount 命令,将插入的光盘 Mount 到 Linux 的目录结构上。rootbspdev /# mount /dev/c
11、drom /media/将光盘 mount 到/media 目录上mount: block device /dev/cdrom is write-protected, mounting read-onlyrootbspdev /# cd /mediarootbspdev media# ls l/挂载 CentOS 版本;total 484dr-xr-xr-x 2 root root 432128 Mar 5 10:16 CentOS /CentOS RPM 包位置-r-r-r- 1 root root 14 Mar 2 05:00 CentOS_BuildTag-r-r-r- 1 root r
12、oot 212 Oct 1 2009 EULA-r-r-r- 1 root root 18009 Oct 1 2009 GPLdr-xr-xr-x 4 root root 2048 Mar 5 10:12 images(篇幅原因,省略部分)-r-r-r- 1 root root 7058 Mar 5 10:22 TRANS.TBLrootbspdev media#rootbspdev CentOS# pwd/media/CentOS安装 repository 工具包。rootbspdev CentOS# pwd/media/CentOS rootbspdev CentOS# rpm -ivh
13、createrepo-0.4.11-3.el5.noarch.rpmwarning: createrepo-0.4.11-3.el5.noarch.rpm: Header V3 DSA signature: NOKEY, key ID e8562897Preparing. # 100%1:createrepo # 100%将 rpm 包拷贝的准备好的/yum/server 中去。rootbspdev CentOS# cd /rootbspdev /# mkdir /yum/server -prootbspdev media# cd CentOSrootbspdev CentOS# cp * /
14、yum/server/You have mail in /var/spool/mail/rootrootbspdev CentOS#这样,我们将所有的 rpm 包保存在了/yum/server 上。最后,我们建立 reposity 的索引。rootbspdev CentOS# createrepo /yum/server2669/2669 - totem-devel-2.16.7-7.el5_6.1.i386.rpm Saving Primary metadataSaving file lists metadataSaving other metadata3、配置参数文件修改服务端文件,设置行
15、为。rootbspdev CentOS# vi /etc/yum.confmaincachedir=/var/cache/yumkeepcache=0debuglevel=2logfile=/var/log/yum.logdistroverpkg=redhat-releasetolerant=1exactarch=1obsoletes=1gpgcheck=0 /本地一般不需要设置该选项plugins=1bugtracker_url=http:/bugs.centos.org/yum5bug# Note: yum-RHN-plugin doesnt honor this.metadata_exp
16、ire=1hinstallonly_limit = 5# PUT YOUR REPOS HERE OR IN separate files named file.repo# in /etc/yum.repos.d在客户端,我们创建新的容器和配置文件。首先我们先将原有的信息备份保存。-客户端rootbspdev CentOS# cd /rootbspdev /# mkdir /etc/yum.repos.d/bakrootbspdev /# mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak/rootbspdev /# cd /etc/yum.repo
17、s.d/bak/rootbspdev bak# ls -ltotal 36-rw-r-r- 1 root root 1926 Feb 25 16:20 CentOS-Base.repo-rw-r-r- 1 root root 631 Feb 25 16:20 CentOS-Debuginfo.repo-rw-r-r- 1 root root 626 Feb 25 16:20 CentOS-Media.repo-rw-r-r- 1 root root 6118 Feb 25 16:20 CentOS-Vault.reporootbspdev bak# cd /rootbspdev /# vim
18、/etc/yum.repos.d/localyum.repolocalyum /容器名Name=localyumbaseurl=file:/yum/server /目录enable=1gpgcheck=04、验证启动 yum 程序最后,通过配置的方法,进行验证。/清理缓存rootbspdev yum.repos.d# yum clean allLoaded plugins: fastestmirror, securityCleaning up EverythingCleaning up list of fastest mirrors/列出可用的 mirrorsrootbspdev yum.re
19、pos.d# yum listLoaded plugins: fastestmirror, securityDetermining fastest mirrorslocalyum | 951 B 00:00 localyum/primary | 950 kB 00:00 最后,可以使用 yum 安装程序。rootbspdev # yum install elfutils-libelf-develLoaded plugins: fastestmirror, securityLoading mirror speeds from cached hostfileSetting up Install P
20、rocessResolving Dependencies Running transaction check- Package elfutils-libelf-devel.i386 0:0.137-3.el5 set to be updated Processing Dependency: elfutils-libelf-devel-static-i386 = 0.137-3.el5 for package: elfutils-libelf-devel Running transaction check- Package elfutils-libelf-devel-static.i386 0:
21、0.137-3.el5 set to be updated Finished Dependency ResolutionDependencies Resolved =Package Arch Version Repository Size=Installing:elfutils-libelf-devel i386 0.137-3.el5 localyum 24 kInstalling for dependencies:elfutils-libelf-devel-static i386 0.137-3.el5 localyum 66 kTransaction Summary=Install 2
22、Package(s)Upgrade 0 Package(s)Total download size: 90 kIs this ok y/N: yDownloading Packages:-Total 85 MB/s | 90 kB 00:00 Running rpm_check_debugRunning Transaction TestFinished Transaction TestTransaction Test SucceededRunning TransactionInstalling : elfutils-libelf-devel 1/2Installing : elfutils-libelf-devel-static 2/2Installed:elfutils-libelf-devel.i386 0:0.137-3.el5 Dependency Installed:elfutils-libelf-devel-static.i386 0:0.137-3.el5 Complete!5、结论Yum 工具是可以帮助我们解决很多依赖困扰的有用软件。无论是个人开发还是团队开发,都可以发挥重要的作用。