/var
目录运行。但有时,我还会看到/opt
目录。在查看的同时,我还会看到/usr/local/
甚至/etc
。我什么时候应该在一个文件夹或另一个文件夹中安装应用程序?每种都有优点和缺点吗?它与风味历史记录(Solaris vs Linux或Red Hat vs Ubuntu)有关吗?
#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呢?还有 usr / var>, usr / local / 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
评论
/ etc是离开应用程序的奇怪而不合适的地方...我见过人们把东西放在/ etc中,例如Perl模块。很奇怪,但是发生了...
对于每一个荒谬的事情,都有一个捍卫它的拥护者。