Wie ändern verschiedene Distributionen den Speicherort von Konfigurationsdateien für Programme?

14

Viele Linux-Programme geben an, dass der Speicherort der Konfigurationsdatei (en) von der Verteilung abhängt. Ich habe mich gefragt, wie die verschiedenen Distributionen das machen. Ändern sie tatsächlich den Quellcode? Gibt es Build-Parameter, die diese Speicherorte festlegen? Ich habe danach gesucht, aber keine Informationen gefunden. Ich weiß, dass es da draußen ist, ich kann es einfach nicht finden. Was ist der "Linux-Weg" in dieser Hinsicht?

bfvanrooyen
quelle

Antworten:

14

Dies hängt von der Distribution und der Originalquelle ('Upstream') ab.

Bei den meisten Paketen, die autoconf und automake verwenden, kann mit dem --sysconfdirParameter das Verzeichnis angegeben werden, in dem die Konfigurationsdateien gesucht werden. Andere Build-Systeme (z. B. CMake) haben ähnliche Optionen. Wenn das Quellpaket eines dieser Build-Systeme verwendet, kann der Packager problemlos die richtigen Parameter angeben, und es sind keine Patches erforderlich. Auch wenn dies nicht der Fall ist (z. B. weil die Upstream-Quelle ein eigens entwickeltes Build-System verwendet), ist es häufig möglich, eine Build-Konfiguration anzugeben, um die Konfigurationsdateien an einen bestimmten Speicherort zu verschieben, ohne die Upstream-Quelle patchen zu müssen.

Ist dies nicht der Fall, muss die Distribution häufig Patches zur Quelle hinzufügen, damit Dateien an den von ihnen als "richtigen" Speicherort verschoben werden. In den meisten Fällen schreiben Distributions-Packager dann einen Patch, mit dem die Quelle in dem oben genannten Sinne konfiguriert werden kann, sodass sie den Patch an die Upstream-Betreuer senden können und ihn nicht weiter warten / aktualisieren müssen. Dies ist der Fall für Speicherorte in Konfigurationsdateien, aber auch für andere Dinge, wie z. B. bin/ sbinexecutables (die Interpretation der Befehle eines Systemadministrators unterscheidet sich zwischen den Distributionen), den Speicherort, an dem die Dokumentation geschrieben werden soll usw.

Randnotiz: Wenn Sie freie Software pflegen, machen Sie es den Paketierern bitte leicht, mit Ihnen zu sprechen. Ansonsten müssen wir solche Patches ohne besonders guten Grund warten ...

Wouter Verhelst
quelle
8

Sie haben Patches auf den Quellcodebaum angewendet, die die Speicherorte anpassen.

Es stehen genügend "Standards" zur Verfügung, die es jeder Distribution ermöglichen, anhand (persönlicher) Präferenzen und / oder historischer Praktiken ihre Wahl zu treffen. Es gibt selten eine Lösung, die nur Vorteile hat. Das ist manchmal ärgerlich / verwirrend, aber die Konsistenz innerhalb einer Distribution ist das wichtigste Ziel: Es führt zu weniger Unordnung und einem leichteren Erraten, wo sich Dinge für Programm Y befinden, wenn Sie bereits wissen, wo sich ähnliche Dinge (Setup- / Konfigurationsdateien, z. B.) für Programm befinden X.

Beispiel für eine Patch-Anwendung

Mein Python-Paket ruamel.yamlist in Debian Sid verfügbar. Früher war es abhängig von ruamel.baseund Benutzer, die über PyPI installiert wurden, haben möglicherweise noch ältere, inkompatible Versionen von ruamel.baseinstalliert. Die Verwendung von setup.py/ PyPI ist keine echte Paketverwaltung. Sie können also kein Paket löschen , das zuvor über Abhängigkeiten installiert wurde. Ich habe das Problem für PyPI-Benutzer gelöst, indem ich eine neuere Version davon erstellt habe ruamel.base, um die mit älteren ruamel.basePaketen verbundenen Probleme zu beseitigen und ruamel.yamlvon dieser neueren Version abhängig zu machen.

Für Sid ist dies kein Problem: Ältere Versionen von ruamel.basewurden nicht installiert (oder konnten über die Paketverwaltung entfernt werden). Daher wenden sie einen Patch an , den Sie auf der ruamel.yamlInformationsseite für Sid finden , der die Abhängigkeit von ruamel.yamlon beseitigt ruamel.base.

Andere Distributionen haben ähnliche Einstellungen. Wenn Sie sich beispielsweise die Spezifikationen zum Erstellen einer RPM-Quelldatei ansehen (z. B. für RedHat / CentOS / SuSE), werden Sie feststellen, dass Sie das ursprüngliche Tarball eines Pakets mit einem oder mehreren Patches kombinieren, die vor dem Konfigurieren / Kompilieren angewendet werden .

Anthon
quelle