In che modo diverse distribuzioni modificano le posizioni dei file di configurazione per i programmi?


14

Molti programmi Linux affermano che la posizione dei file di configurazione dipende dalla distribuzione. Mi chiedevo come lo fanno le diverse distribuzioni. In realtà modificano il codice sorgente? Esistono parametri di costruzione che impostano queste posizioni? Ho cercato questo, ma non riesco a trovare alcuna informazione. So che è là fuori, non riesco proprio a trovarlo. Qual è il "modo Linux" in merito?

Risposte:


14

Dipende dalla distribuzione e dalla fonte originale ("upstream").

Con la maggior parte dei pacchetti che utilizzano autoconf e automake, è possibile specificare la directory in cui verranno ricercati i file di configurazione utilizzando il --sysconfdirparametro. Altri sistemi di compilazione (ad esempio CMake) hanno opzioni simili. Se il pacchetto sorgente utilizza uno di questi sistemi di compilazione, il packager può facilmente specificare i parametri giusti e non sono necessarie patch. Anche se non lo fanno (ad es. Perché l'origine upstream utilizza un sistema di build sviluppato in casa), è spesso possibile specificare una configurazione di build per spostare i file di configurazione in una posizione particolare senza dover patchare l'origine upstream.

Non è così, quindi spesso la distribuzione dovrà effettivamente aggiungere patch al sorgente per far spostare i file in quella che considerano la posizione "giusta". Nella maggior parte dei casi, i pacchetti di distribuzione scriveranno quindi una patch che consentirà di configurare l'origine nel senso sopra indicato, in modo che possano inviare la patch ai manutentori a monte e non debbano continuare a mantenerla / aggiornarla. Questo è il caso per le posizioni dei file di configurazione, ma anche per altre cose, come i bin/ sbineseguibili (l'interpretazione di ciò che è diverso comando di un amministratore di sistema tra le distribuzioni), luogo in cui la documentazione di scrittura, e così via.

Nota a margine: se si mantiene un po 'di software libero, si prega di rendere più facile per confezionatori di parlare con te. Altrimenti dobbiamo mantenere tali patch per nessun motivo particolarmente buono ...


8

Hanno patch applicate all'albero del codice sorgente che adattano le posizioni.

Sono disponibili "standard" sufficienti affinché ogni distribuzione possa scegliere in base a preferenze (personali) e / o pratiche storiche. Raramente esiste una soluzione che presenta solo vantaggi. Questo a volte è fastidioso / confuso, ma la coerenza all'interno di una distribuzione è l'obiettivo più importante: porta a meno disordine e più facile indovinare dove potrebbero essere le cose per il programma Y se sai già dove cose simili (file di installazione / configurazione, ad esempio) sono per programma X.

Esempio di applicazione patch

Il mio pacchetto python ruamel.yamlè disponibile in Debian Sid. In passato dipendeva ruamel.basee gli utenti che avevano installato tramite PyPI potevano avere versioni precedenti, incompatibili, ruamel.baseinstallate. L'uso di setup.py/ PyPI non è una vera gestione dei pacchetti, quindi non è possibile eliminare un pacchetto precedentemente installato tramite dipendenze. Ho risolto il problema per gli utenti di PyPI realizzando una versione più recente ruamel.baseche rimuoveva i problemi associati ai ruamel.basepacchetti più vecchi e rendeva ruamel.yamldipendente da quella versione più recente.

Per Sid questo non è un problema: le versioni precedenti di ruamel.basenon erano installate (o potevano essere rimosse tramite la gestione dei pacchetti). Pertanto applicano una patch , che puoi trovare nella ruamel.yamlpagina delle informazioni per Sid che rimuove la dipendenza di ruamel.yamlon ruamel.base.

Altre distribuzioni hanno configurazioni simili. Ad esempio, se si guardano le specifiche per la creazione di un file RPM di origine (ad esempio per RedHat / CentOS / SuSE), si vedrà che si combina il tarball originale originale di un pacchetto con una o più patch che verranno applicate prima di configurare / compilare .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.