in Uncategorized

RPM 的使用

RPM简述



RPM是Redhat Package Manager的缩写,是由RedHat公司开发的软件包安装和管理程序,同Windows平台上

的Uninstaller比较类似。使用RPM,用户可以自行安装和管理Linux上的应用程序和系统工具。



RPM可以让用户直接以binary方式安装软件包,并且可替用户查询是否已经安装了有关的库文件;在用RPM删

除程序时,它又会聪明地询问用户是否要删除有关的程序。如果使用RPM来升级软件,RPM会保留原先的配置

文件,这样用户就不用重新配置新的软件了。RPM保留一个数据库,这个数据库中包含了所有的软件包的资料,

通过这个数据库,用户可以进行软件包的查询。RPM虽然是为Linux而设计的,但是它已经移值到SunOS、

Solaris、AIX、Irix等其它UNIX系统上了。RPM遵循GPL版权协议,用户可以在符合GPL协议的条件下自由

使用及传播RPM。





使用RPM



RPM共有10种基本的模式:它们是安装、查询、验证、删除等。



安装模式:      rpm ?i [安装选项]  <软件包>

查询模式:      rpm ?q [查询选项]

验证模式:      rpm ?V 或 ?verify [验证选项]

删除模式:      rpm ?e  <软件包>

 



使用RPM的一般选项

一般选项可以用于所有的模式。

-v                 显示信息

-h                 用“#”显示完成的进度

–keep-temps        保留临时文件,临时文件通常位于/tmp/rpm-*,这个选项要用于debug。

–quiet             安静工作,只有当出现错误时才给出提示信息

–help              显示帮助

–version            显示当前使用的RPM版本



安装和升级的选项

使用RPM来安装的一般格式为:     rpm ?i  [安装选项] <软件包>

使用RPM来升级的一般格式为:     rpm ?U  [安装选项] <软件包>



比如,要安装一个新的软件包,它的名字为xosvies-1.6.3-5.i386.rpm,使用下面的命令就可以把它安装到系统上:

# rpm  -i xosvies-1.6.3-5.i386.rpm



升级同安装是一样的,只不过升级会把原来低版本的文件删除掉。RPM可以使用FTP安装,这时要指定FTP的完整

路径。使用FTP方式安装时,RPM会先下载所需的软件包,然后再安装。



–force

同–replacepkgs,–replacefiles,–oldpackage一样,当安装的软件版本已经安装在系统上,或者是系统

上现有的版本比要安装的版本高,系统就会发出警告。这时,用户如果坚持安装的话,可以用–force选项。



–nodeps

使用RPM安装前,RPM会检查该软件包的依赖关系,即正确运行该软件包所需的其它软件包是否已经安装。如果没有

安装的话,系统会给出警告。这时,用户如果要强行安装的话,可以使用这个选项。但是作者并不推荐这种做法,

因为这样安装的软件十有八九是不能运行的。



–test

不实际安装,只是检查并显示可能存在的冲突。



查询选项



查询的命令格式如下:  rpm ?q  [查询选项]



这里的选项包括两大类:软件包选项和信息选项。



软件包选项:



<软件包名字>



查询系统上是否已经安装这个软件包,软件包的名字是<软件包名字>



        -a       查询所有安装的软件包



        –whatrequires  <功能>



           查询所有需要<功能>才能正常运行的软件包。



        –whatprovides <功能>



         查询所有能提供<功能>的软件包



        -f <文件>



         查询拥有<文件>的软件包,也就是说,是哪一个软件包安装的<文件>。



        –requiredby <软件包>



         查询所有安装<软件包>所需要的其它软件包。



         -p <软件包名字>



         查询未安装的软件包<软件包名字>。这个软件包可以指定为FTP路径,这时,RPM会下载它的头部信息并查询。



信息选项

-i  显示软件包的信息,包括名称、版本、描述信息。

-R  显示这个软件包所依赖的软件包。 同–requires。

