天天看點

Debian/Ubuntu清理無效包、廢棄包、備援包、rc包清理Debian、Ubuntu中的備援包、廢棄包

文章目錄

  • 清理Debian、Ubuntu中的備援包、廢棄包
    • remove與purge
    • 清理廢棄包
    • 清理rc包

清理Debian、Ubuntu中的備援包、廢棄包

在更新系統版本之後,或是在删除了第三方源之後,一些包就會變為無法更新的備援包。

一個常見的現象是更新系統前,某個程式A依賴了舊版本的庫libX.1.1,在更新系統之後另一個程式B依賴了新版本的libX.1.2。再由于某些依賴原因,A沒有被更新為依賴libX.1.2的新版本,導緻包管理系統保留了2個版本的libX。也就是說預設的

apt-get autoremove

指令無法删除它們。

通常情況下除了浪費一點空間這并沒有什麼問題,但是有些時候當libX.1.1與libX.1.2之間不互相相容時,或我們寫的其他程式連結了共享版本的libX時,這會導緻程式運作異常或無法運作,尤其是在分布式的程式。特别是libboost系列庫。

remove與purge

很多package是有配置檔案的。不管你是使用apt還是aptitude,隻要是用預設的remove删除,都隻是删除程式檔案,保留配置檔案的;而使用purge則是一個不留的全部删除。

清理廢棄包

使用aptitude來自動檢測并删除已經廢棄的包。

廢棄包通常是前述的又了更新版本的同名包,或者是source不存在的包。

# 檢視 (以下3個等價)
aptitude search "~o"
aptitude search ~o
aptitude search ?obsolete
# 清除
sudo aptitude purge "~o"
           

這個清除指令會考慮包之間的依賴關系,把依賴這些廢棄包的其他包也一并删除掉。對于更複雜的情況,它會給出一個保留哪些删除哪些的解決方案。

參考:https://raphaelhertzog.com/2011/02/07/debian-cleanup-tip-2-get-rid-of-obsolete-packages/

清理rc包

有些包解除安裝不徹底,也會導緻各種問題。

debian系的底層包管理程式dpkg可以對于幫助我們找到這些包。

使用

dpkg --list

可以檢視所有包的狀态,其中前兩位表示狀态,第一位為期望的狀态,第二位為實際的狀态。可以大緻了解為:當我們輸入安裝指令時,第一位置為i(表示install),當指令完成時,第二位置為i。

更細節的表示可以參考文檔,或者檢視:https://linuxprograms.wordpress.com/2010/05/11/status-dpkg-list/

一個常見的非理想狀态是:第一位為r(removed),第二位為c(Cfg-file存在)。

# 檢視rc狀态的包
dpkg --list |grep "^rc"
# 清除
dpkg --list |grep "^rc" | cut -d " " -f 3 | xargs sudo dpkg --purge
# 或者使用aptitude
sudo aptitude purge "~c"
           

參考:https://linuxprograms.wordpress.com/2010/05/12/remove-packages-marked-rc/

繼續閱讀