我应该将应用程序放入 /usr/local 还是 /usr/local/share?

gre*_*man 30 software-installation directory-structure application

什么是“标准”——我应该将应用程序(不仅仅是二进制文件,而是整个发行版)放到 /usr/local 或 /usr/local/share 中。

例如 scala 或 weka —— 它包含示例、二进制文件、库等。所以它会

/usr/local/scala-2.9.1 
Run Code Online (Sandbox Code Playgroud)

或者

/usr/local/share/scala-2.9.1
Run Code Online (Sandbox Code Playgroud)

由于我是唯一的管理员,这对我来说没什么大不了的,但我更喜欢使用广泛使用的东西,而不是我自己的习惯。

重要提示:我不是在询问您应该将应用程序拆分为 /usr/local/bin、/usr/local/lib 等的情况。相反,我问的是您必须为整个应用程序保留一个主目录的情况。

Fah*_*tha 26

我认为 /opt 在这种情况下更标准。下面引用了文件系统层次结构标准中的相关部分

发行版可以在 /opt 中安装软件,但未经本地系统管理员同意,不得修改或删除本地系统管理员安装的软件。

? 基本原理 在 UNIX 社区中,将 /opt 用于附加软件是一种成熟的做法。System V 应用程序二进制接口 [AT&T 1990] 基于 System V 接口定义(第三版),提供了一个与此处定义的非常相似的 /opt 结构。

英特尔二进制兼容性标准 v. 2 (iBCS2) 也为 /opt 提供了类似的结构。

通常,支持系统上的软件包所需的所有数据都必须存在于 /opt/ 中,包括旨在复制到 /etc/opt/ 和 /var/opt/ 中的文件以及 /opt 中的保留目录。

使用 /opt 的发行版的小限制是必要的,因为发行版安装的软件和本地安装的软件之间可能会发生冲突,特别是在某些二进制软件中找到固定路径名的情况下。

/opt/ 下的目录结构由软件的打包者决定,但建议将软件包安装在 /opt// 中,并遵循与 /opt/package 的指南类似的结构。与此结构不同的一个有效原因是支持包可能在 /opt//lib 或 /opt//bin 中安装了文件。


sym*_*ean 5

您应该只/usr/local/share用于不特定于特定体系结构/操作系统版本的文件。

之后,它取决于你是否你散发的现有子目录的文件,/usr/local或者如果您创建一个新的专用目录/usr/local(但后者不会对可执行文件已经存在PATH,则LD_LIBRARY_PATH,也没有MANPATH)。

看看FHS