如何在Linux上清理快照包并释放磁盘空间

Linux发行版的一个主要优点是它们的包管理系统。Linux上的包管理器允许您自动化软件安装,并只需使用几个命令就完成工作。

与其他包管理器不同,Snap具有良好的依赖管理属性。但有一个警告,Snap包往往非常庞大,消耗大量的磁盘空间。幸运的是,在Linux上清理Snap包很容易。

为什么Snap套餐会很大?

管理软件依赖性一直是Linux包管理器的致命弱点。软件依赖性是指一个软件依赖于其他软件包或库来正常工作。

Snap引入了一种处理Linux依赖性的激进方法:将软件及其依赖性打包在一个称为snap的包中。

然而,将所有依赖项和核心软件组合在一个包中,与其他包管理器(如APT、Pacman等)相比,会产生相对较大的软件。

Snap包庞大的另一个原因是,快照旨在软件更新后回滚到以前的版本。当前和以前的软件版本都存储在您的Linux PC上,这意味着快照占用了如此多的磁盘空间。

以下是清理快照包和回收宝贵磁盘空间的方法。

1.移除回档包

如前所述,Snap软件包的一个独特功能是能够轻松地回滚到通过Snap安装的任何软件包的以前版本。为此,每当您将Snap软件包更新到新版本时,旧软件仍会保留在您的计算机上。

若要列出所有已安装的Snap包(包括其回滚版本),请运行以下命令:

快照列表——所有 

如您所见,从前面的输出中可以看到,有些程序包列出了两次。例如,canonical-livepatch包有两个版本,一个是禁用的,另一个是活动的。禁用的是此程序包的以前版本,您可以回滚到该程序包。它没有被使用,字面上说就是在那里消耗磁盘空间。

要删除以前的或禁用的Snap软件包版本,可以使用版本号。在这种情况下,禁用的canonical—livepatch包的Rev号是229,所以你可以运行以下命令来删除它:

sudo snap remove canonical—livepatch——revision = 229 

记住在上面的命令中替换软件包名称和修订号。

2.删除未使用的快照包

有时,您应该使用以下命令列出安装在PC上的所有快照:

数独快照列表 

从输出中查找任何未使用的包,并使用以下方法删除它们:

sudo snap remove package_name 

使用du命令定期监视软件包占用的磁盘空间。快照主要存储在快照文件夹内的主目录中。

du—h~/snap 

3.删除未使用的包依赖项

尽管Snap非常擅长管理依赖项,但挑战在于,在某些情况下,它安装的依赖项比所需的多,这导致了软件包占用了如此多的磁盘空间。

对于软件依赖性的细粒度控制,您应该使用发行版的默认包管理器。您可以使用以下命令删除未使用的包:

在基于Debian的Linux发行版上:

SUDO APT自动删除 

在基于RHEL的发行版上:

SUDO DNF自动删除 

在基于Arch的Linux发行版上:

sudo pacman—Rns $(pacman—Qdtq) 

根据您的发行版,前面的命令将创建依赖关系树,并删除系统不需要的任何包依赖关系。

4.如果可能,请使用其他包管理器

让我们面对现实吧,快照是不错的;但如果您使用的是一台磁盘空间有限的机器,明智的做法是使用其他包管理器,如APT、Pacman或Dnf。

首先,使用sudo SNAP REMOVE PACKAGE_NAME命令删除包,然后使用APT或默认的包管理器重新安装包。

在基于Debian的Linux发行版上:

sudo apt install package_name 

在RHEL上,运行:

sudo dnf install package_name 

在基于Arch的Linux发行版上,使用:

苏都吃豆人-S套餐名称 

记住用实际的包名替换命令中的package_name。

请注意,某些软件包仅作为Snap包提供。因此,即使你在后台使用默认的包管理器,它仍然会使用Snap来安装它。例如,Ubuntu上的Firefox浏览器。即使你使用APT,它也会安装Firefox Snap包。

Snap套餐很棒,但它们太大了!

尽管体积庞大,但Snap包具有许多优点,如更好的依赖性管理和安全性。此外,Snap包与所有主流Linux发行版普遍兼容。