我应该在/ var或/ opt中安装Linux应用程序吗?


83

我运行许多开源应用程序,包括Java和tomcat。似乎大多数说明都使我的应用程序从该/var目录运行。但是我偶尔也会看到/opt目录。当我在看的时候,我也看到了/usr/local/,甚至也看到了/etc

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


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

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

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

Answers:


133

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

  • /bin/sbin用于操作系统的重要程序,sbin仅用于管理员;
  • /usr/bin/usr/sbin不是重要程序,sbin仅是管理员;
  • /var用于程序的实时数据。它可以是缓存数据,假脱机数据,临时数据(除非它在/tmp其中,每次重新启动时都会擦除),等等。
  • /usr/local用于本地安装的程序。通常,它托管符合标准但未针对OS打包的程序,而是由管理员(例如使用./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文件。


1
我可能想作为备忘单打印出的几个项目符号列表之一...
stimpy77 2010年

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

@ℝaphink,那为什么叫它var而不是data
Pacerier's

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

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

4

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


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

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

@Eduard,那么/ opt / var呢?和</ usr / var>,</ usr / local / var> ...
Pacerier's

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

2

这取决于您当地的标准。

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


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

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

2
我不太同意。如果图书馆是静态的,则应进入图书馆/usr。动态生成库可能会在结束/var/lib偶然,但我看不出有什么话,你实际安装/var,从一个管理点。该程序可能会广泛使用它,但是在启动该程序之前它应该是空的。
ℝaphink

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

1
Qmail安装在/ var中。这是对此的众多批评之一。
staticsan
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.