通过卸载软件包,我们期望会有更多的可用磁盘空间。然而,“ sudo apt purge PACKAGE
”实际上减少了可用磁盘空间。似乎“ apt purge
”产生的垃圾比它删除的内容还多。(编辑:此问题仅发生在 LiveOS 上,而不会发生在已安装的操作系统上。后来发现,这种奇怪的现象来自 LiveOS 不可避免的特性,而它apt
本身是无害的。)
在下面的演示实验中,“ apt purge
”先卸载了 Firefox,然后卸载了 ffmpeg。每次“ apt purge
”之前和之后,“ ”都会检查磁盘的已用空间和空闲空间(可用空间)df -h /
。
在第一个“ apt purge
”之前,“ df -h /
”显示了以下内容。如果存在 -h,df 打印的 G 和 M 分别表示 GiB 和 MiB。
Size Used Avail Use%
1.9G 60M 1.8G 4%
然后,Firefox 将被“ sudo apt purge firefox
”卸载,并打印以下消息。
After this operation, 220 MB disk space will be freed.
Do you want to continue? [Y/n]
输入Y,执行卸载。
然后,“ df -h /
”显示了以下内容。
Size Used Avail Use%
1.9G 141M 1.7G 8%
bc <<< '141-60'
因此,尽管应该减少 220 MB,但使用的空间却增加了 81 MiB ( )。
接下来,卸载 Firefox 后,要通过“ sudo apt purge ffmpeg
”卸载 ffmpeg,它会打印以下消息。
After this operation, 2058 kB disk space will be freed.
Do you want to continue? [Y/n]
因此,应该释放 2 MB。输入 Y,然后执行卸载。
然后,“ df -h /
”显示了以下内容。
Size Used Avail Use% Mounted on
1.9G 230M 1.6G 13% /
bc <<< '230-141'
因此,尽管应该减少 2 MB,但已用空间却增加了 89 MiB ( )。
问题1:为什么通过“ ”卸载会导致apt purge
已使用的磁盘空间增加?
问题 2:我甚至不确定“ apt purge
”是否会删除任何东西。我想知道“ apt purge
”是否只是将软件包从系统中移出到一个临时空间,以便 apt 稍后可以撤消卸载。如果是这样,卸载的软件包究竟停留在哪个目录中?我想删除它。即使关闭或重新启动机器会自动删除它,我也想在不关闭或重新启动机器的情况下删除它。
问题 3:“ apt purge
”似乎在磁盘上产生大量垃圾。垃圾在哪里?我想删除它。即使关机或重启机器会自动删除它,我想在不关机或重启机器的情况下删除它。
我的 Ubuntu 是 Ubuntu MATE 20.04.3 Live。它是一个 Live 操作系统。我使用 Ubuntu 安装媒体(只读)中的 Ubuntu,而没有将 Ubuntu 安装到硬盘上。默认情况下,Firefox 和 ffmpeg 都附带 Ubuntu MATE 20.04.3。Ubuntu Live 启动完成后,我立即运行了上述实验。
- 更新 -
这个问题的目的是解决 Live OS 上的这个问题。我更喜欢 Live OS,而不是安装在 rw 文件系统上的真实 OS。如果“ apt purge
”的工作方式因 Live OS 或已安装的 OS 而不同,并且已安装的 OS 上不存在此问题,则它根本无法解决我的情况。我想知道为什么 Live OS 上存在此问题。Live OS 是我问题的一部分。
- 更新 -
Thomas Ward 的以下评论解答了我在 LiveOS 上运行时无法弄清楚的有关此问题的所有谜团。
差异作为不同的文件存储在内存中,因此在实时操作系统映像和当前状态之间进行系统更改越大,丢失的空间就越大。
尤其是“差异作为不同的文件存储在内存中”这一条款是最有用的信息。如果没有 Thomas Ward 的这条评论,Nmath 的回答就无法说服我。
我猜测“内存”是指 RAM 磁盘,“ df -h /
”会报告其已用空间和可用空间。
答案1
“这是一个实时操作系统”
这就是原因。
实时会话基于只读文件系统。您在实时会话期间所做的任何更改都会写入此只读文件系统。
因此,如果您删除应用程序,您实际上并没有删除任何应用程序文件,但必须写入更多数据来适应您所做的更改。