openSUSE:Wartung von Paketen

(Weitergeleitet von openSUSE:Package maintenance)
Wechseln zu: Navigation, Suche
Dieses Dokument beschreibt, wie Paketbauer Aktualisierungen für veröffentlichte openSUSE Produkte als Teil des Wartungsprozesses einreichen können.
Warnung!Alle Pakete im Open Build Service sind vollständig öffentlich. Darum kann der Build Service nicht dazu verwendet werden, um gesperrte Sicherheitsaktualisierungen vorzunehmen. Für den Fall einer gesperrten Sicherheitsaktualisierung muss der Paketbauer bis zum Ende des Embargos warten, bevor er die Verbesserungen prüfen kann.

Das Paket finden, mit dem Sie arbeiten wollen

Der Build Service enthält viele unterschiedliche Paketversionen. Einige sind offizielle Veröffentlichungen und andere in der Entwicklung von Anwendern in ihrem Home-Projekt. Der einfachste Weg ist die Verwendung des Kommandos osc search. Der Schalter --maintained begrenzt die Ausgabe der Projekte, die spezielle Attribute eingerichtet haben, um gewartete openSUSE Produkte zu kennzeichnen. Wir verwenden das Paket nfs-utils als Beispiel.

$ osc search --maintained nfs-utils
matches for 'nfs-utils' in packages:

# Paket   # Projekt
openSUSE:11.3  nfs-utils
openSUSE:11.4  nfs-utils
openSUSE:12.1  nfs-utils

Warnung!Das hängt von der korrekten Konfiguration innerhalb des Build Service ab. Bitte konsultieren Sie das Wartungs-Team, wenn Sie an der Liste der Projekte, die von osc search --maintained ausgeben wird, Zweifel bezüglich ihrer Richtigkeit haben.

Einen Zweig erzeugen

Der Buildservice unterstützt einen leichten Weg, um an Paketen zu arbeiten, ohne unnötigerweise das Originalpaket zu kontaminieren. Er erlaubt dem Anwender, eine private Version des Paketes in seinem Home-Projekt zu überprüfen. Jede Änderung wird gespeichert als ein Satz von Änderungen des Originals. Das hat den Vorteil, einen Unterschied zwischen den beiden Projekten offensichtlich zu machen, wenn der Zweig an das Originalprojekt zurück gegeben wird.

Das Verfahren, um einen Zweig von einem einzelnen Paket eines einzelnen Projektes zu erzeugen ist wie folgt:

$ osc branch -M -c openSUSE:12.1 nfs-utils
[...]

In diesem Fall wurde kürzlich bereits eine Aktualisierung für nfs-utils herausgegeben. Die Aktualisierungsquellen wurden in einem anderen Projekt gespeichert, openSUSE:12.1:Update. Sie brauchen sich über die Details keine Gedanken machen. osc macht die richtigen Dinge automatisch und Verwendet die Aktualisierungsquellen. Folgen Sie nur den bereitgestellten Anweisungen und überprüfen Sie die abgezweigte Kopie des Paketes.

Wenn Sie bereits einen Zweig für dieses Paket haben, sollten Sie es löschen und neu erstellen. Ein Zweig, der noch vorhanden ist und Sie wundern sich, warum es eine Untersuchung benötigt. Es könnte bedeuten, dass eine Einreichungs-Aufforderung nicht akzeptiert wurde und darum die Bereinigung nicht ausgelöst wurde. Die Löschung eines derartigen Zweiges könnte Ihre bisherige Arbeit zerstören.

Der Verzweigungspunkt existiert von dem Zeitpunkt an, als Sie ihn erzeugten. Wenn andere Änderungen in der Zwischenzeit beigetragen wurden, werden sie verloren gehen, wenn sie Ihren vorhandenen Zweig verwenden. Sie können den Zweig löschen, indem Sie das Paket mit dem Kommando osc rdelete project package löschen. Für unser Beispiel würde es osc rdelete home:jeff_mahoney:branches:openSUSE:12.1:Update:Test nfs-utils sein.


