it-swarm.com.de

Wie aktualisiere ich Ubuntu-Pakete von der Quelle?

Ich möchte eine aktualisierte Version des Pakets network-manager-openconnect in Ubuntu erstellen. Offenbar muss ich die neueste Paketquelle erhalten:

bzr branch lp:~network-manager/network-manager/openconnect-ubuntu.head

Dann was? Das Paket scheint eine Möglichkeit zu haben, sich mithilfe von git vom neuesten Upstream-Code zu aktualisieren. Aber wie kriege ich das hin?

8
James Ward

Das Erstellen eines aktualisierten Pakets aus einer bzr-Verzweigung unterscheidet sich in der Regel erheblich, je nachdem, wer die Verzweigungen verwaltet oder wie das Paket im Allgemeinen funktioniert. Es folgen jedoch einige Richtlinien für ein schnelles und unsauberes Update von nahezu jedem Paket, das auf eine PPA übertragen werden soll:

Holen Sie sich die Filiale:

bzr branch lp:~network-manager/network-manager/openconnect-ubuntu.head

Wechseln Sie dann dorthin und aktualisieren Sie das Changelog:

dch -i

dch -i öffnet einfach einen neuen Eintrag in debian/changelog und erhöht die Versionsrevision um eins. Wenn Sie einen Patch hinzufügen möchten, ist dies perfekt. Wenn Sie jedoch auf eine neuere Version der Upstream-Software aktualisieren möchten, müssen Sie die Versionsnummer vor dem Bindestrich (-) aktualisieren. Angenommen, eine Version in 1.2-0ubuntu1, wenn Sie dch -i starten, ändert sich diese in 1.2-0ubuntu2, was aber gut zum Patchen ist Wenn Sie eine neue Version benötigen, möchten Sie diese wahrscheinlich in 1.3-0ubuntu1 ändern.

Wenn Sie patchen müssen, ist es jetzt an der Zeit, Ihre Änderungen hinzuzufügen. In Zweigen mit nur einem debian / -Verzeichnis können Sie bzr bd-do (erfordert das bzr-builddeb-Paket) verwenden, um zu einem Arbeitsbaum zu wechseln, in dem Sie Änderungen vornehmen können Verwenden Sie quilt oder ein anderes Patch-System und "exit 0", damit Ihre Änderungen zurückkopiert werden.

Wenn Sie eine neue Upstream-Version möchten, führen Sie nach der Änderung des Changelogs wahrscheinlich einen Befehl ähnlich dem folgenden aus:

debian/rules get-orig-source

Dadurch wird normalerweise der richtige Tarball vom Upstream-Publisher heruntergeladen, um Ihnen den Einstieg zu erleichtern. Wenn weitere Änderungen erforderlich sind, gehen Sie wie oben beschrieben vor, um andere Dateien im Verzeichnis debian / zu "patchen" oder zu ändern. Andernfalls sind Sie fast fertig:

bzr bd -S

bzr bd kümmert sich um das Bauen. Das Aufrufen ohne Argumente baut auf Ihrem System auf, während das Aufrufen mit - S das Vorbereiten eines Quellpakets mit ..._ source.changes anweist Datei, die Sie auf Ihren PPA hochladen möchten (verwenden Sie dazu dput ppa: <Ihr Name>/<Name Ihres ppa> <Änderungsdatei>).


Bei NetworkManager-Paketen ist das etwas anders. Schauen wir uns openconnect genauer an:

bzr branch lp:~network-manager/network-manager/openconnect-ubuntu.head network-manager-openconnect

Stellen Sie sicher, dass Sie auch alle Build-Abhängigkeiten haben: Sudo get-build-deps

Nachdem der Zweig abgerufen wurde, liest dieser die Datei debian/control und versucht, alles herunterzuladen, was Sie zum Aufbau von network-manager-openconnect benötigen. Vielleicht brauchst du auch Git. Sobald dies erledigt ist, führen Sie get-orig-source aus, um nur das Archiv des neuesten Schnappschusses von git abzurufen:

debian/rules get-orig-source

Sie werden sehen, wie Text vorbeifliegt und ein Tarball mit einer langen Versionsnummer angezeigt wird. Das ist der neueste Code, den Sie für nm-openconnect bekommen können.

