RPM 查询 (query)软件

来源:互联网 发布:小型公司java项目源码 编辑:程序博客网 时间:2024/04/29 12:26
RPM 查询 (query)

RPM 在查询的时候,其实查询的地方是在 /var/lib/rpm/这个目录下的数据库文件啦!另外, RPM 也可以查询未安装的 RPM 文件内的资讯喔!那如何去查询呢?我们先来谈谈可用的选项有哪些?

[root@www ~]# rpm -qa                              <==已安装软件[root@www ~]# rpm -q[licdR] 已安装的软件名称       <==已安装软件[root@www ~]# rpm -qf 存在於系统上面的某个档名     <==已安装软件[root@www ~]# rpm -qp[licdR] 未安装的某个文件名称  <==查阅RPM文件选项与参数:查询已安装软件的资讯:-q  :仅查询,后面接的软件名称是否有安装;-qa :列出所有的,已经安装在本机 Linux 系统上面的所有软件名称;-qi :列出该软件的详细资讯 (information),包含开发商、版本与说明等;-ql :列出该软件所有的文件与目录所在完整档名 (list);-qc :列出该软件的所有配置档 (找出在 /etc/ 底下的档名而已)-qd :列出该软件的所有说明档 (找出与 man 有关的文件而已)-qR :列出与该软件有关的相依软件所含的文件 (Required 的意思)-qf :由后面接的文件名称,找出该文件属於哪一个已安装的软件;查询某个 RPM 文件内含有的资讯:-qp[icdlR]:注意 -qp 后面接的所有参数以上面的说明一致。但用途仅在於找出    某个 RPM 文件内的资讯,而非已安装的软件资讯!注意!

在查询的部分,所有的参数之前都需要加上 -q 才是所谓的查询!查询主要分为两部分,一个是查已安装到系统上面的的软件资讯,这部份的资讯都是由 /var/lib/rpm/ 所提供。另一个则是查某个 rpm 文件内容,等於是由 RPM 文件内找出一些要写入数据库内的资讯就是了,这部份就得要使用 -qp (p 是 package 的意思)。那就来看看几个简单的范例吧!

范例一:找出你的 Linux 是否有安装 logrotate 这个软件?[root@www ~]# rpm -q logrotatelogrotate-3.7.4-8[root@www ~]# rpm -q logrotatingpackage logrotating is not installed# 注意到,系统会去找是否有安装后面接的软件名称。注意,# 不必要加上版本喔!至於显示的结果,一看就知道有没有安装啦!范例二:列出上题当中,属於该软件所提供的所有目录与文件:[root@www ~]# rpm -ql logrotate/etc/cron.daily/logrotate/etc/logrotate.conf....(以下省略)....# 可以看出该软件到底提供了多少的文件与目录,也可以追踪软件的数据。范例三:列出 logrotate 这个软件的相关说明数据:[root@www ~]# rpm -qi logrotateName        : logrotate             Relocations: (not relocatable)Version     : 3.7.4                      Vendor: CentOSRelease     : 8                      Build Date: Sun 02 Dec 2007 08:38:06 AM CSTInstall Date: Sat 09 May 2009 11:59:05 PM CST    Build Host: builder6Group       : System Environment/Base  Source RPM: logrotate-3.7.4-8.src.rpmSize        : 53618                     License: GPLSignature   : DSA/SHA1, Sun 02 Dec 2007 09:10:01 AM CST, Key ID a8a447dce8562897Summary     : Rotates, compresses, removes and mails system log files.Description :The logrotate utility is designed to simplify the administration oflog files on a system which generates a lot of log files.  Logrotateallows for the automatic rotation compression, removal and mailing oflog files.  Logrotate can be set to handle a log file daily, weekly,monthly or when the log file gets to a certain size.  Normally,logrotate runs as a daily cron job.Install the logrotate package if you need a utility to deal with thelog files on your system.# 列出该软件的 information (资讯),里面的资讯可多著呢,包括了软件名称、# 版本、开发商、SRPM文件名称、打包次数、简单说明资讯、软件打包者、# 安装日期等等!如果想要详细的知道该软件的数据,用这个参数来了解一下范例四:分别仅找出 logrotate 的配置档与说明档[root@www ~]# rpm -qc logrotate[root@www ~]# rpm -qd logrotate范例五:若要成功安装 logrotate ,他还需要什么文件的帮忙?[root@www ~]# rpm -qR logrotate/bin/shconfig(logrotate) = 3.7.4-8libc.so.6....(以下省略)....# 由这里看起来,呵呵~还需要很多文件的支持才行喔!范例六:由上面的范例五,找出 /bin/sh 是那个软件提供的?[root@www ~]# rpm -qf /bin/shbash-3.2-21.el5# 这个参数后面接的可是『文件』呐!不像前面都是接软件喔!# 这个功能在查询系统的某个文件属於哪一个软件所有的。范例七:假设我有下载一个 RPM 文件,想要知道该文件的需求文件,该如何?[root@www ~]# rpm -qpR filename.i386.rpm# 加上 -qpR ,找出该文件需求的数据!

常见的查询就是这些了!要特别说明的是,在查询本机上面的 RPM 软件相关资讯时,不需要加上版本的名称,只要加上软件名称即可!因为他会由 /var/lib/rpm 这个数据库里面去查询,所以我们可以不需要加上版本名称。但是查询某个 RPM 文件就不同了,我们必须要列出整个文件的完整档名才行~这一点朋友们常常会搞错。底下我们就来做几个简单的练习吧!

例题:
  1. 我想要知道我的系统当中,以 c 开头的软件有几个,如何实做?
  2. 我的 WWW 服务器为 Apache ,我知道他使用的 RPM 软件档名为 httpd 。现在,我想要知道这个软件的所有配置档放置在何处,可以怎么作?
  3. 承上题,如果查出来的配置文件已经被我改过,但是我忘记了曾经修改过哪些地方,所以想要直接重新安装一次该软件,该如何作?
  4. 如果我误砍了某个重要文件,例如 /etc/crontab,偏偏不晓得他属於哪一个软件,该怎么办?
答:
  1. rpm -qa | grep ^c | wc -l
  2. rpm -qc httpd
  3. 假设该软件在网络上的网址为:
    http://web.site.name/path/httpd-x.x.xx.i386.rpm
    则我可以这样做:
    rpm -ivh http://web.site.name/path/httpd-x.x.xx.i386.rpm --replacepkgs
  4. 虽然已经没有这个文件了,不过没有关系,因为 RPM 有记录在 /var/lib/rpm 当中的数据库啊!所以直接下达:
    rpm -qf /etc/crontab
    就可以知道是那个软件罗!重新安装一次该软件即可!

0 0