为什么 apt-get install 和 remove 不会清除相同的空间

为什么 apt-get install 和 remove 不会清除相同的空间

为什么会apt-get install package消耗apt-get remove package并清除几乎完全相同的空间?例如,使用包“latex2html”可以得到:

ubuntu:~$ sudo apt install latex2html
Need to get 758 MB of archives.
After this operation, 1,211 MB of additional disk space will be used.
Do you want to continue? [Y/n]
....
ubuntu:~$ sudo apt remove latex2html
The following packages will be REMOVED:
  latex2html
0 upgraded, 0 newly installed, 1 to remove and 92 not upgraded.
After this operation, 5,578 kB disk space will be freed.
Do you want to continue? [Y/n]

答案1

如果我们可以检查这两个命令的完整输出,我们可能会发现已apt-get install latex2html安装还有很多包(的依赖项latex2html)比apt-get remove latex2html删除的要多(只有一个,latex2html即其本身)​​。

很容易看出,一组正数 A 的总和大于集合 B 的总和,其中 B 是 A 的真正子集。更具体地说:包latex2html(类比中的集合 B)比同一个包加上其所有依赖项(集合 A,如果在包安装期间至少有一个未满足的依赖项)占用的空间要小。

如果你想删除所有没用过1.您可以使用的依赖包:

sudo apt remove <PACKAGE>
sudo apt autoremove

或者简单地

sudo apt autoremove <PACKAGE>

如果 Apt 打算执行您直接指示的操作以外的操作,所有这些命令都会要求确认,例如在命令行指定的软件包之上安装或删除不同的软件包。您还可以要求apt仅显示它将要执行的操作,而不是通过命令行选项-s--simulate--just-print--dry-run--recon--no-act(所有等效选项)实际执行该操作。


1此处“未使用”是指没有手动已安装的软件包依赖于它(直接或间接)。“手动”是指某人或某物指示 Apt 直接安装此特定软件包,即通过apt-get install <PACKAGE>、软件中心或其他软件包管理器界面,并且它是不是仅被 Apt 选择作为不同包的依赖项进行安装。

答案2

除了什么@DavidFoerster说过,apt remove不仅不会删除依赖项。尤其是配置文件经常被遗弃。来自man apt-get

消除

remove 与 install 相同,只是删除的是软件包而不是安装。请注意,删除软件包会将其配置文件保留在系统上。如果在软件包名称后附加加号(中间没有空格),则将安装而不是删除所标识的软件包。

清除

purge 与 remove 相同,只是删除和清除了软件包(所有配置文件也被删除)。

要摆脱所有内容(包括配置文件),请运行sudo apt purge,如引文中所述。

还请注意,apt将下载的软件包文件本身放入,/var/cache/apt/archives/以备再次需要。 任何 都不会删除这些文件sudo apt remove/autoremove/purge,这会占用更多磁盘空间。 您可以通过运行sudo apt autoclean并全部使用 来删除所有无法再下载的缓存软件包文件sudo apt clean

man apt-get

干净的

clean 清除本地存储库中检索到的软件包文件。它会从 /var/cache/apt/archives/ 和 /var/cache/apt/archives/partial/ 中删除除锁定文件之外的所有内容。

自动清洁(以及自 1.1 版起的自动清洁别名)

与 clean 类似,autoclean 会清除本地存储库中检索到的软件包文件。不同之处在于,它只会删除无法再下载且基本无用的软件包文件。这样可以长期维护缓存,而不会失控。如果将配置选项 APT::Clean-Installed 设置为 off,它将阻止已安装的软件包被删除。

相关内容