我最近安裝了 Arch Linux,發現我相對較快地消耗了大量儲存空間。不管是什麼原因,我在短短兩週內就已經使用了 17GB。我沒有安裝大量軟體,所以我相信所有舊軟體包都在某個地方維護。
為了支持這一點,我注意到,如果我安裝了軟體包,請刪除軟體包,然後重新安裝它,pacman 只會解壓縮並重新安裝軟體,而無需重新下載它。
在安裝基本系統之後,在安裝額外的軟體之前,我可能使用了大約 2GB 左右。此後我只安裝了 Matlab、Skype、Wine 和其他一些小程式。當然我也安裝了缺少的庫之類的東西,但價值還不到15GB。
我在這裡完全錯了嗎?
如果是這樣,如何刪除這些未使用的套件?
另外,當我刪除已安裝的軟體包時,我使用pacman -R ...
答案1
不,pacman 不會從快取 ( /var/cache/pacman/pkg
) 中刪除舊包,因此,隨著時間的推移,它可能會被填滿。
您可以採用兩種方法來清除快取:強力方法pacman -Sc
:
-c, --clean
從快取中刪除不再安裝的軟體包以及目前未使用的同步資料庫以釋放磁碟空間。當 pacman 下載套件時,它會將它們保存在快取目錄中。此外,您下載的每個同步資料庫都會保存資料庫,即使從設定檔 pacman.conf(5) 中刪除它們也不會被刪除。使用一個 --clean 開關僅刪除不再安裝的軟體包;使用兩個從快取中刪除所有檔案。在這兩種情況下,您都可以選擇是或否來刪除軟體包和/或未使用的下載資料庫。
或者,對於更細緻的方法,您可以使用 pacman-contrib 附帶的實用程式之一paccache
:
paccache 是一個靈活的 pacman 快取清理實用程序,它有許多選項來幫助控制從包含 pacman 軟體包 tarball 的任何目錄中刪除的數量和內容。
預設情況下,paccache -r
將刪除除已安裝軟體包的最後三個版本之外的所有版本,但您可以使用開關更改此數字-k, --keep
。還有一個-d, --dryrun
開關可以預覽您的變更。您也可以使用該-m, --move <dir>
選項將包移至您選擇的單獨目錄。請參閱paccache -h
或paccache --help
來了解所有開關。
pacman-contrib 套件中有許多實用程式可以幫助進行套件管理,值得仔細研究它們並了解它們的工作原理,並且可以使運行 Arch 變得更加容易。您可以透過以下方式查看完整清單:
pacman -Ql pacman-contrib | awk -F"[/ ]" '/\/usr\/bin/ {print $NF}'
答案2
您的包緩存位於/var/cache/pacman/pkg/
.
筆記: pacman
軟體包於 2018 年更新,並且還需要安裝pacman-contrib
才能使用如下paccache
所述的腳本/工具。
做:
paccache -d
若要執行以下操作-dryrun
並查看下次執行該實用程式時可能會刪除的內容:
paccache -r
刪除快取的包。 17gbs 聽起來確實很陡。確保你沒有一些失控的日誌。做:
du -h /var/log
或甚至只是:
du -h /var
對於正在發生的事情有一個更一般的了解。
答案3
我強烈建議使用paccache
代替pacman -Sc
。甚至還有一個非常有效的標誌,用於選擇性地刪除已卸載軟體包的版本-u
。我推薦的標誌paccache
是(作為 paccache v5.0.2 的一部分):
-d
,--dryrun
: 執行試運行,僅查找候選包-r
,--remove
: 刪除候選包-u
,--uninstalled
: 僅針對已卸載的軟體包-k
,--keep <num>
: 在快取中保留每個包的「num」(預設值:3)
範例:檢查已卸載軟體包的剩餘快取版本
paccache -dvuk0
答案4
pacman -Scc
執行您所要求的操作,但不建議這樣做。來自維基百科
也可以使用以下命令完全清空快取資料夾pacman-Scc,但這樣做被認為是不好的做法,因為除了上述之外,它還會阻止在需要時直接從快取資料夾重新安裝包,從而強制重新下載它。除非迫切需要更多磁碟空間,否則永遠不要使用它。
順便說一句,當我卸載軟體包時,我更喜歡使用pacman -Rnsc
,因為它還會刪除軟體包依賴項以及依賴該軟體包的軟體包。像往常一樣,請仔細閱讀哪些軟體包將被刪除,因為您很容易使我們的系統處於不可用狀態。