Como diferentes distribuições modificam as localizações de arquivos de configuração para programas?

14

Muitos programas do 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 consegui encontrar nenhuma informação. Eu sei que está lá fora, eu simplesmente não consigo encontrar. Qual é o "caminho do Linux" em relação a isso?

    
por bfvanrooyen 17.02.2016 / 08:43

2 respostas

14

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

Com a maioria dos pacotes que utilizam o autoconf e o automake, é possível especificar o diretório onde os arquivos de configuração serão procurados usando o parâmetro --sysconfdir . Outros sistemas de compilação (por exemplo, CMake) têm opções semelhantes. Se o pacote de origem usar um desses sistemas de compilação, o empacotador poderá especificar facilmente os parâmetros corretos e nenhuma correção será necessária. Mesmo que não o façam (por exemplo, como a origem do 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 origem do envio.

Se não for esse o caso, muitas vezes a distribuição terá que adicionar patches à fonte para que ela mova os arquivos no 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 para os mantenedores do upstream, e não tenham que mantê-lo / atualizá-lo. Esse é o caso para locais de arquivos de configuração, mas também para outras coisas, como os executáveis bin / sbin (a interpretação do que é um comando do administrador do sistema difere entre distribuições), local onde gravar a documentação e assim por diante.

Nota: se você mantiver algum software livre, por favor facilite o contato dos empacotadores com você. Caso contrário, temos que manter esses patches sem nenhuma razão particularmente boa ...

    
por 17.02.2016 / 09:28
8

Eles têm correções aplicadas à árvore de código-fonte que adaptam os locais.

Há "padrões" suficientes disponíveis para que cada distribuição possa fazer sua escolha com base em preferências (pessoais) e / ou práticas históricas. Raramente existe uma solução que apenas tenha vantagens. Isso às vezes é chato / confuso, mas consistência dentro de uma distribuição é o objetivo mais importante: leva a menos confusão e adivinhação mais fácil onde as coisas podem ser para o programa Y se você já sabe onde coisas similares (arquivos de instalação / configuração, por exemplo) são para programa X.

Exemplo de aplicação de patch

Meu pacote python ruamel.yaml está disponível no Debian Sid. Ela costumava ser dependente de ruamel.base , e os usuários que fizeram a instalação via PyPI ainda podem ter versões mais antigas e incompatíveis de ruamel.base instalado. Usar setup.py / PyPI não é um gerenciamento de pacotes real, portanto você não pode excluir um pacote previamente instalado através de dependências. Resolvi o problema para os usuários do PyPI criando uma versão mais recente do ruamel.base que removeu os problemas associados aos pacotes ruamel.base anteriores e tornou ruamel.yaml dependente dessa versão mais recente.

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

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

    
por 17.02.2016 / 08:48