应用程序是否应该安装在根分区上?

应用程序是否应该安装在根分区上?

我遇到一些问题,根分区已被填满,并且被损坏,导致启动问题。

我检查了一下,发现上面安装了 Matlab,它很大,而且经常崩溃。我有点惊讶 Matlab 安装在/usr/local/MATLAB?现在我看到 PyCharm 也安装在根分区上,位于/opt/pycharm。还有其他应用程序、Chrome 等。

与用户分区(800 GB)相比,它很小(64 GB)/home,但仍安装有应用程序。根分区是用来做什么的?应用程序应该放在哪里?

答案1

应用程序打包器控制软件包安装到的目录,您可以控制(安装时)每个目录位于哪个驱动器/阵列。

根 ( /) 目录包含所有未分配特定驱动器/阵列/分区来保存数据的目录,这意味着根目录应包含您添加到系统的所有附加软件包的空间(封装类型也会影响空间要求)。

安装人员应在安装之前做好规划(但可以调整分区大小,或者在安装后将目录移动到其他驱动器/阵列/分区)。软件包规则也会因版本而异;因此,不要假设 20.04 中存在的规则(焦点) 与 22.04 相同 (果酱);规则仅在需要更改时才会更改,但它们可能会从一个版本更改为下一个版本。

答案2

如其他答案所示,使用包管理器或安装脚本安装的应用程序安装在根目录 ( /) 下文件系统中固定的常规位置。这无法更改(对于安装脚本,请阅读“不容易”)。

除了扩大根分区之外,您还可以使用符号链接轻松地将部分系统数据重新定位到另一个存储介质。尤其是那些手动安装的应用程序(即不是从软件中心安装的应用程序)可以重新定位。这包括/opt/usr/local/

最好从 root 恢复提示符更改系统,尽管对于这些特定的系统文件夹,从 TTY 甚至常规图形终端移动这些特定文件夹可能仍然是安全的。不过,最好至少不要从 TTY 登录和工作。

  • 将计算机启动到登录屏幕

  • 使用Ctrl++切换到终端控制台并AltF4那里登录。

  • 在您的主文件夹下创建一个目录来托管额外的系统文件:

    sudo mkdir /home/system
    

    (您可以根据自己的喜好选择名称)。

  • 移动您的/opt/usr/local目录

sudo mv /opt /home/system/
sudo mv /usr/local /home/system/
  • 在原始位置创建指向这些移动目录的符号链接
ln -s /home/system/opt /opt
ln -s /home/system//usr/local /usr/local
  • 验证这两个文件夹现在是否已“恢复”(即使数据物理上位于另一个分区,系统也会在预期位置看到它们:
ls /opt /usr/local
  • 可能不需要重启,但为了保险起见还是重启一下。要么返回登录屏幕(在标准 Ubuntu 上Alt为 + F1,否则可能是Alt+ F7)重启,要么输入reboot

具体备注

您指出您的根分区为 60GB。这对于仅用作系统分区的分区来说仍然足够。对您来说,应该不需要移出任何系统文件。因此最好检查还有什么填充了该分区,并消除该数据源。然后您可以将任何系统数据留在系统分区上。

答案3

您无法控制大多数应用程序的安装位置。例如,它们位于 var opt usr 中。如果根目录已满,则它太小了。过去建议的最小值为 25 GB,但随着越来越多的应用程序被快照,该数字现在应该更接近 40 GB。至于损坏,您很可能指的是没有可用空间。单个分区空间不足的最常见原因之一是首先创建了许多分区。除非您有特殊原因需要创建许多分区,否则最好让安装程序创建分区。

答案4

有两个不同的东西:文件系统层次结构和分区。根目录 ( /) 下的特定目录,如/usr/opt每个都有其用途,由文件系统层次标准(FHS)。根据此标准,/usr/opt是安装应用程序的典型目录。

但是,这些目录分别位于哪个分区完全由您决定。您可以将整个/usr(或仅/usr/local)或/opt或任何其他目录挂载到单独的分区上。例如,在多用户服务器上,通常将和使用单独的分区/var/tmp以避免在系统日志填满/var分区或应用程序创建的临时文件填满/tmp分区时服务器崩溃。

如果您没有将这些目录挂载在单独的分区上,它们将位于与其父目录相同的分区上 - 即根分区上。

相关内容