摘要:阐述Linux操作系统选软件安装中两种常见的形式,并分析了RPM软件包管理存在的问题,引入YUM技术并对YUM仓库的安装、配置与搭建进行研究,实现使用YUM仓库解决RPM管理中存在的依赖关系。
关键词:YUM仓库 RPM 开源软件 Linux系统
对于Linux初学者来说,安装软件是一件很让人头疼的事,因为在Linux以开源著称,Linux下安装软件不像在 Windows中那样简单。在Linux系统中大多数软件提供的是源代码,而不是现成的可执行文件,这就要求用户根据自己系统的实际情况和自身的需要来配置、编译源程序后,软件才能使用。这也是Linux之所以不能被普遍人群所接受的重要原因。随着Linux的不断升级,软件的安装也在不断的改进,本文旨在研究Linux下的YUM技术。
1 问题描述
随着Linux的不断升级与进步,目前Linux下的软件安装包主要有两种形式,其一是RPM包,其二是压缩成*.tar.gz的形式。*.tar.gz的格式需要有一定的Linux专业功底,RPM包是最受欢迎的形式。Linux是开源的操作系统,并且一向推崇自由软件,正是因为开源与自由造成了RPM包具有很深的依赖关系。使用RPM在Linux中安装软件或者服务时经常会涉及到rpm包的依赖,往往我们在安装A软件时,提示会依赖于B,安装B时会依赖于C,安装时会……等一系列的依赖关系,YUM仓库技术可以自动解决RPM的依赖关系,方便软件的安装。因此本文的研究具有重要的意义。
2 YUM技术介绍
Yum(全称为Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
我们在安装好Linux后要进行YUM源的设置,是为了方便日后对软件包的管理,解决单独安装RPM软件包时可能产生的软件包依赖关系。在企业中,我们会设置企业自己的YUM源(库)方便企业Linux系统(主要是红帽和红帽的Fedora)对软件包的管理,更重要的原因是保证YUM源的安全性,因为一个软件包从源头就被修改过或者做过手脚的话,那么这样的软件的安装已经没有什么意义了。
3 YUM仓库的搭建
第一步:设置虚拟光驱,装入Red Hat Enterprise Linux 6.0光盘,如图1,图2所示。
第二步:挂在光驱到/mnt/目录下。
root@seashorewang ~]# mount /dev/cdrom /mnt/
mount: block device /dev/sr0 is write-protected, mounting read-only
第三步:创建cangku文件夹,并拷贝/mnt/Packages/下的所有文件到cangku文件下。
[root@seashorewang /]# mkdir cangku
[root@seashorewang /]#cd cangku
[root@seashorewang /]# cd /cangku
[root@seashorewang cangku]# cp -r /mnt/Packages/ /cangku/
说明:因为光盘中的Packages目录中的内容过大,需要1-2分钟的等待,当然不同配置的计算机的时耗不一样。
第四步:安装createrepo文件。
[root@seashorewang yum.repos.d]# cd /mnt/Packages/
[root@seashorewang Packages]# rpm -e creterapo-0.9.8.4.el6.noarch deltarpm-3.5-0.5.20090913git.el6.
I686 python-deltarpm-3.5-0.5.20090913git.el6.i686
[root@seashorewang Packages]#rpm -ivh createrepo-0.9.8-4.el6.noarch.rpm
Warning: createrepo-0.9.8.4.el6.noarch.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY error: Failed dependendcies:
Deltarpm is needed by createrepo-0.9.8-4.el6.noarch
Python-deltarpm is needed by createrepo-0.9.8-4.el6.noarch
说明:这里因为createrepo-0.9.8-4.el6.noarch.rpm软件包依赖于另外两个软件包,所以安装出现了错误。
[rot@seashorewang Packages]# rpm -ivh createrepo-0.9.8-4.el6.noarch.rpm deltarpm-3.5-0.5.20090913git.el6.i686.rpm pytho
Warning: createrepo-0.9.8-4.el6.noarch.rpm: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY
Preparing... ###########################[100]
1:deltarpm ###########################[33%]
2:python-deltarpm ###########################[67%]
3:createrepo ###########################[100%]
说明:这里将三个软件包一起安装,可以自动解决依赖关系。
第五步:创建依赖关系。
[root@seashorewang repodata]# cd /
[root@seashorewang /]# createrepo -g /mnt/repodata/3c26ed953dc3d25ef7bc8f1ff057le771cc16fefe6623ba654ele33a68cbaelb-comps-rhel6-Server.xml.gz /cangku/Packages/
2168/2679 -hunspell-nb-2.0.100.5.1.el6.noarch.rpm
Iso-8859-l encoding on Ville Skytt?
2679/2679 -k3b-1.0.5-13.el6.i686.rpm
Saving Primary metadata
Saving file lists mesadata
Saving other metadata
说明:这里的/cangku/Packages/目录一定要和后面创建的配置文件一致。
第六步:编写配置文件。
[root@seashorewang /]# cd /etc/yum.repos.d/
[root@seashorewang yum.repos.d]# ls
wangluocangku.repo
说明:仓库的配置文件保存到/etc/yum.repos.d/目录下,这个非常重要。
[root@seashorewang yum.repos.d]# vim wodecangku.repo
[myyum]
name=wodecangku
Baseurl=file:///cangku/Packages/
endabled=1
Gpgchech=0
说明:以上是配置文件的内容,下面对每一项逐一介绍。
[ ]是仓库名字,这个可以随意;
Name=….这个你可以理解为仓库的描述,这个可以不写这一行;
Baseurl=file:///cangku/Packages,这里解释一下仓库的baseurl可以指向本地,ftp和互联网,所有才有了三种配置。file:// ftp:// http://,这里要强调的是Linux中一切都以根开始的那路径上要加个/,所以最后是file:///cangku/Packages,意思是在本地的/ cangku / Packages下;
Enable=1,这里是说是否用户仓库,1是启用,0是不启用;
Gpgcheck=0是说是否检查软件的KEY,我一般都不检查;
Gpgkey=…这里是说你的KEY文件在哪里,默认为不启用,指定Red Hat发行版数字签名公钥文件。
第七步:测试。
[root@seashorewang yum.repos.d]# yum install xinetd
Loaded plugins: refresh-packagekit, rhnplugin
This system is not registered with RHN.
RHN support will be disabled.
Myyum | 2.0 kB 00:00...
Myyum/primary |1.3 MB 00:00...
Myyum 2679/2679
Setting up Install Process
Resolving Dependencies
--> Running taansaction check
---> Package xinetd.i686 2:2.3.14-29.el6 set to be updated
-->Finished Dependency Resolution
Dependencies Resolved
Package Arch Version Repository Size
Installing:
Xinetd i686 2:2.3.14-29.el6 myyum 121k
Transaction Summary
Install 1 Package(s)
Upgrade 0 Package(s)
Total download size: 121 k
Installed size:258 k
Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Rransaction
Warning: RPMDB altered outside of yum.
Installing : 2:xinetd-2.3.14-29.el6.i6861/1
Installed:
Xinetd.i686 2:2.3.14.29.el6
Complete!
4 总结
Linux下软件的安装分为源代码和RPM包,RPM包的使用有效解决了大文件编译难的问题,但是却存在很多依赖关系,为了能够自动解决依赖关系出现了YUM技术,文章对YUM技术进行研究并详细介绍了YUM仓库配置、搭建与测试的具体步骤。
参考文献:
[1]王海宾,白尚旺,等.基于Observer模式的AS/RS调度系统设计与实现[J].计算机技术与发展,2009,19(3):110-113.
[2]鸟哥.鸟哥的Linux私房菜基础篇(第三版)[M].机械工业出版社,2009.7.
[3]鸟哥.鸟哥的Linux私房菜服务器架设篇(第三版)[M].机械工业出版社,2009.7.
作者简介:
曹新鸿(1971-),男,陕西蓝田人,重庆大学本科学历,工程师,邢台职业技术学院后勤集团职工,研究方向:计算机应用技术。