问题:
由于各种原因(其实是删除了/var/lib/dpkg/status文件中的内容,然后sudo apt-get出错,就从别的机器上把status同样拷贝过来)会出现下面的问题,每次apt-get install 或remove的时候:
dpkg: warning: files list file for package `augeas-lenses' missing, assuming package has no files currently installed.dpkg: warning: files list file for package `python-cheetah' missing, assuming package has no files currently installed.
。。。。。。
中间略去众多
。。。。。。
dpkg: warning: files list file for package `libaio1' missing, assuming package has no files currently installed.
dpkg: warning: files list file for package `bridge-utils' missing, assuming package has no files currently installed.
数量非常多,上面只列举了一小部分,应该是两个机器上安装的包是有差异导致的,所以不能直接拿过来用
解决:
既然问题出现了,就解决吧,sudo dpkg -r <package_name>
但是逐个删除的话对上面这么大的量来说是非常慢的,也很傻哦
所以可以这样做:
Step1: 将待处理内容保存成文本
把上面的输出内容贴到一个文件中dpkgfile,保存好;
Step2:对文本进行初步处理
vim进入dpkgfile之后
:%s/dpkg: warning: files list file for package `//g // 把包名的前面删掉
:%s/' missing, assuming package has no files currently installed.//g //把包名后面部分清掉。这样拿到了一行包名一行空行的结果。
为了使用xargs,逐行处理,接下来就要
sed /^[[:space:]]*$/d dpkgfile > dpkgfile1 //将空行删除
Step3:让机器帮助你删除吧
cat dpkgfile1 | xargs sudo dpkg -r 让机器来删除啦