如何在Arch Linux上删除不需要的缓存包

时间:2020-03-05 15:29:17  来源:igfitidea点击:

在本教程中,如何在不需要使用Pacman上删除arch上的缓存包中的缓存包,将介绍删除孤立包通常在arch上缓存的孤立软件包的步骤。
Pacman Package Manager是Arch Linux的主要区别特征之一,它具有与Gentoo类似的简单二进制包和包构建系统组合的权力。

Pacman可以轻松管理官方拱形上游软件包和其他用户的构建软件包。

随着我们继续使用Pacman的拱门下载和安装软件包,通常会有左左转,因此随着数据的增长,往往会消耗更多的磁盘空间。
当我们拥有慢速带宽时,它是有益的,并且我们继续重新安装包。
但是如果我们有良好的带宽并且想做缓存包的清洁,可以使用本教程以供参考。

在Arch Linux上删除缓存包

Pacman下载的包的存储目录是/var/cache/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, - 移动<dir>:将候选程序包移动到"dir"。
-r,--remove:删除候选包。

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

-f,--force:将力应用于MV(1)和RM(1)操作。
-i,--ignore <pkgs>:忽略"pkgs",逗号分开。
-k, - 保留<num>:保持缓存中每个包的"num"(默认值:3)。
-q,--quiet:最小化输出-u, - 单独安装:目标卸载软件包。

例如要保留10个最近的包,我们将使用:

# paccache -rvk 10

要删除所有缓存版本的卸载软件包,请重新运行PACCache:

# paccache -ruk0

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

每个Pacman交易后自动清洁缓存

我们还可以创建Pacman挂钩,在每个Pacman交易到清除Pacman缓存后自动运行。
Pacman Preand后交易后钩子从/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

两者都被定义为后触发钩,这意味着在每个Pacman事务成功后运行。