在Red Hat Linux下,标准的软件包是通过RPM来进行管理的。RPM的全名是Red Hat Package Manager,从名字就知道,它是由Red Hat公司开发的软件包管理系统。使用RPM软件包管理系统有下面这些优点:
1. 安装、升级与删除软件包都很容易
2. 查询非常简单
3. 能够进行软件包的验证
4. 支持源代码形式的软件包
下面的说明,将充分体现出以上四个优点。
RPM软件包通常是以xxx.rpm的格式命名的,就好像HP-UX下标准的软件包是xxx.depot的形式一样。一般,一个标准的RPM软件包的名字能够告诉我们一些信息,例如rhviewer-3.10a-13.i386.rpm,从这样一个名字的RPM软件包,我们可以知道,软件的名称是rhviewer,版本是3.10a,次版本是13,运行的平台是i386。
RPM通常有5种方式来管理RPM软件包:安装、删除、升级、查询和验证。
1. 安装
#rpm -ivh rhviewer-3.10a-13.i386.rpm
其中使用到的参数ivh说明如下:
i: 使用RPM的安装模式
v: 在安装的过程中显示安装的信息
h: 在安装的过程中输出#号
另外,RPM还能够通过FTP来进行远程安装,形式其实和本地安装差不多,只要在文件名的前面加上适当的路径就可以了:
#rpm -ivh ftp://xxxx/rhviewer-3.10a-13.i386.rpm
注意:对于远程安装来说,建议不要忘记h参数,不然可能不知道安装程序是否还在进行。或者,也可以通过--percent参数来知道安装的进度。对于详细帮助信息,可以通过#rpm --help或者#man rpm来获得。
在安装过程中,可能会经常遇到以下几种情况:
<1>重复安装软件包
如果要安装的软件之前已经安装过,就会在安装过程中出现以下错误信息:
#rpm -ivh rhviewer-3.10a-13.i386.rpm
package rhviewer-3.10a-13 is already installed
如果确定重新安装一次,可以加上--replacepkgs参数:
#rpm -ivh --replacepkgs rhviewer-3.10a-13.i386.rpm
<2>软件包中用到的某个文件已经被其他软件包安装
这种情况可能最常出现,多个软件包都包含某个或某些文件,当安装了第一个软件包,再安装其他软件包的时候,就会出现以下错误:
#rpm -ivh rhviewer-3.10a-13.i386.rpm
rhviewer /usr/bin/rhviewer conflicts with file from msviewer-1.10b-01
error: rhviewer-3.10a-13.i386.RPM cannot be installed
此时,可以用--replacefiles参数:
#rpm -ivh --replacefiles rhviewer-3.10a-13.i386.rpm
<3>软件包之间的相关性
有的时候,一个软件包的作用要基于另外一个软件包,如果安装该软件包时候没有安装需要的另外一个软件包,就会有错误信息:
#rpm -ivh rhviewer-3.10a-13.i386.rpm
failed dependencies: rhviewer is needed by rhpainter-2.24-20
此时,建议先安装这个需要的软件包。不过,如果你愿意尝试一下是否不安装这个需要的软件包是否也能够正常使用你真正要安装的软件的话,可以加上--nodeps参数:
#rpm -ivh --nodps rhviewer-3.10a-13.i386.rpm
2. 删除
#rpm -e rhviewer
注意:这里接的不是安装时候软件包的名字rhviewer-3.10a-13.i386.rpm,而只要用rhviewer或者rhviewer-3.10a-13就可以了。建议的方式是先用RPM查询出你要删除的软件,然后用该命令删除。
这里最常出现的错误提示就是,当你要删除的软件包被其他软件包关联时候,就会出现错误提示:
#rpm -e rhviewer
removing these packages would break dependencies: rhviewer is neededby rhpainter-2.24-20
3. 升级
更新软件包的版本到最新版本,也是经常用到的:
#rpm -Uvh rhviewer-3.10a-13.i386.rpm
升级软件的模式其实是先删除旧软件包,然后再安装新软件包。而且,你还可以选择用这种升级的模式来安装软件包,因为,没有旧软件包的情况下,此升级方式仍然可正常运行。
如果系统中有旧版本存在,你就可以看到以下信息:
#rpm -Uvh rhviewer-3.10a-13.i386.rpm
saving /etc/rhviewer.conf as /etc/rhviewer.conf.rpmsave
如果,你要降低当前版本到更老的版本,一个办法就是删除该版本,然后再重新安装旧的版本,也可以用--oldpackage参数来进行“升级”:
#rpm -Uvh --oldpackage rhviewer-3.10a-13.i386.rpm
补充说明:
还有一种升级的安装方式:更新。
#rpm -Fvh rhviewer-3.10a-13.i386.rpm
更新和普通升级的方式是,当系统中没有旧版本时,普通的升级安装仍然会安装该软件,而更新的模式就不会安装。
4. 查询
#rpm -q rhviewer
rhviewer-3.10a-13
如果要查询的软件忘记了名字,可以用#rpm -qa来显示出所有的已经安装的软件。
更详细的软件信息,可以用#rpm -qi来查询。
5. 验证
#rpm -V rhviewer
说明:验证rhviewer软件包的正确性
#rpm -Vf /bin/vi
说明:验证包含/bin/vi文件的软件包
#rpm -Va
说明:验证所有软件包
#rpm -Vp rhviewer-3.10a-13.i386.rpm
说明:使用.rpm文件来验证软件包的正确性
验证模式会比较原始软件包信息及安装在系统中的软件包文件信息,包括每个文件的大小、MD5 checksum、权限、类型、拥有者及所属的文件组。在验证后若没有任何输出,表示软件包正常。如果有不一致的地方,RPM将会显示出它们的错误码。下面列出一些可能的错误码:
5: MD5校验码不匹配
S: 文件大小不匹配
L: 符号连接错误
T: 文件修改时间不匹配
D: 设备属性不匹配
U: 用户不匹配
G: 文件组不匹配
M: 模式不匹配,包括权限和文件类型