Verzweigung aller Codestreams zur gleichen Zeit

Manchmal müssen Sie ein Paket für alle gewarteten Codestreams aktualisieren, beispielsweise zur Behebung einer Sicherheitslücke. Mit der oben beschriebenen Methode müssen Sie das Paket zwei mal verzweigen und überprüfen, je einmal für 11.4 und 12.1.

Das Kommando osc mbranch wird das vorteilhaft ausführen. Es kann den Build Service abfragen, um eine Liste von Projekten zu finden, wo ein Paket zur Wartung markiert ist.

Warnung!Das beruht auf einer korrekten Konfiguration innerhalb des Build Service. Bitte konsultieren Sie das Wartungsteam, wenn Sie den Verdacht haben, dass die Liste der Projekte, die von osc mbranch verwendet wird, unrichtig ist.

osc mbranch sammelt alle Kopien aller Projekte, die zur Wartung markiert sind und erzeugt einen Zweig dieser Pakete in ein Projekt:

$ osc mbranch nfs-utils
Project home:jeff_mahoney:branches:OBS_Maintained:nfs-utils created.

$ osc co home:jeff_mahoney:branches:OBS_Maintained:nfs-utils
A    home:jeff_mahoney:branches:OBS_Maintained:nfs-utils
A    home:jeff_mahoney:branches:OBS_Maintained:nfs-utils/nfs-utils.openSUSE_11.3
[...]
A    home:jeff_mahoney:branches:OBS_Maintained:nfs-utils/nfs-utils.openSUSE_11.4
[...]
A    home:jeff_mahoney:branches:OBS_Maintained:nfs-utils/nfs-utils.openSUSE_12.1

Warnung!Wenn Sie mehrere Spezifikationsdateien für Ihr Paket haben, verwenden Sie bitte osc ls home:username:branches:OBS_Maintained:packagename, um dieses Paket nochmals zu überprüfen, ob Pakete für alle Spezifikationsdateien erstellt wurden.

Die Liste der gewarteten Kopien manuell herstellen

Wenn Sie immer noch im Zweifel sind, kontaktieren Sie bitte das Wartungsteam, um eine korrekte Liste zu erhalten.

Machen Sie Ihre Änderungen

Nun da Sie eine private Kopie eines Pakete haben, können alle Änderungen durchführen, die Sie brauchen. Der einfachste Weg, um die Aktualisierung der Dateiliste zu handhaben, ist, sicher zu stellen, dass Sie keine temporäre Dateien mehr im Quell-Paket-Verzeichnis haben und verwenden Sie das Kommando osc addremove.

Wenn Sie Ihre Änderungen fertig gestellt haben, tragen Sie einen Eintrag in die Dateien .changes ein und verwenden osc vc.

  • Beschreiben Sie kurz das Problem, eine Zeile pro Problem.
  • Fügen Sie einen Bezug zur Bug-Nummer hinzu, in der Form (bnc#12345).
  • Für Sicherheitsbehebungen beziehen Sie, wenn möglich, die CVE Nummer ein.

Zum Schluss übergeben Sie Ihre Änderungen zu Ihrem Zweig mit dem Kommando osc commit.

Änderungen einreichen

Ihr Zweig ist nun ein separates Paket und wird unabhängig in Ihrem Home-Projekt gebaut. Es ist grundsätzlich eine gute Idee, sicher zu stellen, dass er innerhalb der engen Beschränkungen des Bausystems baut und ausreichend getestet ist, bevor er eingereicht wird. Der Einreichungsprozess ist einfach.

Aus Ihrem überprüften Projekt-Verzeichnis:

$ osc mr 
created request id 22864

Osc wird Sie umgehend benachrichtigen. Gewöhnlich verwenden Sie die gleiche Nachricht für die .changes-Datei.