在這篇關於如何使用 Pacman 刪除 Arch 上不需要的緩存包的指南中,我將向您展示刪除通常緩存在 Arch 上的孤立包所採取的步驟。 這 吃豆子 包管理器是 Arch Linux 的主要特色之一,它能夠將簡單的二進制包和類似於 Gentoo 的包構建系統結合起來。 Pacman 可以輕鬆管理官方 Arch 上游包和其他用戶的構建包。
當您繼續使用 Pacman 在 Arch 上下載和安裝軟件包時,通常會有剩餘的東西,隨著數據的增長,它們往往會消耗更多的磁盤空間。 當您的帶寬較慢並且不斷重新安裝軟件包時,這很有用。 但是如果你有足夠的帶寬並且想清理緩存的包,你可以參考這個指南。
另請閱讀 : 如何在 Linux 上按日期列出已安裝的軟件包
刪除 Arch 上的緩存包
pacman 下載包的存放目錄是 /var/緩存/pacman/pkg/. 舊的和卸載的軟件包不會自動刪除,您需要特意手動進行清理。 您可以選擇清理所有緩存的包或特定的。
刪除所有當前未安裝的緩存包
要刪除系統中當前未安裝的緩存中的所有軟件包,請使用以下命令:
$ sudo pacman -Sc
使用的選項說明如下:
-c, –cascade: 刪除所有目標包,以及所有依賴於一個或多個目標包的包。 此操作是遞歸的,必須小心使用,因為它可以刪除許多可能需要的包。
-S, –sync : 同步包
建議您在確定不再需要以前的軟件包版本時運行此命令,例如以後降級。 當前安裝在系統上的所有軟件包的版本將保持不變。
通過清空緩存文件夾刪除所有緩存的包
可以使用以下命令清除 /var/cache/pacman/pkg/ 目錄中的所有內容:
$ sudo pacman -Scc
Cache directory: /var/cache/pacman/pkg/
:: Do you want to remove ALL files from cache? [y/N] y
removing all files from cache...
Database directory: /var/lib/pacman/
:: Do you want to remove unused repositories? [Y/n] y
removing unused sync repositories...
這也可以防止在需要時直接從緩存文件夾重新安裝包,從而需要重新下載。 除非立即需要磁盤空間,否則應避免這樣做。
使用 paccache 刪除每個包的所有緩存版本
默認情況下,下一個命令將刪除每個包的所有緩存版本,無論它們是否安裝,除了最近的 3 個版本:
# sudo paccache -r
==> no candidate packages found for pruning
可用的操作命令有:
-d, –dryrun :執行試運行,只找到候選包。
-m, –move <目錄> : 將候選包移動到“dir”。
-r, –remove : 刪除候選包。
可與上述操作命令一起使用的選項包括:
-f, –force : 對 mv(1) 和 rm(1) 操作施加力。
——我,–忽略 <包> : 忽略“pkgs”,以逗號分隔。
-k, –keep <編號> :在緩存中保留每個包的“num”(默認值:3)。
-q, –安靜 : 最小化輸出
-u, –uninstalled :target 已卸載的軟件包。
為了 example 要保留 10 個最近的軟件包,您將使用:
# paccache -rvk 10
要刪除已卸載軟件包的所有緩存版本,請使用以下命令重新運行 paccache:
# paccache -ruk0
由於使用 0 代替要保留的軟件包數量,因此將刪除所有已卸載的軟件包。
每次 pacman 事務後自動清理緩存
您還可以創建 pacman 掛鉤,在每次 pacman 事務後自動運行以清理 pacman 緩存。 Pacman 交易前和交易後掛鉤從 /usr/share/libalpm/hooks/ 目錄。 示例後掛鉤腳本如下所示:
[Trigger]
Operation = Upgrade
Operation = Install
Operation = Remove
Type = Package
Target = *
[Action]
Description = Cleaning pacman cache...
When = PostTransaction
Exec = /usr/bin/paccache -r
另一個
[Trigger]
Operation = Remove
Operation = Install
Operation = Upgrade
Type = Package
Target = *
[Action]
Description = Keep the last cache and the currently installed.
When = PostTransaction
Exec = /usr/bin/paccache -rvk10
兩者都被定義為 PostTransaction 鉤子,這意味著它們在每次成功的 pacman 事務後運行。 使用的 Exec 命令選項如前面所示,因此您應該很容易編寫自己的命令。