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

我运行了很多开源应用程序,包括java和tomcat。 看起来像大多数指令有我的应用程序从/var目录运行。 但每隔一段时间,我也看到/opt目录。 当我在这里,我也看到/usr/local/甚至/etc

我应该何时将应用程序安装在一个文件夹中? 每个人有没有优点和缺点? 它是否与风味历史(Solaris与Linux或红帽与Ubuntu)有关?

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

  • /bin/sbin是用于操作系统的重要程序,sbin仅供pipe理员使用;
  • /usr/bin/usr/sbin用于不重要的程序,sbin仅用于pipe理员;
  • /var是程序的生活数据。 它可以是caching数据,假脱机数据,临时数据(除非它在/tmp ,每次重启都会被擦除)等。
  • /usr/local用于本地安装的程序。 通常情况下,它托pipe遵循标准的程序,但没有为操作系统打包,而是由pipe理员手动安装(使用例如./configure && make && make install )以及pipe理员脚本;
  • /opt适用于未打包且不遵循标准的程序。 你只需把所有的图书馆放在一起就可以了。 这通常是一个快速和肮脏的解决scheme,但它也可以用于您自己制作的程序,并且您希望具有特定的path。 您可以在其中创build自己的path(例如/opt/yourcompany ),在这种情况下,我们鼓励您将其注册为标准path的一部分;
  • /etc不应该包含程序,而是configuration。

如果你的程序特定于服务提供的服务, /srv也可以成为他们的好地方。 例如,我更喜欢使用/srv/www而不是/var/www来确保该目录只包含我自己添加的数据,而不包含来自软件包的数据。

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

FHS主要被Linux发行版所使用(我实际上并不知道任何其他符合它的操作系统)。 其他Unix系统不遵循它。 例如,BSD系统倾向于将/usr/local用于打包的程序,而Linux则不然。 Solaris有非常不同的标准path。

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

这取决于你的本地标准是什么。

就我个人而言,没有很好的理由,我不会在/ var中安装任何东西。 我的/ usr / local几乎总是从networking上挂载nfs,所以没有打包的东西会被安装到/ opt中。

opt代表可选软件。 var代表可变的系统文件。 因此你的应用程序应该去/opt