Ubuntu之dpkg小問題

問題:

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


不過因爲包之間的相互依賴問題,可能有部分需要自己手動刪除,或是到status文件中把相應的包內容塊刪掉。GOOD LUCK!
發佈了31 篇原創文章 · 獲贊 2 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章