Pakete als veraltet markieren

Manchmal ist ein Paket eigentlich zur Entfernung aus Fedora vorgesehen, wird aber aus verschiedenen Gründen, unter anderem zur Wahrung der Abwärtskompatibilität, noch eine Weile (oft für unbestimmte Zeit) in Fedora behalten. Um zu verhindern, dass neue Pakete von einem solchen Paket abhängen, kann es als veraltet markiert werden.

Voraussetzungen für die Veraltet-Markierung

Wenn in Fedora keine Abhängigkeiten zu einem Paket bestehen, kann ein Paketbetreuer dieses nach eigenem Ermessen als veraltet markieren. Ein Paketbetreuer (oder eine Gruppe von Paketbetreuern) kann auch mehrere Pakete gemeinsam als veraltet kennzeichnen, sofern kein Paket dieser Gruppe eine Abhängigkeit zu einem Paket außerhalb dieser Gruppe ist.

Wenn ein Paket von anderen Paketen der Distribution abhängt (die nicht als veraltet markiert werden sollen), erfordert die Kennzeichnung als veraltet eine durch FESCo genehmigte Änderung in Fedora. Paketbetreuer SOLLTEN die Kennzeichnung eines Pakets als veraltet den anderen Betreuern mitteilen, vorzugsweise über die Mailinglisten devel oder devel-announce.

Ein Paket als veraltet markieren

Um ein Paket als veraltet zu markieren, wird ein spezielles virtuelles „Provides“ hinzugefügt:

Provides: deprecated()

Wenn das Paket Teilpakete enthält und der Paketierer beabsichtigt, das gesamte Paket als veraltet zu kennzeichnen, MUSS der Paketierer alle Teilpakete als veraltet markieren.

Name:      mainpackage
...
Provides:  deprecated()

...

%package subpackage
...
Provides:  deprecated()

Alternativ kann ein Paketierer auch beschließen, nur einige Teilpakete als veraltet zu markieren.

Ein Paketierer SOLLTE einen Kommentar zur Spec-Datei hinzufügen, der erklärt, warum ein Paket als veraltet markiert wird. Zum Beispiel:

# net-tools (ifconfig etc.) have been obsoleted for ~20 years upstream.
# We want to get rid of it from Fedora in favor of the iproute package,
# however many sysadmins still expect ifconfig to be there, so we keep it
# around as a deprecated package.
Provides:  deprecated()

Falls ein Datum für die endgültige Entfernung des Pakets aus der Distribution bekannt ist, KANN dieses wie folgt angegeben werden:

Provides:  deprecated() = YYYYMMDD

Die spezielle deprecated()-Option darf in keinem veröffentlichten Zweig von Fedora hinzugefügt werden. Pakete dürfen in Rawhide (dem Master-Zweig), im Zweig für eine kommende Fedora-Version (sofern vorhanden) bis zum Zeitpunkt des finalen Einfrierens und in EPEL-Zweigen (jederzeit) als veraltet markiert werden. Beachten Sie außerdem, dass Pakete, die eine Zeit lang als veraltet markiert sein können, schließlich in Release-Zweige gelangen können. Die Einschränkung gilt nur für das erstmalige Hinzufügen des deprecated()-Tags.

Konsequenzen aus der Veraltet-Markierung

Technisch gesehen ändert sich nichts; ein veraltetes Paket funktioniert und verhält sich wie zuvor. Andere Pakete in Fedora dürfen jedoch keine Abhängigkeit von einem veralteten Paket hinzufügen (dies schließt Requires, BuildRequires, Recommends, Suggests usw. ein). Dies gilt sowohl für Aktualisierungen bestehender Pakete als auch für neue Pakete, die zu Fedora hinzugefügt werden. Wer neue Pakete einreicht, sowie Paketreviewer MÜSSEN prüfen, ob Abhängigkeiten des eingereichten oder geprüften Pakets als veraltet markiert wurden. (Eine Umbenennung eines veralteten Pakets ist jedoch zulässig.)