É subdiretório em / usr / bin realmente proibido por ESF

1

Descrição da tag Lintian:

The Filesystem Hierarchy Standard forbids the installation of new directories in /usr/bin other than /usr/bin/mh.

No entanto, tudo o que posso encontrar no documento vinculado é

This is the primary directory of executable commands on the system.

Este permite que os comandos executáveis cheguem até lá, mas não proíbe nada. A que parágrafo os doees Lintian se referem?

O motivo pelo qual gosto de colocar um subdiretório é que tenho um script wrapper, que o usuário usa em vez do binário, e quero que o script wrapper funcione sem alterações ao "instalar" o programa. Em suma, o script parece

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

onde arch é deduzido de /proc/cpuinfo . O sistema de compilação emite o binário no diretório __anja_"$mode"_"$arch" , no diretório raiz do projeto.

Sim, o local correto para os binários reais é /usr/libexec , mas o script deve ser alterado durante o procedimento de instalação.

    
por user877329 28.07.2017 / 20:15

1 resposta

3

Seção 4.4.2 da ESF, versão 3.0 , especificamente declara

There must be no subdirectories in /usr/bin.

Como você usa o Lintian, suponho que esteja segmentando o Debian ou um derivado; Em tal ambiente, o local apropriado para seus binários é um subdiretório específico do pacote de /usr/lib . O Debian e seus derivados não usam /usr/libexec .

    
por 28.07.2017 / 23:35

Tags