在本指南中我将向你展示删除Arch上缓存的孤立包所需要采取的步骤。

删除Arch上的缓存包

pacman下载的软件包的存储目录是/var/cache/pacman/pkg/ ,旧的和卸载的软件包不会自动删除,你需要手工进行清理,你可以选择清除所有或特定的缓存包。

删除当前未安装的所有缓存包

要删除系统中当前未安装的所有软件包,请使用以下命令:$ sudo pacman -Sc

2636246bae0bf8195c0c082c4c8c57ec.png

所使用的选项解释如下:

-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 :执行一次dry,只查找候选软件包,

-m,--move : 将候选软件包移至"目录",

-r,--remove :删除候选软件包。

可与上面的操作命令一起使用的选项包括:

-f,--force :向mv(1)和rm(1)操作施加强制,

- i ,--ignore < pkgs > : 忽略"pkgs",逗号分隔,

-k,--keep < num > : 在缓存中保留每个包的"数量"(默认: 3),

-q,--quiet :最小化输出

-u,--uninstalled :卸载目标软件包。

例如,要保留10个最近的包,你可以使用:# paccache -rvk 10

要删除所有已卸载软件包的缓存版本,请重新运行paccache :# paccache -ruk0

由于使用0代替要保留的包数,因此将删除所有已卸载的包。

每次pacman后自动清理缓存

你也可以创建pacman钩子,在每个pacman事务之后自动运行以清理pacman缓存。Pacman事前和事后,钩子都是从/usr/share/libalpm/hooks/目录加载的。下面显示了post-hook脚本例子:[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命令的选项如前所示,因此你可以轻松编写自己的命令选项。

Logo

更多推荐