如何在 Arch Linux 上刪除不需要的緩存包

在這篇關於如何使用 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 命令選項如前面所示,因此您應該很容易編寫自己的命令。