我运行了很多开源应用程序,包括 java 和 tomcat。似乎大多数指令都让我的应用程序从目录运行/var
。但偶尔我也会看到目录/opt
。当我这样做时,我也会看到/usr/local/
甚至/etc
。
我应该何时将应用程序安装在一个文件夹或另一个文件夹中?每种方法各有利弊吗?这与版本历史有关吗(Solaris 与 Linux 或 Red Hat 与 Ubuntu)?
答案1
这些问题的标准是文件系统层次标准。这是一份相当大的文档。基本上(非常粗略地说),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
确保目录仅包含我自己添加的数据,而不包含来自软件包的任何内容。
不同发行版之间存在一些差异。例如,RedHat 系统使用libexec
目录,而 Debian/Ubuntu 系统则不使用目录。
FHS 主要由 Linux 发行版使用(实际上我不知道有任何其他操作系统真正遵循它)。其他 Unix 系统不遵循它。例如,BSD 系统倾向于用于/usr/local
打包程序,而 Linux 则不是这样。Solaris 的标准路径非常不同。
如果您想了解更多信息,我强烈建议您阅读我上面链接的 FHS 文档。
答案2
opt
代表可选软件。var
代表可变系统文件。因此您的应用程序应该转到/opt
。
答案3
这取决于您当地的标准。
就我个人而言,我不会在没有充分理由的情况下将任何东西安装到 /var 中。我的 /usr/local 几乎总是通过网络挂载 nfs,因此任何未打包的东西都会安装到 /opt 中。