/usr/bin 中的子目录真的被 FHS 禁止吗

/usr/bin 中的子目录真的被 FHS 禁止吗

林田标签说明:

文件系统层次结构标准禁止在 /usr/bin 中安装除 /usr/bin/mh 之外的新目录。

但是,我所能找到的链接文档是

这是系统上可执行命令的主目录。

允许可执行命令去那里,但它不禁止任何事情。林天指的是哪一段?

我喜欢在那里放置子目录的原因是我有一个包装脚本,用户使用它而不是二进制文件,并且我希望包装脚本在“安装”程序时无需更改即可工作。简而言之,脚本看起来像

options=()
debug=0
mode="rel"
for option in "$@"; do
    if [ "$option" == "--debug" ]; then
        debug=1
        mode="dbg"
    else
        options+=("$option")
    fi
done

current_dir=$(dirname "`readlink -f "${BASH_SOURCE[0]}"`")
binary="$current_dir"/__anja_"$mode"_"$arch"/anja

if [ $debug -eq 1 ]; then
    gdb --args "$binary" "${options[@]}"
else
    exec "$binary" "${options[@]}"
fi

其中arch是从 推导出来的/proc/cpuinfo。构建系统在__anja_"$mode"_"$arch"项目根目录的 目录中发出二进制文件。

是的,真正的二进制文件的正确位置是/usr/libexec,但是在安装过程中必须更改脚本。

答案1

FHS 3.0 版第 4.4.2 节,特别指出

中不能有子目录/usr/bin

既然你使用的是 Lintian,我想你的目标是 Debian 或衍生版本;在这样的环境中,二进制文件的适当位置是/usr/lib. Debian 及其衍生版本不使用/usr/libexec.

相关内容