web-dev-qa-db-ja.com

/ usr / binのサブディレクトリはFHSによって本当に禁止されていますか

Lintianタグの説明:

ファイルシステム階層標準では、/ usr/bin/mh以外の/ usr/binに新しいディレクトリをインストールすることは禁止されています。

ただし、リンクされたドキュメントを見つけることができるのは

これは、システム上の実行可能コマンドのプライマリディレクトリです。

これ許可実行可能コマンドはそこに移動しますが、何も禁止しません。リンティアンはどの段落を参照していますか?

サブディレクトリを配置するのが好きな理由は、ユーザーがバイナリの代わりに使用するラッパースクリプトがあり、プログラムを「インストール」するときにラッパースクリプトを変更せずに機能させたいからです。要するに、スクリプトは次のようになります

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
user877329

FHSのセクション4.4.2、バージョン3. 、具体的には

/usr/binにサブディレクトリがあってはなりません。

Lintianを使用しているので、Debianまたはその派生物をターゲットにしていると思います。このような環境では、バイナリの適切な場所は/usr/libのパッケージ固有のサブディレクトリです。 Debianとその派生物は/usr/libexecを使用しません。

4
Stephen Kitt