–provides  显示这个软件包所提供的功能

-l  列出这个软件包内所包含的文件。

-s  显示这个软件包的状态,状态是指“normal”“not installed”“replaced”



验证选项

验证的一般格式为:   rpm ?V|–verify [验证选项]

验证会把软件包所安装的软件与原先数据库中存储的软件信息做一个比较。用户可以用RPM来验证已经安装的软件包,

RPM可以验证文件的大小,MD5校验码,文件权限,类型,属主等信息。对于特定软件的选项同查询的选项。



验证输出的格式是一个包括8个字符的字符串,这8个字符中每个字符都代表同数据库中信息所比较的结果。如是结果

是“.”,就代表没有问题。下面是相应字符的意义:



5          MD5校验错
D          设备文件错

U          用户名错
G          组名错

S          文件大小错
L          符号链接错

T          文件修改时间错
M          属性错(包括读写权限和文件类型)



删除选项

删除的一般格式为:  rpm ?e  <软件名>

注意:这里只能是软件名,而不是软件包。



–allmatches

删除<软件包>所指定的所有版本的软件,如果有多个版本存在的话,一般会给出错误码信息。



–nodeps

如果要删除的软件包是别的软件所必需的,在删除时用户会得到警告。这时,如果确认要强行删除,可以使用

–nodeps这个选项。这样一来,相关的软件就不能运行了。



–test   不真正删除,只是测试。



 



RPM使用范例



软件安装



如果用户手头上有一个RPM软件包,可以使用命令:



# rpm ?ivh xanim-27064-3.i386.rpm



安装时出现的错误信息



1.该软件包已经安装



假如用户安装的软件包已经安装,再安装的话会出现下列的错误信息:

# rpm ?ivh   xanim-27064-3.i386.rpm



foo package xanim-27064-3.i386.rpm is already installed



error: xanim-27064-3.i386.rpm cannot be installed



如果用户一定要安装,可以使用:

# rpm ?ivh   xanim-27064-3.i386.rpm  –force



2.软件包之间有冲突



假如用户要安装的软件包里的某些文件,先前已经有其它的软件包安装过,即各种软件包之间有冲突,则会

出现以下的错误信息:

# rpm ?ihv foo-1.0-1.i386.rpm



foo /usr/bin/foo confilicts with file from bar-1.0-1



error: foo-1.0-1.i386.rpm cannot be installed



3.缺少相关的文件



有时安装的RPM软件包需要其它的部件才能安装成功。这时安装时有下面的错误信息:

# rpm ?ihv bar-1.0-1.i386.rpm



failed dependencies: foo is needed by bar-1.0-1



如果用户要强行安装,可以使用命令:

# rpm ?ivh bar-1.0-1.i386.rpm –nodeps



删除软件



要删除软件非常简单,只要执行下面的命令就行:

# rpm ?e xanim



这时,用户要注意使用的是软件的名称xanim,而不是软件包的名称xanim-27.64-3.i386.rpm。



如果要删除的软件是其它软件所需要的,用户会得到类似下面的错误信息:

# rpm ?e xanim



error: xanim is needed by mtv-1.0-1



这表明如果用户删除了xanim,则mtv就不能运行了,因为xanim里的一些软件是mtv运行所需要的。

若用户一定要删除,可以使用下面的命令:

# rpm ?e xanim  –nodeps



升级软件



如果用户以前安装过xanim-27063-1.i386.rpm,现在又得到了xanim-27064-1.i386.rpm,则使用下面

的命令可以升级这个软件包:

# rpm ?Uhv  xanim-27064-1.i386.rpm



实际上,-U参数是告诉RPM先删除原先的版本,再安装新的版本。所以不管以前是否安装过这个软件包,用户

都可以使用rpm ?Uhv命令来安装软件。 



查询软件包



如果用户想要查询某个软件是属于哪个软件包安装的,可以使用命令:

# rpm ?qf xanim



xanim-27.64-3



如果用户得到一个软件包,却不知道它里面有哪些内容,可以使用命令:

# rpm ?qpi xanim-27064-3.i386.rpm



如果用户想知道它会在系统上安装哪些内容,可以使用命令:

# rpm ?qpl xanim-27064-3.i386.rpm



如果用户在Internet上遇到一个软件包,想要知道它里边的内容时,可以使用命令:

# rpm ?qpl ftp://ftp.redhat.com/redhat/RPMS/xanim-27064-3.i386.rom



 



较验



如果用户不小心删除了几个文件,却又不知道到底删除了哪些文件,可以使用下面的命令对系统进行校验:

# rpm ?Va



 



i386.rpm与src.rpm的不同



在Internet上,用户经常会看到这样的目录:RPMS/和SRPMS/。目录RPMS/下面存放的就是一般的RPM软件包,

这些软件包是由软件的原代码编译成可执行文件,再包装成RPM软件包的。而SRPMS/目录下存放的都是以

.src.rpm结尾的文件,这些文件是由软件的源代码包装而成的,用户要安装这类RPM软件包,必须使用命令:



# rpm –recompile vim-4.6-4.src.rpm

这个命令会把源代码解包并编译、安装它,如果用户使用命令:



# rpm –rebuild vim-4.6-4.src.rpm

那么,在安装完成后,还会把编译生成的可执行文件重新包装成i386.rpm的RPM软件包。



 



GnoRPM的使用



GnoRPM是GNU组织开发的RPM软件包管理程序,它是RPM程序的前端程序,是在X Window下运行的图形化的

RPM管理程序。只要用户熟悉了RPM的使用,那么也就会使用GnoRPM了,不过GnoRPM比RPM程序更好用!



GnoRPM的安装



BluePoint Linux和TurboLinux内没有安装GnoRPM,红旗Linux与RedHat Linux内自动安装的就有。

对于前两种用户要自己安装。在http://www.gnome.org下载gnorpm-0.8-5.i386.rpm。注意GnoRPM需要

rpm 3.0版本,如果是rpm 2.5 版本的话(TurboLinux 4.0是rpm 2.5),要先升级到3.0,BluePiont 

Linux里的rpm就是3.0版本,用户可以直接安装。



# rpm ?ihv gnorpm-0.8-5.i386.rpm



然后,在shell提示符下输入gnorpm 就能运行gnorpm。



GnoRPM的使用



     



gnorpm的主窗口如下所示,它有安装、升级、删除、查询、验证、寻找等功能。



安装



点按“Install”后,出现安装的窗口,如下图示:



  



按“Add”,出现选择窗口:



  





这时,选择想要安装的软件包后,按“Add”按钮,回到安装的窗口,这时用户可以选择“Query”来查询

这个软件包,也可以选择“Install”来安装它。升级软件同安装软件类似。



 



删除软件



gnorpm把系统上的软件归为几个大类,如应用程序(Applications)、开发(Development)、文档

(Documentation)等。用户只要在相应类别中找到要删除的软件,然后再点按“Uninstall”按钮,

针对弹出对话框:



  





如果用户确认要删除的话,按“OK”就可以了。



寻找



用户在gnorpm主菜单上按“Find”后,会出现:



  







这时,只要选择适当的寻找标准,gnorpm提供的标准有:“contain file”(包含文件),“are in

 the group ”(在类别……里),“provide”(提供……功能),“require”(需要……),“conflict with”

 (同……冲突),“match label”(标签为)。如上图示,在选择标准“match label”,并在用户输入信息

 “gedit”后,按“Find”,它会开始寻找用户需要的软件,在找到之后,用户可以查询它,可以删除它,

 也可以验证它。



当然,上面提到的仅仅是一丁点参考而已,用户要在实际中不断探索才能提高。



李景超


(
http://www.fanqiang.com)

Write a Comment

Comment