
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 --sysconfdir
parâ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.yaml
está 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.base
instalado. 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.base
que removeu os problemas associados a ruamel.base
pacotes mais antigos e tornou-a ruamel.yaml
dependente dessa versão mais recente.
Para Sid isso não é um problema: versões mais antigas do ruamel.base
não foram instaladas (ou podem ser removidas através do gerenciamento de pacotes). Portanto, eles aplicam umacorreção, que você pode encontrar noruamel.yaml
página de informações sobre Sidque remove a dependência de ruamel.yaml
on 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 .