我应该在 /var 还是 /opt 中安装 Linux 应用程序?

Tre*_*red 91 linux installation

我运行了很多开源应用程序,包括 java 和 tomcat。似乎大多数指令都让我的应用程序从/var目录中运行。但每隔一段时间,我也会看到/opt目录。当我在做的时候,我也看到了/usr/local/,甚至也看到了/etc

我什么时候应该在一个文件夹或另一个文件夹中安装应用程序?各有优缺点吗?它是否与风格历史有关(Solaris 与 Linux 或 Red Hat 与 Ubuntu)?

rap*_*ink 146

这些问题的标准是文件层次结构标准。这是一个相当大的文件。基本上(并且非常粗略),Linux 上的标准路径是:

  • /bin&/sbin用于操作系统的重要程序,sbin 仅用于管理员;
  • /usr/bin&/usr/sbin用于非重要程序,sbin 仅用于管理员;
  • /var用于程序的实时数据。它可以是缓存数据、假脱机数据、临时数据(除非它在 ​​中/tmp,每次重新启动时都会擦除)等;
  • /usr/local用于本地安装的程序。通常,它托管遵循标准但不是为操作系统打包的程序,而是由管理员手动安装(例如使用./configure && make && make install)以及管理员脚本;
  • /opt用于未打包且不遵循标准的程序。您只需将所有库与程序放在一起。它通常是一个快速而肮脏的解决方案,但它也可以用于自己制作的程序,并且您希望有特定路径。您可以在其中创建自己的路径(例如/opt/yourcompany),在这种情况下,我们鼓励您将其注册为标准路径的一部分;
  • /etc 不应包含程序,而应包含配置。

如果您的程序特定于该服务所提供的服务,/srv也可以为它们提供一个很好的位置。例如,我更喜欢/srv/www用于网站,而不是/var/www确保目录仅包含我自己添加的数据,而没有来自软件包的任何数据。

分布之间存在一些差异。例如,libexec当 Debian/Ubuntu 系统不使用时,RedHat 系统使用目录。

FHS 主要由 Linux 发行版使用(我实际上不知道任何其他操作系统真正符合它)。其他 Unix 系统不遵循它。例如,BSD 系统倾向于/usr/local用于打包程序,而 Linux 则不是这种情况。Solaris 有非常不同的标准路径。

如果您想了解更多信息,我强烈建议您阅读我上面链接的 FHS 文件。

  • +1 为`/srv`。我正在为我的 git 存储库寻找一个地方,但不喜欢我的 Apache 内容位于 `/var/www` 中。`/srv` 似乎是一个完美的地方。 (6认同)
  • 我可能想打印出来作为备忘单的少数项目符号列表之一...... (2认同)
  • @Pacerier 回到 90 年代,你会被告知它是 `/var` 因为它用于“各种数据”。早期,Unix 托管在单个驱动器上。当这还不够时,他们购买了一个新的,将其安装为“/usr”并将所有用户数据移至此处。但这还不够,旧驱动器很快又满了。因此,他们将系统无需启动即可启动的所有二进制文件从“/bin”移动到“/usr/bin”。他们根本就没有空间了。后来他们需要在用户之间共享数据,因此他们制作了“/var”并将其用作投递箱。FHS 充满了类似的遗留决策,我们应该对此持保留态度。 (2认同)

小智 5

opt代表可选软件。var代表可变系统文件。因此,您的应用程序应该转到/opt.

  • `/var` 用于*不同的*系统文件,而不是“各种”。 (9认同)
  • /var 用于“可变数据文件”。说它用于“各种系统文件”是模棱两可的,并且可能会产生误导。o_O 你说的“选择”是对的。 (4认同)
  • @Eduard,那么 /opt/var 怎么样?还有 </usr/var>、</usr/local/var>... (2认同)