磁盘已满:无法安装软件包

磁盘已满:无法安装软件包

我正在尝试下载一个巨大的 python 包,突然遇到了空间紧张的问题。当我运行df -h命令时,它显示:

[root@darwin ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1       5.0G  5.0G  0.0G 100% /
devtmpfs        7.9G     0  7.9G   0% /dev
tmpfs           7.9G     0  7.9G   0% /dev/shm
tmpfs           7.9G   17M  7.9G   1% /run
tmpfs           7.9G     0  7.9G   0% /sys/fs/cgroup
tmpfs           1.6G     0  1.6G   0% /run/user/0

我只能看到/dev/vda1它的容量已经达到了100%。但是其他文件系统是免费的,为什么不能用于包安装呢?

答案1

devtmpfs包含由内核填充有关设备等信息的节点。

tmpfs尽管它显示为已安装的文件系统,但实际上存储在内存中。的内容tmpfs可以被换出到交换空间,但当系统重新启动时,它会全部消失。

您可能可以清理一些空间,但这只是一个临时解决方案,因为日志、数据和安装更多软件包只会再次填满它。从长远来看,5GB 空间还不够。

永久解决问题的唯一方法是为系统添加更多永久存储空间。

答案2

5GB的磁盘虽然不大,但可以安装带有GUI和许多标准应用程序的Linux发行版。

您应该找出哪个目录使用了大部分磁盘空间。使用磁盘使用情况 du为了那个原因:

du -smx / | sort -n

该列表中的最后一个目录使用 mos 空间。

例如,可能是/var。然后运行更详细的命令:

du -m /var | sort -n

举个例子,可以看到/var/cache/apt/archives占用了 418MB:

418     /var/cache/apt/archives
472     /var/cache/apt
482     /var/cache
706     /var

当您找到占用空间最多的目录后,您可以从中删除一些文件:

sudo rm /foo/bar

如果您的发行版是类似 Debian 的发行版,您可以使用以下命令删除已安装的软件包:

sudo apt-get clean

答案3

为了直接回答您的问题,这些文件系统不能用于软件包安装的主要原因是它们没有安装在软件包文件所在的位置(通常在 /etc 和 /usr 之间分割)。分析你的 df -h:

devtmpfs        7.9G     0  7.9G   0% /dev

这用于通过文件系统指针跟踪设备。软件包不会进入 /dev。理想情况下,只有设备位于 /dev 中。

tmpfs           7.9G     0  7.9G   0% /dev/shm
tmpfs           7.9G   17M  7.9G   1% /run

这些都是不同的临时文件系统,位于/dev/shm(“共享内存”)和/run.

tmpfs           7.9G     0  7.9G   0% /sys/fs/cgroup

这和 /dev 一样,有一个非常具体的目的,这超出了这个答案的范围,甚至无法开始描述。

tmpfs           1.6G     0  1.6G   0% /run/user/0

这是专门为 root 用户(uid 0)指定的最后一个 tmpfs。

无论如何,这些都不适合安装软件包,因为当您重新启动时,它们的内容都会被清空。可以想象,您可以将软件包存档存储在磁盘上,并执行覆盖 tmpfs 并在每次启动时重新安装所有软件包,但如果您只有 5GB 存储空间,则很可能它是一个嵌入式设备,如果您这样做,启动将需要很长时间做过某事。不过,这将是一个很棒的项目。

相关内容