如何在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发行版普遍兼容。