我运行许多开放源代码应用程序,包括java和tomcat。似乎大多数说明都使我的应用程序从/var目录运行。但有时,我还会看到/opt目录。在查看的同时,我还会看到/usr/local/甚至/etc

我什么时候应该在一个文件夹或另一个文件夹中安装应用程序?每种都有优点和缺点吗?它与风味历史记录(Solaris vs Linux或Red Hat vs Ubuntu)有关吗?

评论

/ etc是离开应用程序的奇怪而不合适的地方...

我见过人们把东西放在/ etc中,例如Perl模块。很奇怪,但是发生了...

对于每一个荒谬的事情,都有一个捍卫它的拥护者。

#1 楼

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



/bin/sbin是用于OS的重要程序,sbin仅用于管理员;

/usr/bin/usr/sbin适用于非关键程序,sbin仅适用于管理员;

/var适用于程序的实时数据。它可以是缓存数据,假脱机数据,临时数据(除非它在/tmp中,除非在每次重新启动时都会擦除),等等;;

/usr/local用于本地安装的程序。通常,它托管符合标准但未针对操作系统打包的程序,而是由管理员手动安装(例如,使用./configure && make && make install)以及管理员脚本;

/opt用于以下程序:未包装且不遵循标准。您只需将所有库与程序放在一起即可。它通常是一种快速而肮脏的解决方案,但是它也可以用于您自己创建的程序,并且您希望为其找到特定的路径。您可以在其中创建自己的路径(例如/opt/yourcompany),在这种情况下,建议您将其注册为标准路径的一部分;

/etc不应包含程序,而应包含配置。

如果您的程序特定于服务所提供的服务,则/srv也可以是它们的理想之选。例如,我更喜欢将/srv/www用于网站而不是/var/www,以确保目录仅包含我自己添加的数据,而不会包含来自软件包的任何数据。

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

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

如果您想了解更多有关此方面的信息,强烈建议您阅读上面链接的FHS文档。

评论


我可能想将其列为备忘单的几个项目符号清单之一...

–stimpy77
2010年9月5日下午6:57

+1为/ srv。我一直在寻找我的git存储库的地方,但不喜欢Apache内容位于/ var / www中。 / srv似乎是完美的地方。

–刺猬先生
2011年3月9日15:58

@ℝaphink,那为什么叫var而不是数据呢?

–起搏器
17年11月1日在22:54

@刺猬先生,“不喜欢”是什么意思?介意解释吗?

–起搏器
17年11月1日在23:01

@Pacerier回到90年代,您会被告知它是/ var,因为它用于“各种数据”。在早期,Unix托管在单个驱动器上。当还不够时,他们得到了一个新文件,将其安装为/ usr并将所有用户数据移到那里。但这还不够,旧驱动器很快又变满了。因此,他们将系统可以启动的所有二进制文件都从/ bin移到了/ usr / bin。它们只是空间不足。后来,他们需要在用户之间共享数据,因此他们制作了/ var并将其用作投递箱。 FHS充满了类似这样的遗留决定,应谨慎考虑。

–cprn
18年11月14日在15:07

#2 楼

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

评论


/ var用于变化的系统文件,而不是“ various”。

–womble♦
09年12月21日在19:23

/ var用于“可变数据文件”。说它是针对“各种系统文件”的,这是模棱两可的,并且可能会引起误解。 o_O虽然您对“ opt”是正确的。

– phoenix8
09年12月22日在8:35

@Eduard,那么/ opt / var呢?还有 ...

–起搏器
17年11月1日23:04



@womble这是错误的词源。这就是FHS所说的,但事实并非如此。上世纪90年代,您会被告知/ var,因为它用于“各种数据”。那时我还读过一本互联网前书,但我仍然有笔记。

–cprn
18年11月14日在14:59

#3 楼

这取决于您的本地标准。

就我个人而言,我没有充分的理由不将任何东西安装到/ var中。我的/ usr / local几乎总是在网络上进行nfs挂载,因此所有未打包的内容都将安装到/ opt中。

评论


无论如何,您将在/ var中放入什么,除了数据?

–ℝaphink
09年12月21日在20:56

通常程序会将自己的东西粘贴在/ var中。大多是供应商提供的-日志,某些库,控制文件,.pid文件等。

–大卫·麦金托什(David Mackintosh)
09年12月21日在22:03

我不太同意。如果库是静态的,则应放在/ usr中。动态生成的库有时可能会出现在/ var / lib中,但是从管理员的角度来看,我看不到您将在/ var中实际安装什么。该程序可能会广泛使用它,但是在启动它之前,它应该是空的。

–ℝaphink
09年12月22日在9:04

现在,我特意安装到/ var中的唯一东西是nfsen / nfdump,这是因为应用程序的占用空间是它累积的所有nfdump文件。 (并且由于这是一个以某种方式使其可以投入生产的测试安装,所以-“没有很好的理由使用”。)但是,仅此而已。当然,由于我不对硬盘进行分区,因此/ var,/ opt和/ usr都位于同一文件系统上。

–大卫·麦金托什(David Mackintosh)
09-12-22在13:56

Qmail安装在/ var中。这是对此的众多批评之一。

–staticsan
2010年5月12日23:52