Como diferentes distribuições modificam os locais dos arquivos de configuração dos programas?

Como diferentes distribuições modificam os locais dos arquivos de configuração dos programas?

Muitos programas Linux afirmam que a localização do(s) arquivo(s) de configuração depende da distribuição. Eu queria saber como as diferentes distribuições fazem isso. Eles realmente modificam o código-fonte? Existem parâmetros de construção que definem esses locais? Eu procurei por isso, mas não consigo encontrar nenhuma informação. Eu sei que está por aí, simplesmente não consigo encontrá-lo. Qual é o "jeito Linux" em relação a isso?

Responder1

Depende da distribuição e da fonte original ('upstream').

Com a maioria dos pacotes que usam autoconf e automake, é possível especificar o diretório onde os arquivos de configuração serão procurados usando o --sysconfdirparâmetro. Outros sistemas de compilação (por exemplo, CMake) possuem opções semelhantes. Se o pacote fonte usar um desses sistemas de compilação, o empacotador poderá facilmente especificar os parâmetros corretos e nenhum patch será necessário. Mesmo que isso não aconteça (por exemplo, porque a fonte upstream usa algum sistema de compilação caseiro), muitas vezes ainda é possível especificar alguma configuração de compilação para mover os arquivos de configuração para um local específico sem ter que corrigir a fonte upstream.

Se esse não for o caso, muitas vezes a distribuição terá que adicionar patches à fonte para fazer com que ela mova os arquivos para o local que eles consideram ser o local 'certo'. Na maioria dos casos, os empacotadores de distribuição escreverão um patch que permitirá que a fonte seja configurada no sentido acima, para que possam enviar o patch aos mantenedores originais e não tenham que mantê-lo/atualizá-lo. Este é o caso dos locais dos arquivos de configuração, mas também de outras coisas, como os executáveis bin​​/ sbin(a ​​interpretação do que é um comando do administrador do sistema difere entre as distribuições), local onde escrever a documentação e assim por diante.

Nota lateral: se você mantém algum software livre,por favortorne mais fácil para os empacotadores falarem com você. Caso contrário, teremos que manter esses patches sem nenhuma razão particularmente boa...

Responder2

Eles possuem patches aplicados na árvore do código-fonte que adaptam os locais.

Existem "padrões" suficientes disponíveis para que cada distribuição possa escolher com base em preferências (pessoais) e/ou práticas históricas. Raramente há uma solução queapenastem vantagens. Isso às vezes é irritante/confuso, mas a consistência dentro de uma distribuição é o objetivo mais importante: leva a menos confusão e a adivinhar mais facilmente onde as coisas podem estar para o programa Y se você já sabe onde estão coisas semelhantes (arquivos de instalação/configuração, por exemplo) para o programa X.

Exemplo de aplicação de patch

Meu pacote python ruamel.yamlestá disponível no Debian Sid. Costumava depender do ruamel.base, e os usuários que instalavam via PyPI ainda podem ter versões mais antigas e incompatíveis do ruamel.baseinstalado. Usar setup.py/PyPI não é um gerenciamento real de pacotes, então você não podeexcluirum pacote previamente instalado por meio de dependências. Resolvi o problema para usuários do PyPI criando uma versão mais recente ruamel.baseque removeu os problemas associados a ruamel.basepacotes mais antigos e tornou-a ruamel.yamldependente dessa versão mais recente.

Para Sid isso não é um problema: versões mais antigas do ruamel.basenão foram instaladas (ou podem ser removidas através do gerenciamento de pacotes). Portanto, eles aplicam umacorreção, que você pode encontrar noruamel.yamlpágina de informações sobre Sidque remove a dependência de ruamel.yamlon ruamel.base.

Outras distribuições têm configurações semelhantes. Por exemplo, se você olhar as especificações de criação de um arquivo RPM de origem (por exemplo, para RedHat/CentOS/SuSE), você verá que combina o tarball original de um pacote com um ou mais patches que serão aplicados antes de configurar/compilar .

informação relacionada