CentOS或者RHEL 系统环境下,RPM 的依赖性是个很让人头疼的问题。每次系统安装完成事后,想再装一个软件包,敲下回车以前,都会心惊胆战,生怕跳出个依赖性错误。而在一个依赖性错误的背后,可能还牵连着更多的依赖性。这个问题让不少 Linux 用户望而生畏。 sql
RPM 包的依赖关系提及来是简单的由于它所谓的依赖关系仅仅是一个个简单的如“要安装 A,须要提早准备好 a1, a2, a3”这样的条件。 oop
例如,当咱们安装gcc时。找到安装光盘,当心翼翼地挂载上,并找到了gcc-4.1.2-50.el5.i386.rpm 尝试着用 url
rpm -ivh gcc-4.1.2-50.el5.i386.rpm spa
进行安装。系统告之缺乏 glibc-devel 和 libgomp,当你试着安装 glibc-devel,系统又提示缺乏 glibc-headers。继续下去,又发现缺乏 kernel-headers。很苦恼,心想若是当初选择了彻底安装该有多好!同时也抱怨怎么Linux就这么难用的啊,要是像Windows下面一直next多好啊!最终,按照依赖提示,递归似的完成了 gcc 的安装。很庆幸的完成了这个任务。其实只是由于这个安装任务的依赖关系还不够复杂到把咱们吓退罢了。 .net
那我强烈推荐使用yum! sqlite
yum 对 RPM 包的处理是一个典型的“空间换时间”过程。经过对源中全部 RPM 包的预处理,生成全部安装包关于包含文件,依赖,冲突等信息的索引,而且以 sqlite 格式存放在 /var/cache/yum 对应目录下面。 blog
用DVD创建本地yum源 递归
既然 yum 已经很好的解决了 RPM 包的依赖问题,要解决的就是速度问题。本地光驱的访问速度甚至快过 100M 局域网,并且在最近一些发行版安装盘中,已经预置好 repo 信息,并存放在名为 repodata 的目录中。能够说安装盘自己就是一个现成的 yum 源。在 CentOS5 中,预置了多个 repo,放在了/etc/yum.repos.d目录中; 索引
首先,把光盘放入光驱,挂载光盘。 it
# mount /dev/hdc /media/cdrom
mount: block device /dev/hdc is write-protected, mounting read-only
CentOS 5.6中能够自动挂载,因此能够不须要建cdrom文件夹来挂载DVD,能够直接使用CentOS_5.6_Final
若是在本地有安装盘镜像,也经过 loop 方式挂载到相应目录。
# mount -o loop CentOS-5.6-i386-bin-DVD.iso /media/cdrom
而后,编辑 yum 源配置文件,添加一个本地 yum 源。这里是一张 CentOS 5.6的 DVD 安装盘,它的 repo 对应是dvd.repo
若是是RHEL Server,则对应的baseurl是
baseurl=file:///media/cdrom/Server
或者直接在/etc/yum.repos.d目录中新建 dvd.repo
而后使用vi打开,写入以下类容:
[dvd]
name=install CentOS DVD
baseurl=file:///media/cdrom
enable=1
gpgcheck=0
完成本地源配置事后,接下来就能够用 yum 进行 RPM 包的补装了。首先,查看刚刚配置好的 yum 源。
yum list
而后,经过熟知的 yum install 来补装软件包。从输出信息能够看到,yum 会帮咱们处理好 RPM 包的依赖关系。同时因为包都在本地,下载的时间几乎能够忽略。
补充说明:经常使用命令
原文地址:http://blog.csdn.net/tsangchoonhsia/article/details/6414780