作为一个恢复,长时间的Windows用户,我一直试图澄清我的理解“正确”的地方放在Linux的东西(或UNIX我猜,但我很less工作在非OS X的UNIX和Mac OS X很难“适当”)。 我宁愿保持公平分配独立的问题,但如果正确的答案取决于特定的风味,那就好了。 我的目标是能够让其他人在我已经build立的系统中工作,并能够在逻辑上跟随组织。
1.当涉及到系统pipe理员的angular色(而不是用户angular色)时,人们普遍认为最适合安装服务器二进制文件(如Web服务器,数据库等)的地方? 从我所收集的一段时间看来,这两个都是正确的:
/opt/<package> /usr/local/bin/<package> 文件系统层次结构标准似乎没有明确区分。 相互之间是否存在优势劣势,还是仅仅是偏好?
我也经常看到这种types的东西:
/usr/local/bin/foo-bar-3.2.1-baz /usr/local/bar -> /usr/local/bin/foo-bar-3.2.1-baz 如果特定于版本的软件包是实际位置,则添加符号链接以使打字/升级更容易。 这是非常普遍的吗?
然后下一个合乎逻辑的问题是他们的二进制数据去哪里? 这似乎是常见的:
/var/lib/<package> 有更好的位置吗?
在这个时代,我不相信关于“X文件在哪里?”这个问题有一个确定的答案。 当然有一些约定, TLDPlogging了很多这样的约定 。 但是,很多发行版都会有自己的约定。
一般来说,我走这个:
/opt :生活在他们自己的目录,二进制文件,库,configuration和所有的大块的应用程序。 我看到很多Java应用程序在那里生活,但这可能是我工作的环境
/usr/local :我编写的任何脚本/程序,没有打包在deb / rpm中。 对于用户应该是只读的,以便用户不能(轻易地)去覆盖它
/var :作为名字提示,variables数据在这里。 持久数据存储。 很多应用程序使用/var/lib来存储应用程序数据,而像/var/run类的东西则用于PID文件和套接字。 这将根据分布而变化。
当我第一次移植到Linux,并且随着时间的推移,我也发现这是令人困惑的,这是我所学到的。
规则1:如果可能的话,总是使用发行版的软件包pipe理器进行安装(对于大多数基于RPM的发行版来说,yum和大多数基于Debian的发行版都是apt-get,Slackware和Gentoo有它们自己的)。 当你使用包pipe理器时,你的包将被安装在他们所属的地方,以及其他应用程序希望find它们的地方。 从程序包pipe理器目标移动二进制文件将在稍后导致问题,因此将它们留在原来的位置。
规则#2:如果您在软件包pipe理器中找不到所需的软件包,则可能需要从源代码进行编译和安装。 这是事情会变得混乱的情况。 正在编译的应用程序通常会附带一个make文件,告知在调用make install时安装文件的位置。 一般来说,这是在/ opt或/ usr / local中安装文件的时候。 这些是从源安装的应用程序的常见位置。 更具体地说,在我看来,我通常发现封闭源二进制文件以/ opt结尾,而开源二进制文件最终以/ usr / local
关于你看到的符号链接 你是对的。 在大多数情况下,如果您看到符号链接情况(如您所述),那么安装过程就是为了方便升级/向后兼容性/或其他已知问题而完成的。
关于数据 – 如果你正在谈论conf文件,你通常会在/ etc目录中find它们。 各种lib目录提供了系统上其他应用程序使用的库。
LSB(Linux标准基础)项目已经试图标准化这样的东西和初始化脚本位置多年。 它已经取得了一些进展,但不是他们想要的那么多,主要是因为旧的分布根深蒂固在他们如何做生意,并没有看到改变其他方法的价值。
希望有所帮助。
您可能需要查看位于http://www.pathname.com/fhs/的文件系统层次结构标准(v2.3)。
这是由第三章中的Linux标准核心基本规范(v3.1)所引用的。 16。