Sie müssen dann das Changelog mit der Versionsnummer aus dem Tarball aktualisieren, wobei das Suffix - 0ubuntu1 intakt bleibt.

Oder ändern Sie debian/changelog mit der gewünschten Versionsnummer und führen Sie dann Folgendes aus: debian/rules get-current-source

Da sich die Plugins nicht viel ändern, sollten Sie in der Lage sein, das Paket von dort aus zu erstellen, indem Sie bzr bd wie oben verwenden. Wenn nicht, nehmen Sie die erforderlichen Änderungen vor.

Vergessen Sie nicht bzr commit, nachdem Sie Änderungen vorgenommen haben.

Ich habe das Hinzufügen zunächst vergessen. Zögern Sie nicht, das System für Zusammenführungsvorschläge zu verwenden (Zum Zusammenführen vorschlagen Verknüpfen Sie die Seite Ihrer Zweigstelle auf LP), wenn die Änderungen, die Sie vornehmen, anderen zugute kommen könnten. Normalerweise können Sie nur das Zusammenführen gegen den Zweig vorschlagen, auf dem Ihr Zweig basiert (z. B. lp: ~ network-manager/network-manager/openconnect-ubuntu.head in diesem Fall).

Ok aktualisiert, wie der Code vom Launchpad abgerufen wird

bzr branch lp: ~ netzwerkmanager/netzwerkmanager/openconnect-ubuntu.head

Was diese Dosis ist, ziehen Sie den Code aus dem LP (Launchpad-Hosting-Service). Wir müssen herausfinden, wo sich der Code befindet.

mann bzr
343 #type 343, wenn die Manpage aufgerufen wird.

bzr branch FROM_LOCATION [TO_LOCATION]        
       If  the TO_LOCATION is omitted, the last component of the FROM_LOCATION
       will be used.  In other words, "branch ../foo/bar" will attempt to cre‐
       ate  ./bar.   If the FROM_LOCATION has no / or path separator embedded,
       the TO_LOCATION is derived from the FROM_LOCATION by stripping a  lead‐
       ing   scheme   or  drive  identifier,  if  any.  For  example,  "branch
       lp:foo-bar" will attempt to create ./foo-bar.

Versuchen Sie, in das Verzeichnis zu wechseln, in dem Sie arbeiten möchten, oder fügen Sie das Verzeichnis hinzu, in das Sie und der Code wechseln sollen.

cd/home/[Ihr Benutzername]/[Pfad zum Entwicklungsverzeichnis]
oder bzr branch lp: ~ Netzwerkmanager/Netzwerkmanager/openconnect-ubuntu.head/home/[Ihr Benutzername]/[Pfad zum Entwicklungsverzeichnis]
zum Beispiel bzr branch lp: ~ netzwerkmanager/netzwerkmanager/openconnect-ubuntu.head/home/joe/projects/netzwerkmanager/dev

Wenn Sie dies bereits getan haben, haben Sie wahrscheinlich ein Verzeichnis in Ihrem Heimatverzeichnis

ls ~
./ openconnect-ubuntu.head

Es sollte ein README Feld in diesem Verzeichnis geben, um zu sehen, was sich darin befinden sollte. Schauen Sie sich ein den Projektcode an , hier ist ein Link zu README.source

README sollte Anweisungen zum Erstellen des einzelnen Projekts enthalten.

Andere nützliche bzr-Tools zum Installieren

Sudo apt-get installiere bzr-builddeb bzr-builder bzr-Explorer quilt

Mit dem bzr-explorere können Sie Ihre bzr-Repositorys, die Sie auf Ihrem Computer erstellt haben, in einer GUI durchsuchen.

Noch eine Anmerkung. Möglicherweise müssen Sie die gesamte Netzwerk-Manager-Quelle ziehen, um die eine Komponente openconnect zu erstellen. Möglicherweise gibt es viele Abhängigkeiten zwischen verschiedenen Komponenten.

Sie müssen einen Fix für das aktuelle opneconnect-Paket erstellen und dann einen Patch mit allen von Ihnen verwendeten Diff-Tools erstellen. Und senden Sie es an den Paketbetreuer.

Oder wenn Sie Ihr neues Fix-Paket lokal verwenden möchten, möchten Sie eine .deb-Paketdatei erstellen.

Das Erstellen eines Pakets ist recht aufwendig, lesen Sie die folgenden Links

2
nelaaro