問題:
由於各種原因(其實是刪除了/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 讓機器來刪除啦