我运行了很多开源应用程序,包括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
。