当前位置:操作系统 > Unix/Linux >>

RPM查询篇

RPM不仅在安装,升级,卸载方面工作出色,而且在查询方面比其它软件包管理工具更胜一筹。这从以下几种情况可以看出:

  * 当你在浏览系统文件时,发现一个文件,想知道它来自哪个软件包时,可以用RPM来查询得知;

  * 当你的朋友给你发送来一个软件包,但你不知道这是个什么样的软件包,不知道它做些什么,安装些什么,来源是哪里。这时,你可以用RPM查询搞定;

  * 几个月前你安装了XFree86窗口软件,但现在你忘了它的版本号,也不知它的说明文档在哪里。这时,你可以用RPM查询一下这个软件包,得到这方面的信息。

  RPM的查询还有一个高级功能,即定制输出功能。你可用--queryformat(或-qf)来定制一下输出格式,这样,RPM查询得到的信息将以你定制的格式输出,这样很是方便,尤适合于程序的自动处理。

  命令格式

  查询RPM格式的软件包,可使用如下命令格式:

  rpm -q [查询选项1 查询选项2...]

  注: 也可使用--query代替-q,效果相同。

  选项列表

  选项详解

  指定用选项中ftp与http相关的四个选项(--ftpproxy,--ftpport,--httpproxy,--httpport)和通用选项的解释,请参见<<精通RPM之二--安装篇>>,本文不再赘述。下面对指定用选项做些解释:

  指定用选项可分为如下几类:

  一、软件包选择类

  此类选项在一次只能选择一个,选择多个时RPM将提示错误:

  rpm: one type of query/verify may be performed at a time

  从查询方面看,一个是查询那些已安装的软件包,一个是查询未安装的软件包。

  1. 查询已安装的软件包,使用下列选项:

  (1) -a (或--all) : 查询所有已安装的软件包

  # rpm -q -a

  setup-2.0.2-1

  filesystem-1.3.4-5

  basesystem-6.0-5

  agrep-2.04-5

  aktion-0.3.6-2

  amor-0.5-1

  dhcpcd-1.3.17pl2-1

  ldconfig-1.9.5-15

  glibc-2.1.2-12

  chkconfig-1.0.6-2

  ......

  #

  注: 本例查找当前系统中安装的所有软件包,输出很多,仅列出几个,剩下的省略掉了(以......表示)。

  (2) -g (或--group) : 查询有哪些软件包属于指定类别

  RPM根据软件功用的不同,将软件分为以下若干类:(括号内为注释)

  Amusements/Games (娱乐/游戏)

  Amusements/Graphics(娱乐/图形)

  Applications/Archiving (应用/档案)

  Applications/Communications (应用/通讯)

  Applications/Databases (应用/数据库)

  Applications/Editors (应用/编辑器)

  Applications/Emulators (应用/仿真器)

  Applications/Engineering (应用/工程)

  Applications/File (应用/文件)

  Applications/Internet (应用/因特网)

  Applications/Multimedia (应用/多媒体)

  Applications/Productivity (应用/产品)

  Applications/Publishing (应用/印刷)

  Applications/System (应用/系统)

  Applications/Text (应用/文本)

  Development/Debuggers (开发/调试器)

  Development/Languages (开发/语言)

  Development/Libraries (开发/函数库)

  Development/System (开发/系统)

  Development/Tools (开发/工具)

  Documentation (说明文档)

  System Environment/Base (系统环境/基础)

  System Environment/Daemons (系统环境/守护)

  System Environment/Kernel (系统环境/内核)

  System Environment/Libraries (系统环境/函数库)

  System Environment/Shells (系统环境/接口)

  User Inte易做图ce/Desktops (用户界面/桌面)

  User Inte易做图ce/X (用户界面/X窗口)

  User Inte易做图ce/X Hardware Support (用户界面/X硬件支持)

  Other (其它)

  注意: 类别是大小写敏感的,这一点输入时要小心。如果用户想要查询当前系统安装了哪些游戏类的软件包,可这样做:

  # rpm -q -g Amusements/Games

  clanbomber-1.01-1

  kdegames-1.1.2-1

  xbill-2.0-6

  xboard-4.0.0-3

  xboing-2.4-7

  xgammon-0.98-14

  xjewel-1.6-11

  xpat2-1.04-10

  xpilot-3.6.2-6

  xpuzzles-5.4.1-7

  xtrojka-1.2.3-6

  #

  如果用户想查询若干类别的软件包时,可以把类别都列出来,一起查询,如:

  # rpm -q -g Applications/Editors Applications/File

  emacs-20.3-15

  emacs-nox-20.3-15

  emacs-X11-20.3-15

  vim-common-5.6-12

  vim-minimal-5.6-12

  vim-X11-5.6-12

  fileutils-4.0-3

  bzip2-0.9.5d-1

  findutils-4.1-32

  git-4.3.17-6

  gzip-1.2.4-15

  slocate-1.4-7

  stat-1.5-12

  file-3.26-6

  #

  注: 本例查询结果中前6个为"应用/编辑器"类别,后8个为"应用/文件"类别。

  (3) -f (或--file) : 查询有哪些软件包拥有指定文件这个选项非常有用。当用户不清楚某个文件属于哪个软件包时,可试试这个选项。假如我记不清/usr/sbin/ftpd这个文件在哪个包中,现在用RPM查询:

  # rpm -qf /usr/sbin/ftpd

  inet6-apps-0.36-3

  #

  现在知道了,它在inet6-apps-0.36-3包中。命令中-qf是-q -f的缩写,当选项仅带一个减号时,多个选项可以合并在一起,如-a -b -c三个选项可写作-abc,执行效果相同。

  (4) --whatrequires : 查询有哪些包需要指定功能

  本选项指示RPM从所有已安装的软件包中,查询有哪些软件包提供了用户指定的功能,命令行上可输入一个或多个功能。

  # rpm -q --whatrequires /bin/ps libc.so.6 | head

  autofs-3.1.3-2

  agrep-2.04-5

  aktion-0.3.6-2

  amor-0.5-1

  chkconfig-1.0.6-2

  libtermcap-2.0.8-16

  bash-2.03-10

  ncurses-4.2-18

  info-3.12f-4

  fileutils-4.0-3

  #

  注: 本例从系统中查询哪些软件包需要/bin/ps和libc.so.6功能,通过管道输出前10行内容。

  (5) --whatprovides : 查询有哪些包提供指定功能

  本选项指示RPM从所有已安装的软件包中,查询有哪些软件包提供了用户指定的功能。命令行上可输入一个或多个功能。

  # rpm -q --whatprovides libc.so.6 /bin/ps

  glibc-2.1.2-12

  no package provides /bin/ps

  #

  注: 本例从系统中查询有哪些软件包提供libc.so.6与/bin/ps功能,结果是glibc-2.1.2-12包提供了libc.so.6,而没有包提供/bin/ps功能。

  (6) --triggeredby : 查询有哪些包被指定的包触发本选项指示RPM从所有已安装的软件包中,查询有哪些包可被用户指定的包触发。指定的包可输入一个或多个。

  # rpm -q --triggeredby file

  foo-8.0-1

  #

  注: 本例查询后得知,安装或卸载foo-8.0-1包,将会触发与file包相关的脚本程序执行。

  2. 查询未安装的软件包: (仅有一个选项可用)

  (1) -p : 查询指定包裹文件的信息

  使用本选项,通过指定一个或多个包裹文件名,RPM就可以获取相应包裹的有关信息。包裹文件可以是一般形式,也可是ftp/http形式。

  # rpm -qp -l --ftpport 2121 ftp://zzz:pass@linux/zhsoft/file-3.26-6.i386.rpm

  /usr/bin/file

  /usr/man/man1/file.1

  /usr/man/man4/magic.4

  /usr/share/magic

  #

  注: 本例查询ftp形式的包裹,显示其文件列表(-l选项使然,下面要讲到)。ftp用户名zzz,密码为pass,远程机为linux,文件名为/zhsoft/file-3.26-6.i386.rpm,ftp使用2121端口。

  二、信息显示类

  本类选项可同时选择多个,以显示多种信息。

  1. -i : 显示软件包信息

  当用户需要了解软件包的头部信息时,要使用该选项。

  # rpm -qi file

  Name: file Relocations: /usr

  Version : 3.26 Vendor: Red Hat Software

  Release : 6 Build Date: 1999年03月23日 星期二 05时32分29秒

  Install date: 2001年10月14日 星期日 21时18分25秒 Build Host: porky.devel.redhat.com

  Group : Applications/File Source RPM: file-3.26-6.src.rpm

  Size: 211946 License: distributable
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,