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


我运行了很多开源应用程序,包括java和tomcat。似乎大多数指令都让我的应用程序从中运行 /var 目录。但每隔一段时间,我也会看到 /opt 目录。虽然我很喜欢,但我也看到了 /usr/local/ 乃至 /etc 同样。

我什么时候应该在一个文件夹或另一个文件夹中安装?每个人都有利弊吗?是否与风味历史有关(Solaris vs Linux或Red Hat vs Ubuntu)?


72
2017-12-21 18:58




/ etc离开应用程序是一个奇怪且不适当的地方...... - user5336
我见过人们把东西放在/ etc中,比如Perl模块。这很奇怪,但它发生了...... - ℝaphink
对于每一种荒谬,都有一个捍卫它的冠军。 - womble♦


答案:


这些问题的标准是 文件层次结构标准。这是一份相当大的文件。基本上(也非常粗略地),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文件。


126
2017-12-21 19:06



我可能想作为备忘单打印的少数子弹列表之一...... - stimpy77
+1为 /srv。我正在为我的git存储库寻找一个位置,并且不喜欢我的Apache内容 /var/www。 /srv 似乎是一个完美的地方。 - Mr. Hedgehog
@ℝaphink,为什么叫它 var 代替 data? - Pacerier
@Hedgehog先生,“你不喜欢”是什么意思?小心解释一下? - Pacerier


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


3
2017-12-21 19:07



/var 是为了 不同 系统文件,而不是“各种”。 - womble♦
/ var用于“可变数据文件”。说它是“各种系统文件”是模棱两可的,可能会产生误导。 o_O你说“选择”是对的。 - phoenix8
@Eduard,那么/ opt / var呢?并且</ usr / var>,</ usr / local / var> ... - Pacerier


这取决于您当地的标准。

就个人而言,我没有任何理由在/ var中安装任何东西。我的/ usr / local几乎总是在网络上安装nfs,因此任何未打包的东西都会安装到/ opt中。


2
2017-12-21 19:14



除了数据之外,你还会把/ var放在什么? - ℝaphink
通常程序会将自己的东西粘在/ var中。主要是供应商提供的 - 日志,一些库,控制文件,.pid文件,这类事情。 - David Mackintosh
我不太同意。图书馆,如果它们是静态的,应该进入 /usr。动态生成的库可能最终会进入 /var/lib 偶尔,但我不知道你会实际上是什么 安装 在 /var,从管理角度来看。该程序可能会广泛使用它,但在启动它之前它应该是空的。 - ℝaphink
现在我唯一故意安装到/ var中的是nfsen / nfdump,这是因为应用程序的占用空间是它累积的所有nfdump文件。 (并且因为这是一个以某种方式使其投入生产的测试装置。所以 - “因为没有充分的理由”。)但这就是它。当然,因为我没有对我的硬盘进行分区,所以/ var,/ opt和/ usr都在同一个文件系统上。 - David Mackintosh
Qmail安装在/ var中。这是对它的众多批评之一。 - staticsan