2009年2月24日星期二

RPM常用命令

RPM是一个很强大的包管理工具,能被用来建立、安装、查询、检查、升级、或者删除独立的软件包。包一般有两种,一种包含可以直接安装的被封装了的软件的二进制文件;一种包含源码以及编译成二进制包的必须的编译方法(recipe 制作法)
下面这些基本模式必须被选择:
1、查询:Query;2、检查:Verify;3、签名检查:Signature Check;4、安装/升级/刷新:Install/Upgrade/Freshen;5、卸载:Uinstall 6、初始化数据库Initialize Database;7、 重建数据库Rebuild Database;8、 放弃 Resign; 9、添加签名Add Signature; 10、设置所有者和组Set Owners/Groups;11、显示查询标签 Show Querytags;12、显示配置 Show Configuration。
一、如何安装或升级一个安装包
1、rpm -i package.rpm
这里的-i安装参数,package.rpm是你要安装的RPM。我们还可以增加参数,比如:
rpm -ivh package.rpm,其中-v指的是详细信息(verbose 详细的),-h指的是哈希标记。它会在解包的过程中在屏幕上输出#,然后安装这个包。我们可以可以使用--percent取代-h。
2、rpm -Uvh new-package.rpm
注意:这里的-U升级选项,只是简单的删除旧的包,安装新的包。-Uvh也可以用于安装包,如果这个包不存在,那么会在系统中安装新的包。
3、rpm -Uvh --oldpackage Samba-old-version.rpm
这里的--oldpackage选项,表示Samba包是一个比较已经安装的包要旧。这个命令会移除已经安装好的包,然后安装这个比较旧的包。
二、如何移除一个包,查询相关联的包
1、rpm -e package
-e是个擦除参数,会将包package.rpm移除。
2、rpm -q --whatrequires kernel
这里例子中,会输出依存于kernel的包
三、查询一个已经安装了的包
1、rpm -q yum
这里的-q参数,表示我们在运行一个查询。如果这个yum包已经被安装,那么上面这个命令会返回一个true(Shell变量$?=0),也可以使用带版本号的全名:
rpm -q yum-2.0.4-2
2、rpm -qa
使用-a,来查询系统中已经安装了的所有包,通过管道符,可以查询某个包是否被安装:
rpm -qa grep -i python
grep命令中的-i选项,表示大小写不敏感。
3、rpm -qpi vnc-server-4.0-0.beta4.3.2.i386.rpm
其中-p参数表示查询的是一个RPM包,-i用来表示查询模式,这里代表info。
四、列出安装包依存的包
1、rpm -qpR package.rpm
-R参数代表Requires。-p表示查询的是一个包
2、rpm -qR kernel
查询一个已经安装了的包,R代表requires。
五、查找某个目录是由哪个包创建的
1、rpm -qf /usr/bin/smbmount
这个命令经常用在查询某个程序是那个RPM包的一部分,或者当我们只知道需要的文件或程序,但是不知道包是哪个的时候。
六、列出RPM包将要安装的文件
1、rpm -ql cpp
这个命令用来查询被安装了的包cpp中的内容。-l表示列表list。
2、rpm -qpl cpp-3.3.2-1.i386.rpm
-p表示查询的是一个RPM包。
七、模拟运行某个RPM命令的时候,会发生什么
rpm -ivh --test new-kernel.rpm
可以为某个命令添加--test,来测试运行这个命令时会发生什么。当我们要进行危险的(critical)升级或安装时,可以用这个来查看在安装的过程中会发生什么问题。
通过使用上面的命令,我们可以发现在安装新内核的过程中会发生什么问题(比如空间的可用性、依赖性问题等)。如果什么都没发生,可以尝试添加-w参数。如果所有都没有问题,我们能够看到Preparing这样的输出。
八、安装一个新的内核,同时保留已经被安装的旧的那个
rpm -Uvh --repackage new-kernel.rpm
其中--repackage是一个备份选项,这样我们就可以重新安装在升级进程中,被移除的旧版本的包。上面的命令就是升级内核,并且将现在已经安装的内核进行备份。
备份通常存在/var/spool/repackage目录下,如果新安装的内核有问题,我们可以使用下面的命令,将内核恢复到以前的版本:
rpm -Uvh --oldpackage /var/spool/repackage/old-kernel.rpm
注:--repackage用来将包进行备份,常用在当我们要升级或移除一个包的时候。例如下面的例子:
rpm -Uvh --repackage new-package.rpm
rpm -e --repacakage new-package.rpm
备份包通常保存在/var/spool/repackage目录下。然后我们可以使用下面的命令来进行恢复旧版本:
rpm -Uvh --oldpackage /var/spool/repackage/old-package.rpm
九、从一个SRPM中使用rpmbuild命令创建一个RPM包
当我们想在一个默认的包中,进行自定义的一些修改的时候(比如编译参数、文件路径、版本等)特别有用。为了做到这些,我们首先安装想使用的RPM的源码。这些文件一般以src.rpm结尾。
安装了以后,我们可以对这些.spec文件做一些修改。然后开始建造RPM包。注意:任何在.spec文件上的改变或错误都会影响整个建造进程。要对多个%define条目进行注意,甚至也要留意那些以#注释掉的注释部分(代码中的这些变得可用)。文件.spec通常在/usr/src/redhat/SPECS目录中。
使用命令:
rpmbuild -ba path/to/package.spec
上面的命令会在目录/usr/src/redhat/RPMS/arch中创建RPM包,这里的arch会根据系统和建造进程配置的不同而不同。如果一切顺利,我们就可以安装这个被生成的包了。

没有评论:

发表评论