[分享]检测系统中包文件是否完整的方法
发表于 : 2005-05-20 11:09
昨天,我用sudo打开了一个文件浏览器,在去厕所之前没有锁定屏幕,被我的小表弟给误删了/usr/lib/evolution*(后面记不清了)目录,而且居然在回收站都找不到,真不明白他居然有这等电脑水平!重新安装evolution发现接收服务器协议中POP等协议都没了,只剩下Exchange一项了,于是上了IRC的#Ubuntu-zh,找到了华华,问问到底应如何才能找到是哪个包少了文件。
经过华华,月月和罗勇的帮助,终于解决了该问题,华华给出了他的脚本:
一开始我用的脚本是:
这个也是我得出结果的那个,运行完之后,使用命令
在errpkgfind.lst中找到相应的缺失文件,然后用
就可以知道是哪个包损坏了
可是在运行的过程中发现该脚本运行速度很慢,于是华华给出了他的最终版
不过这东东尚未运行过,不过看起来似乎没错,所以如果有哪位仁兄也遇到我这样的情况不妨一试!
经过华华,月月和罗勇的帮助,终于解决了该问题,华华给出了他的脚本:
一开始我用的脚本是:
代码: 全选
$find /var/lib/dpkg/info -name '*list' -exec cat {} \; | xargs ls 2> errorpkgs.lst
代码: 全选
$grep 没有 errorpkgs.lst>errpkgfind.lst
代码: 全选
$dpkg -S 缺失文件
可是在运行的过程中发现该脚本运行速度很慢,于是华华给出了他的最终版
代码: 全选
#!/bin/sh
cat /var/lib/dpkg/info/*.list | while read F
do
[ ! -f "$F" ] && echo $F >> errpkg.lst
done