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

14

Muitos programas Linux afirmam que o local do arquivo de configuração depende da distribuição. Fiquei me perguntando 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á lá fora, eu simplesmente não consigo encontrá-lo. Qual é a "maneira Linux" em relação a isso?

bfvanrooyen
fonte

Respostas:

14

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

Com a maioria dos pacotes usando autoconf e automake, é possível especificar o diretório em que os arquivos de configuração serão procurados usando o --sysconfdirparâmetro Outros sistemas de construção (por exemplo, CMake) têm opções semelhantes. Se o pacote de origem usar um desses sistemas de construção, o empacotador poderá especificar facilmente os parâmetros corretos e não serão necessários patches. Mesmo que não o façam (por exemplo, porque a fonte upstream usa algum sistema de compilação desenvolvido em casa), ainda é possível especificar algumas configurações de compilação para mover os arquivos de configuração para um local específico sem precisar corrigir a fonte upstream.

Se esse não for o caso, geralmente a distribuição precisará adicionar patches à fonte para fazê-la mover arquivos no que eles consideram o local "certo". Na maioria dos casos, os empacotadores de distribuição gravam um patch que permitirá que a fonte seja configurada no sentido acima, para que eles possam enviar o patch aos mantenedores upstream e não precisem manter / atualizá-lo. Esse é o caso dos locais dos arquivos de configuração, mas também de outras coisas, como os bin/ sbinexecutáveis ​​(a interpretação do que é um comando do administrador do sistema difere entre as distribuições), o local onde escrever a documentação e assim por diante.

Nota: se você manter algum software livre, por favor, torná-lo fácil para os empacotadores de falar com você. Caso contrário, temos que manter esses patches sem nenhuma razão particularmente boa ...

Wouter Verhelst
fonte
8

Eles têm patches aplicados à árvore de códigos-fonte que adaptam os locais.

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

Exemplo de aplicação de patch

Meu pacote python ruamel.yamlestá disponível no Debian Sid. Costumava ser dependente ruamel.basee os usuários que instalaram via PyPI ainda podem ter versões mais antigas e incompatíveis de ruamel.baseinstaladas. O uso de setup.py/ PyPI não é um gerenciamento de pacotes real, portanto você não pode excluir um pacote instalado anteriormente por meio de dependências. Resolvi o problema para os usuários do PyPI criando uma versão mais nova ruamel.baseque removeu os problemas associados aos ruamel.basepacotes mais antigos e ruamel.yamldependi dessa versão mais recente.

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

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

Anthon
fonte