RPM 操作 -- Tutorials, Tips & Tricks by and for Mandrake Linux users
http://people.linux.net.cn/xgwu/cmuo/basics/index.html
RPM有许多可选参数,幸好很容易从名称中联想到相应的用途。
大多数参数都有两种名称(flavor):长名和短名。长名是两个连字符(hyphen),后跟参数的全名;短名只有一个连字符,后带一个字符(一般是全名的首字母)。当然,应用时您只需一种格式就够了,比如:rpm --install package或rpm -i package。
如果RPM参数是文件名,您可以用 匹配模式 ,来指定多个文件,例如:
rpm -i bla*
该命令将安装所有当前目录下以字符串‘bla’开头的包。模糊格式对要求归档名作参数的操作无效,例如:
rpm -e *gtk*
error: package *gtk* is not installed
有一点请记住,RPM 并不介意将要安装的包是在本地文件系统,还是在远程 web 或 FTP 服务器上。只要给出完整的 URL,就能对安装包进行远程操作,比如:
rpm -qpi ftp://ftp.server.com/RPMS/bla*
将获取在 ftp.server.com 的目录‘RPMS’中,以‘bla’开头的包的内容描述。
所有的这些命令需要‘root’权限。
rpm -i package :安装(install)一个包,
rpm -e archive :卸载(erase),
rpm -U package :升级(upgrades)到新版本(包括安装新的包),
rpm -F packages :更新(freshen)若干个包。先检查指定的包中哪些已安装,然后以合理的顺序更新这些包。
有两个特殊的修正(modifier)可以和上述参数连用:‘--test’ 、‘--verbose’(或‘-v’)。
‘--test’ 只是以模拟(as if)的方式执行命令:您可以获得 RPM 执行时产生的所有信息,但是实际上命令没有真正执行,这个修正没有缩写形式。
‘--verbose’(-v) 会输出 RPM 运行时的冗余(verbose)信息。这一参数在检查错误或与‘--test’连用时特别有用。添加另一个‘-v’(‘-vv’)能输出更多的冗余信息。
该命令不需要‘root’权限。请注意,当您查询一个未安装的包时,您需要将‘-p’参数与‘-q’连用。
rpm -q archive :查询(query)包名和已安装包的版本号,
rpm -q mc
mc-4.5.51-7mdk
rpm -qp package :同样是查询,但只针对未安装的包,
rpm -qi archive :告知(inform)包的用途,由谁打包,何时、何地打包,这个包是什么时候安装的,包的大小,等等。要查询未安装的包,可运行 rpm -qpi package ,
rpm -ql archive :列出(list)已安装包中的所有文件,
rpm -qd archive :列出所有已安装包中的所有文档(documentation)文件,
rpm -qa :列出所有( all)已安装的包,经常与‘grep’连用,
rpm -qa --last :以安装日期为顺序列出所有包,最近安装的包在前,
rpm -q --changelog archive :显示维护者对包的所有修改记录,
rpm -qf file :显示该文件(file)属于哪个已安装的包。
rpm -q up2date --requires : 查找up2date需要什么相关包
再配合使用一些其他的小工具,及有些笨拙的‘--queryformat’可选项,您几乎可以在一个包,或本地 RPM 资料库中,查到所有可能的信息。
找匹配的已安装包
常见的问题:您想知道某个包是否已安装,但却记不清包的确切名称(或者是懒得敲入),可用:
rpm -qa | grep -i pattern
这里用了所谓的 管道(pipe) 和 grep 命令(‘i’可选项使得搜索不区分大小写)。所以,这样的命令
rpm -qa | grep -i xfree
将列出含有字符串‘xfree’的已安装包,并且不区分大小写。
在未安装的包中找一个文件
另一个常见问题是:哪个包里有这个文件?将 Mandrake CD 放到光驱中(我们假设在‘mnt/cdrom’目录下),键入
for i in /mnt/cdrom/Mandrake/RPMS/*.rpm ; do rpm -qpli $i | grep filename && echo $i ; done
如果这个指定文件(filename)在其中的某个包中,这个 for-do 循环将返回其名称。这样做可能有些乏味,没关系,在下一篇中,我们将介绍的 Mandrake Linux 中的‘urpm’,能漂亮地完成这一任务。
将已安装的包按顺序列出
如果您仔细阅读过第一篇中的介绍,就已经知道 RPM 工作要靠其说明文件。可选项‘--queryformat’使您可以在给定的 RPM 中,根据说明文件中单独的某个域(field),按任何顺序进行查询。键入
rpm --querytags
将列出所有可用的域,这种格式有些复杂,所以最好用例子来演示。
假设您的硬盘空间紧张,想将已安装的包按大小列出,这样您就可以找出最好卸载哪个包,命令如下(在一行中):
rpm -qa --queryformat '%{name} %{size}\n' | sort -n +1 | column -t
是不是有点迷糊?;) 第一部分完成了所有工作:只按查询标签(querytags)‘name’和‘size’,对所有包进行查找,其中的标签格式是‘%{[tag]}’。由于查询标签字符串中包含空格,所以要用单引号括起来。其中‘\n’在每行添加一个回车(line break)。
‘sort’命令将输出排序结果(大的在后),‘column’将每行分成漂亮的两列:名称在左,比特为单位的大小在右。只要您记得这种特殊的查询标签格式,使用起来还是很不错的。
http://rpm.pbone.net/