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