📄 0520rpm_and_srpm.htm
字号:
<span class=term_hd>范例三∶列出 logrotate 这个套件的相关说明资料∶</span>
[root@linux ~]# <span class=term_command>rpm -qi logrotate</span>
Name : logrotate Relocations: (not relocatable)
Version : 3.7.1 Vendor: Red Hat, Inc.
Release : 10 Build Date: Fri Apr 1 03:54:42 2005
Install Date: Sat Jun 25 08:28:26 2005 Build Host: tweety.build.redhat.com
Group : 系统环境/基础 Source RPM: logrotate-3.7.1-10.src.rpm
Size : 47825 License: GPL
Signature : DSA/SHA1, Sat May 21 01:34:11 2005, Key ID b44269d04f2a6fd2
Packager : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla>
Summary : 循环、压缩、移除以及邮寄系统纪录档案。
Description :
The logrotate utility is designed to simplify the administration of
log files on a system which generates a lot of log files. Logrotate
allows for the automatic rotation, compression, removal, and mailing of
log 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.
<span class=term_say># 列出该套件的 information (资讯),里面的资讯可多著呢,包括了套件名称、
# 版本、开发商、SRPM档案名称、打包次数、简单说明资讯、套件打包者、
# 安装日期等等!如果想要详细的知道该套件的资料,用这个参数来了解一下</span>
<span class=term_hd>范例四∶分别仅找出 logrotate 的设定档与说明档</span>
[root@linux ~]# <span class=term_command>rpm -qc logrotate</span>
[root@linux ~]# <span class=term_command>rpm -qd logrotate</span>
<span class=term_hd>范例五∶若要成功安装 logrotate ,他还需要什么档案的帮忙?</span>
[root@linux ~]# <span class=term_command>rpm -qR logrotate</span>
/bin/sh
config(logrotate) = 3.7.1-10
libc.so.6
<span class=term_say>....以下省略....
# 由这里看起来,呵呵~还需要很多档案的支援才行喔!</span>
<span class=term_hd>范例六∶由上面的范例五,找出 /bin/sh 是那个套件提供的?</span>
[root@linux ~]# <span class=term_command>rpm -qf /bin/sh</span>
bash-3.0-31
<span class=term_say># 这个参数后面接的可是『档案』呐!不像前面都是接套件喔!
# 这个功能在查询系统的某个档案属于哪一个套件所有的。</span>
<span class=term_hd>范例七∶假设我有下载一个 RPM 档案,想要知道该档案的需求档案,该如何?</span>
[root@linux ~]# <span class=term_command>rpm -qpR filename.i386.rpm</span>
<span class=term_say># 加上 -qpR ,找出该档案需求的资料!</span>
</pre></td></tr></table>
常见的查询就是这些了!要特别说明的是,在查询本机上面的 RPM 套件相关资讯时,
不需要加上版本的名称,只要加上套件名称即可!因为他会由 /var/lib/rpm 这个资料库里面去查询,
所以我们可以不需要加上版本名称。但是查询某个 RPM 档案就不同了,
我们必须要列出整个档案的完整档名才行~
这一点朋友们常常会搞错。底下我们就来做几个简单的练习吧!<br><br>
<table border=1 width=90% cellspacing=0 cellpadding=5><tr><td>
例题∶<br>
我想要知道我的系统当中,以 c 开头的套件有几个,如何实做?
<ul><span class=text_import2><font face="细明体">rpm -qa | grep ^c | wc -l</font></span></ul>
我的 WWW 伺服器为 Apache ,我知道他使用的 RPM 套件档名为 httpd 。
现在,我想要知道这个套件的所有设定档放置在何处,可以怎么作?
<ul><span class=text_import2><font face="细明体">rpm -qc httpd</font></span></ul>
承上题,如果查出来的设定档案已经被我改过,但是我忘记了曾经修改过哪些地方,
所以想要直接重新安装一次该套件,该如何作?
<ul><span class=text_import2><font face="细明体">假设该套件在网路上的网址为∶<br>
http://web.site.name/path/httpd-x.x.xx.i386.rpm<br>
则我可以这样做∶<br>
rpm -ivh http://web.site.name/path/httpd-x.x.xx.i386.rpm --replacepkgs</font></span></ul>
如果我误砍了某个重要档案,例如 /etc/crontab,偏偏不晓得他属于哪一个套件,该怎么办?!
<ul><span class=text_import2><font face="细明体">虽然已经没有这个档案了,不过没有关系,因为 RPM
有纪录在 /var/lib/rpm 当中的资料库啊!所以直接下达∶<br>
rpm -qf /etc/crontab<br>
就可以知道是那个套件棉!重新安装一次该套件即可!</font></span></ul>
</td></tr></table><br>
</div>
<hr><a NAME="rpmmanager_verify"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class=text_h2>RPM 验证与数位签章</span>
<div class=block2>
验证的功能主要在于提供系统管理员一个有用的管理机制!作用的方式是『
<span class=text_import1>使用 /var/lib/rpm 底下的资料库内容来比对目前 Linux
系统的环境下的所有套件档案</span> 』也就是说,当您有资料不小心遗失,
或者是因为您误杀了某个套件的档案,或者是不小心不知道修改到某一个套件的档案内容,
就用这个简单的方法来验证一下原本的档案系统吧!
好让您了解这一阵子到底是修改到哪些档案资料了!验证的方式很简单∶<br>
<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>rpm -Va</span>
[root@linux ~]# <span class=term_command>rpm -V 已安装的套件名称</span>
[root@linux ~]# <span class=term_command>rpm -Vp 某个 RPM 档案的档名<span>
[root@linux ~]# <span class=term_command>rpm -Vf 在系统上面的某个档案</span>
<span class=term_say>参数∶
-V ∶后面加的是套件名称,若该套件所含的档案被更动过,才会列出来;
-Va ∶列出目前系统上面所有可能被更动过的档案;
-Vp ∶后面加的是档案名称,列出该套件内可能被更动过的档案;
-Vf ∶列出某个档案是否被更动过~
范例∶</span>
<span class=term_hd>范例一∶列出你的 Linux 内的 logrotate 这个套件是否被更动过?</span>
[root@linux ~]# <span class=term_command>rpm -V logrotate</span>
<span class=term_say># 如果没有出现任何讯息,恭喜你,该套件没有被更动过。
# 如果有出现任何讯息,才是有出现状况啊!</span>
<span class=term_hd>范例二∶查询一下,你的 /etc/crontab 是否有被更动过?</span>
[root@linux ~]# <span class=term_command>rpm -Vf /etc/crontab</span>
S.5....T c /etc/crontab
<span class=term_say># 瞧!因为有被更动过,所以会列出被更动过的资讯!</span>
</pre></td></tr></table>
好了,那么我怎么知道到底我的档案被更动过的内容是什么?呵呵!简单的说明一下吧!
例如,我们检查一下 logrotate 这个套件∶<br>
<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>rpm -ql logrotate</span>
/etc/cron.daily/logrotate
/etc/logrotate.conf
/etc/logrotate.d
/usr/sbin/logrotate
/usr/share/doc/logrotate-3.7.1
/usr/share/doc/logrotate-3.7.1/CHANGES
/usr/share/man/man8/logrotate.8.gz
/var/lib/logrotate.status
<span class=term_say># 呵呵!共有八个档案啊! </span>
[root@linux ~]# <span class=term_command>rpm -V logrotate</span>
..5....T c /etc/logrotate.conf
<span class=term_say># 上面的资讯是这样的∶
S ∶file Size differs
档案的容量大小是否被改变
M ∶Mode differs (includes permissions and file type)
档案的类型或档案的属性,如是否可执行等参数已被改变
5 ∶MD5 sum differs
MD5 这一种加密防骇的属性已被改变
D ∶Device major/minor number mis-match
装置名称已被改变
L ∶readLink(2) path mis-match
Link 属性已被改变
U ∶User ownership differs
档案的所属人已被改变
G ∶Group ownership differs
档案的所属群组已被改变
T ∶mTime differs
档案的建立时间已被改变</span>
</pre></td></tr></table>
所以,如果当一个档案所有的资讯都被更动过,那么他的显示就会是∶<br>
<table class="term"><tr><td class="term"><pre>
SM5DLUGT c filename
</pre></td></tr></table>
至于那个 c 代表的是『 Config file 』的意思,也就是档案的类型,档案类型有底下这几类∶
<ul><span class=text_import2><font face="细明体">
<li>c ∶设定档(config file)
<li>d ∶文件资料档(documentation)
<li>g ∶鬼档案~通常是该档案不被某个套件所包含,较少发生!(ghost file)
<li>l ∶授权档案(license file)
<li>r ∶读我档案(read me)
</ul></span></font>
经过验证的功能,您就可以知道那个档案被更动过。那么如果该档案的变更是『预期中的』,
那么就没有什么大问题,但是如果该档案是『非预期的』,那么是否被入侵了呢?呵呵!
得注意注意棉!<br><br>
再来,由于数位签证的盛行,我们 Linux 的 RPM
也可以利用数位签证来判断待安装的套件档案是否有问题喔!一般我们使用的是
<span class=text_import2>GPG 的金钥( public key )。</span>应用的方法很简单,首先,
当我们想要使用某个团体释出的套件时,就需要将他们释出的
GPG 金钥先安装在自己的 Linux 系统上。然后,当安装该团体释出的套件时,就会检查两者的
key 是否相同,如果相同就直接安装,如果不同就会在萤幕上面显示讯息告知您并未安装该团体的
GPG 金钥!<br><br>
安装金钥的方法很简单,例如 Red Hat 本身就有金钥在系统当中,安装如下∶<br>
<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>rpm --import /usr/share/rhn/RPM-GPG-KEY</span>
</pre></td></tr></table>
一般来说,您的 Linux distributions 都会释出自己的 GPG Key 的,如果是 Red Hat 系统的话,
可以使用∶<br>
<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>locate GPG-KEY</span>
</pre></td></tr></table>
来进行搜寻档案的工作,至于这些金钥的内容,我们可以这样查询喔∶<br>
<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>rpm -qa | grep gpg</span>
libgpg-error-1.0-2
gpg-pubkey-4f2a6fd2-3f9d9d3b
[root@linux ~]# <span class=term_command>rpm -qi gpg-pubkey-4f2a6fd2-3f9d9d3b</span>
Name : gpg-pubkey Relocations: (not relocatable)
Version : 4f2a6fd2 Vendor: (none)
Release : 3f9d9d3b Build Date: Sat Jun 25 22:13:00 2005
Install Date: Sat Jun 25 22:13:00 2005 Build Host: localhost
Group : Public Keys Source RPM: (none)
Size : 0 License: pubkey
Signature : (none)
Summary : gpg(Fedora Project <fedora@redhat.com>)
Description :
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: rpm-4.4.1 (beecrypt-3.0.0)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -