rpm包管理详解(1)

来源:互联网 发布:做淘宝客服需要交钱吗 编辑:程序博客网 时间:2024/06/05 05:25

转自: http://blog.csdn.net/dingyuanpu/article/details/5572300


在Linux世界里流行两种包管理方式,分别是redhat系的rpm和debian系的deb。其中rpm的使用更为广泛,我打算接下来分多章详细介绍一下rpm的包管理机制。

包管理是操作系统用来维护各组件版本的一种方式,对于软件发行者来说,将自己的程序制作成标准的rpm格式也会使得程序的安装、升级和卸载变得非常容易。因此linux下几乎所有流行的程序都有rpm格式的包,有些是发行者自己打包,也有些第三方提供rpm包,例如redhat发行版里的rpm都是redhat自己打包,他们定期打patch,升级并且维护包之间的依赖关系,他们制作的rpm包是最可以信任的。除此之外,http://dag.wieers.com/rpm/这个网站也提供很多较新的rpm包,在redhat官方找不到的包很多在这里都可以找到。

在网上搜索rpm包最常用的方式是通过rpmfind.net进行搜索,它会提供各个发行版下的各个版本的包下载。注意一定要找到正确的发行版下对应的包,由于依赖底层库和库版本的不同,不同版本的发行版的包最好不要混装。

今天先介绍rpm的安装,基本的安装命令如下

rpm -ivh xxxxxxx.rpm

i代表安装,e代表卸载,v代表显示安装过程,h代表显示#号样式的进度

下面看一个简单的例子

[leconte@localhost soft]$ sudo rpm -ivh enca-1.9-4.el5.rf.i386.rpmwarning: enca-1.9-4.el5.rf.i386.rpm: Header V3 DSA signature: NOKEY, key ID 6b8d79e6Preparing...                ########################################### [100%]   1:enca                   ########################################### [100%]

rpm包这样就装上了,但是很多时候没有这么顺利,由于rpm包之间可能存在依赖关系,在依赖关系无法满足的情况下默认是没法继续安装的;再比如某个包已经安装过,如果想再装一次,也是无法继续的。这种情况下可以通过一些参数来强制执行,但是强制执行的后果可能是装的程序无法正常使用,因为它依赖的包你系统并没有提供。

安装时常用的参数如下:
--test 测试安装,并不真实安装而仅仅是测试能否安装。
--nodeps 忽略依赖关系强行安装
--force 强制替换现有版本
--noscripts 仅安装文件不执行附加脚本

下面演示一个强行安装的例子

[leconte@localhost soft]$ sudo rpm -ivh awstats-6.9-1.noarch.rpmerror: Failed dependencies:        perl(LWP::UserAgent) is needed by awstats-6.9-1.noarch[leconte@localhost soft]$ sudo rpm -ivh awstats-6.9-1.noarch.rpm --nodepsPreparing...                ########################################### [100%]   1:awstats                ########################################### [100%]

awstats依赖的PERL模块LWP::UserAgent并没有装,因此默认是无法安装的,但是通过nodeps可以强制安装,而LWP::UserAgent可以通过cpan去后续安装。也就是说,如果你明白你在做什么,那么强制安装并不可怕。

需要注意的是,rpm包的安装和卸载都需要在系统的rpm数据库里保存信息,因此需要root权限。

原创粉丝点击