我正在构建一个没有 /usr 目录的 Linux 系统。让工具链工作出奇地容易,但我对很多 auto* 脚本感到恼火:configure 等通常似乎假设env
是在/usr/bin
.
一种解决方法是在构建过程中进行,但显然这在美观上没有吸引力,并且存在泄漏到最终系统ln -sv .. /usr
的路径的风险。 /usr
(生产中将会安装一个网络/usr
,我什至不希望基本系统知道它的存在。)
我是否安装了错误的自动工具,或者这只是configure经常做出的令人恼火的假设?我不env
投入是否违反了 FHS /usr/bin
? (这对我来说并不是一个破坏性的事情;我已经通过拥有/inc
和 来破坏它了/share
。)
答案1
你可能会觉得/usr
不美观,但这就是宇宙的运作方式。几乎所有的 Unix 都有/usr/bin/env
——据我所知,现存的唯一没有的 Unix 是 SCO OpenServer,而且现存的规模并不大。如果没有/usr/bin/env
,您不仅违反了 FHS,而且还违反了一项极为普遍的惯例。/usr/bin/env
是一个标准位置,即使该标准没有写入。它并不意味着是一个可配置的位置:/usr/bin/env
是每个人都可以假设存在的一个位置。
不管你喜欢与否,解决办法就是安排/usr/bin/env
。删除/usr
层次结构很好,但如果这样做,请创建/usr
一个到 的符号链接/
。
如果您要/usr
通过网络安装,那么:
- 创建
/usr
一个包含符号链接的目录bin -> ../bin
。 - 确保在您挂载的文件系统上
/usr
,该文件bin/env
是符号链接/bin/env
或工作env
程序。
答案2
/usr/bin
是这env
几乎所有 Linux 和一些 UNIX(包括 OpenBSD)上的位置。许多脚本使用此 shebang 来尊重用户PATH
为bash
, sh
, python
, perl
, ... 设置的位置
更多信息
我是否安装了错误的自动工具,...
我认为需要更多有关“工具链”的信息。