FHS에서는 /usr/bin의 하위 디렉터리를 실제로 금지합니까?

FHS에서는 /usr/bin의 하위 디렉터리를 실제로 금지합니까?

Lintian 라벨 설명:

파일 시스템 계층 표준은 /usr/bin/mh가 아닌 /usr/bin에 새 디렉토리를 설치하는 것을 금지합니다.

그러나 내가 찾을 수 있는 링크된 문서는 다음과 같습니다.

이는 시스템에서 실행 가능한 명령의 홈 디렉터리입니다.

이것허용하다실행 가능한 명령이 거기에 있지만 아무 것도 비활성화하지 않습니다. Lin Tian은 어느 단락을 언급하고 있습니까?

내가 하위 디렉터리를 여기에 두는 것을 좋아하는 이유는 사용자가 바이너리 대신 사용하는 래퍼 스크립트가 있고 프로그램을 "설치"할 때 래퍼 스크립트가 변경 없이 작동하기를 원하기 때문입니다. 간단히 말해서 스크립트는 다음과 같습니다.

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.

관련 정보