我需要为包管理系统确定适当的目录命名结构。原始目录结构在任何方面都不符合 POSIX 标准,当然也不符合 UNIX 风格(您会注意到它与 GoboLinux 类似)。结构看起来有点像这样:
/Applications
- 用户的应用程序(但用户自己没有安装)/System/AppResolve
- 应用程序解析(有效/bin
)/System/LibResolve
- 库解析(有效/lib
)/System/Utilities/Applications
- 系统运行的基本应用程序/System/Utilities/Libraries
- 系统运行必需的库
现在我需要找到一种方法在更像 UNIX 的系统上表示此目录结构。 AppResolve 和 LibResolve 不是问题,因为/lib
它们/bin
可以正常工作,问题在于其他目录。
在每个其他目录下,应用程序都位于它们自己的文件夹中,因此例如您可能有这样的路径:
/System/Utilities/Applications/Tar/1.22/bin/tar
当然,/bin/tar
符号链接将解析为该二进制文件。
所以问题是这样的,我需要采用这种结构并重新排列它以适应 UNIX 风格的命名目录(特别是这样它可以与 Linux 上的现有结构一起使用)。我想到了以下内容,但我认为它是重复的并且不是很好:
/usr/app/user/applications/...
/usr/app/system/applications/Tar/1.22/bin/tar
/usr/app/system/libraries/...
建议?
为了澄清:这并不要求映射到现有的 UNIX 目录;而是要求映射到现有的 UNIX 目录。它要求根据 UNIX 命名约定(3 个字母的目录等)为这些“用户”和“系统”目录提供最合适的引导路径
答案1
作为建议的审查man hier
或有关层次结构标准的其他文档。我将软件包安装到 to 中/opt
,它映射到您的/Applications
目录。在我使用过的大多数系统上,包 bin 目录被添加到PATH
用户.profile
或系统范围内/etc/profile
。
在某些情况下,配置和二进制文件可能会链接到根目录或 下的标准bin
、、、和目录。 sbin
etc
lib
/usr/local
编辑:重读你的问题。使用标准目录bin
、sbin
、lib
、etc
、usr
和var
。源目录和构建目录通常位于/usr/src
每个包一个目录的位置下。安装通常是通过将文件复制到标准目录结构中来完成的。安装完成后,应该可以安全地清理或删除/usr/src
.
答案2
首先,您能否通过引入一种使用不同配置编译相关软件的方法来完全避免映射问题,从而使用真正的 UNIX 路径而不是尝试硬塞它?
如果以某种方式修改原始文件,使其可以在适当的位置重新打包,我建议使用它/opt
作为存储整个内容和符号链接的地方。