打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
精通RPM之校验篇
当用RPM安装,升级或卸载软件包时,RPM将所有的信息记录到数据库中。RPM的校验,就在于检查这些数据的完整性。一旦发现某个软件包被破坏(有文件丢失等情况),RPM就会报告错误。RPM通过这样一种机制,保证系统的正常运行。
RPM除了校验软件包的依赖关系,还校验每个文件,检查其属性是否正确。文件属性包括属主,属组,权限,MD5检查和,大小,主设备号,从设备号,符号连接及最后修改时间9项内容,其中每一项改变RPM都会发现。这9项属性RPM并非都校验,因为文件类型不同,其中某些属性会没有意义,RPM因而也不会去检查。这里有一个表格:
文件属性校验表,点击小图放大
注: -表示不校验,校表示校验。
校验时若发现文件丢失,RPM将输出"missing文件名"。若有属性方面错误,RPM将用如下格式输出:
SM5DLUGT c 文件名
其中: S : 表示文件大小;
M : 表示权限;
5 : 表示MD5检查和;
D : 表示主从设备号;
L : 表示符号连接;
U : 表示属主;
G : 表示属组;
T : 表示最后修改时间。
如果文件某属性正常,则会显示点(.)字符,否则的话将显示其代表字符。看下例:
# rpm -V bash
S.5....T /etc/bashrc
#
本例校验bash包(校验命令rpm -V下面将详细解释),结果发现/etc/bashrc文件有问题,输出的属性中:出现S字符,这表明文件大小改变了;出现5,这表明文件内容与原内容不同了;最后的T字符,则表明文件的最后修改时间改变了。通过这些属性字符,我们可以清楚地知道一个文件变动了什么,这是RPM的聪明之处。
格式中的c字符仅当校验文件为配置文件时才输出。如lze包中有/etc/inputme.def配置文件,如果我们人为改变其最后修改时间,RPM会发现什么:
# touch /etc/inputme.def
# rpm -V lze
.......T c /etc/inputme.def
#
注: 本例中用touch命令改变文件最后修改时间,然后校验,结果RPM发现了这个情况(以T表示出来),我们还看到了c字符,说明/etc/inputme.def是个配置文件。
命令格式
校验RPM格式的软件包,可使用如下命令格式:
rpm -V [校验选项1 校验选项2...] [软件包标识或包裹文件...]
注: -V可用——verify或-y代替,效果相同。
选项列表
文件属性校验表,点击小图放大
选项说明
通用选项的解释,请参见<<精通RPM之二——安装篇>>,本文不再赘述。下面对指定用选项做些解释:
选项分为以下几类:
一、包选择类
1. -a (或-all) : 校验所有已安装的软件包
本选项指示RPM校验系统中所有已安装的软件包:
# rpm -V -a
S.5....T c /etc/profile
.M....G. /usr/man/man1
missing/etc/rc.d/rc3.d/S85httpd
#
注: 本例校验后,RPM发现:
(1) 文件/etc/profile的大小(S),内容(5)及最后修改时间(T)已改变;
(2) 目录/usr/man/man1的权限(M),属组(G)已改变;
(3) 文件/etc/rc.d/rc3.d/S85httpd丢失(missing)。
2. -f (或——file) : 校验含指定文件的软件包
如果用户仅知道某个文件,但忘了它所在的软件包,又想校验这个包时,可用此选项。
# rpm -V -f /bin/cp /bin/bash
SM5....T /bin/ls
S.5....T /etc/bashrc
#
注: 本例校验含/bin/cp和/bin/bash文件的软件包,发现有两个文件(/bin/ls与/etc/bashrc)改变了。
3. -g (或——group) : 校验指定类别的软件包
本选项用于校验已安装的指定类别的软件包。关于软件的类别,请参见<<精通RPM之五——查询篇>>。
下例校验Applications/Editors与Applications/Text类别的软件包:
# rpm -V -g Applications/Editors Applications/Text
.......T c /etc/inputme.def
#
4. -p : 校验指定包裹文件
如果用户想校验某个RPM包所含文件在系统中的属性是否正常,则可用-p项指定该包裹文件进行校验, 如下例;
# rpm -V -p fileutils-4.0-3.i386.rpm
SM5....T /bin/ls
#
注: 本例中RPM发现fileutils包裹中的/bin/ls文件与当前系统中的/bin/ls文件有所不同(S大小,M权限,5内容,T时间)。
二、特殊要求类
1. ——noscripts : 不执行校验脚本程序
有些RPM软件包中内置有校验脚本程序(verifyscript),它执行一些特殊的检查。当用户不想执行这类脚本程序时,需用——noscripts选项。
# rpm -V -v XFree86-libs
Looking for /usr/X11R6/lib in /etc/ld.so.conf... found
# rpm -V -v ——noscripts XFree86-libs
#
注: 本例中第一个校验所输出的内容为XFree86-libs包内的校验脚本程序的输出,第二个命令中用了——noscripts选项,这使得校验脚本程序没有执行,因而也没有什么输出了。
2. ——nodeps : 不检查依赖
RPM校验软件包时,默认情况是检查依赖,因为依赖是否正常关系到一个软件能否可靠运行。校验时选用——nodeps选项,用于指示RPM不检查依赖。注意,本选项主要针对软件包制作者,除非必要,不要使用此选项。我们可以通过校验时用-vv选项输出调试信息,从而可以看到是否检查依赖的区别:
# rpm -V -vv lze-6.02-1
D: opening database mode 0x0 in //var/lib/rpm/
D: record number 7253720
D:requires: /bin/sh satisfied by db file lists.
D:requires: ld-linux.so.2satisfied by db provides.
D:requires: libc.so.6satisfied by db provides.
D:requires: libc.so.6(GLIBC_2.0)satisfied by db provides.
D:requires: libc.so.6(GLIBC_2.1)satisfied by db provides.
.......T c /etc/inputme.def
# rpm -V -vv ——nodeps lze-6.02-1
D: opening database mode 0x0 in //var/lib/rpm/
D: record number 7253720
.......T c /etc/inputme.def
#
注: 例子中,有requires的行为检查依赖,以D:开头的行为调试输出信息。
3. ——nofiles : 忽略丢失文件的错误
默认情况下,RPM在校验时若发现文件丢失,会报出"missing 文件名"的错误。如果用户想忽略这方面的错误,请用——nofiles选项。请比较下例输出:
# rpm -V file
missing/usr/man/man1/file.1
# rpm -V ——nofiles file
#
注: 使用此选项后RPM没有再报出文件丢失的错误。
4. ——nomd5 : 忽略MD5检查和的错误
本选项用于指示RPM忽略文件内容的改变,即忽略MD5检查和错误。此选项常用于校验日志类型的文件(此类文件内容并不重要)。
请看下面的例子:
# rpm -V bash
S.5....T /etc/bashrc
# rpm -V ——nomd5 bash
S......T /etc/bashrc
#
例子中校验bash包,不用——nomd5选项时,输出有5(MD5检查和),表示/etc/bashrc内容变化了,而采用——nomd5选项时,相应输出则为点(.),表示文件内容正常了。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Linux下安装mysql版本冲突问题解决
软件安装之--RPM命令大全!
Linux rpm命令查询软件包(-q、-qa、-i、-p、-l、-f、-R)
RedHat Linux 下安装配置CACTI的技巧
Linux安装mysql.rpm软件包
CDH5.7快速离线安装教程
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服