Erstellen und Verwalten von PPAs mit mehreren Architekturen

13

Ich habe ein Programm, das für jede Ubuntu-Version neu kompiliert werden muss.

Momentan packe ich es mit Ubuntus PPA nur für die aktuelle Distribution.

Schließlich muss ich Pakete für die vorherige Ubuntu-Version bereitstellen.

Ich bin mir nicht sicher, wie ich das erreichen soll.

Wie funktioniert der Ubuntu PPA Build Server? Betrachtet man nur das Verteilungsfeld im aktuellsten Changelog-Eintrag (in der debian / changelog-Datei), um zu bestimmen, für welche Distribution das Paket erstellt werden soll?

Die Debian-Spezifikation erlaubt es, mehrere Distributionen in das Distributionsfeld aufzunehmen. Aber das hilft mir nicht weiter.

Einige Ubuntu-Dokumente sprechen von der Kodierung des Distributionsnamens in die Versionsnummer (in der Debian-Changelog-Datei).

Aber wie funktioniert das in der Praxis? Eine neue Version des Programms ist verfügbar. Was dann? Füge ich für jede Distribution einen neuen Changelog-Eintrag hinzu und der PPA-Buildserver erstellt nach dem Einspielen automatisch für jede Distribution neue Pakete? Oder schaut sich der PPA-Buildserver nur den ersten Changelog-Eintrag an?

maxschlepzig
quelle
1
Dieser Prozess interessiert mich auch sehr!
Marco Ceppi

Antworten:

7

Der Weg zu gehen ist, einmal für jede Ubuntu- Version hochzuladen .

Launchpad erstellt keine Pakete für Ubuntu-Versionen, die nicht mehr unterstützt werden, und erstellt nur ein Paket für eine bestimmte Ubuntu-Version. Die Zielversion wird (wie Sie bereits wissen) in der changelogDatei durch den neuesten Eintrag angegeben!

Denken Sie daran, dass die Pakete, von denen Ihr Programm abhängt, möglicherweise nicht in allen Ubuntu-Versionen in derselben Version verfügbar sind.

Sie sprechen auch von "Multi-Architektur" (Architektur = CUP-Typ, z. B. x86, LPIA, AMD64). Dies macht keinen Unterschied, da jedes hochgeladene Paket für alle verfügbaren Architekturen erstellt wird, solange Sie dies Architecture: anyin der Paketdefinitionsdatei ( debian/control) haben. Auf diese Weise können Sie das Paket auch von verschiedenen Paketen für verschiedene Architekturen abhängig machen (das Paket muss mehrmals definiert werden).

LassePoulsen
quelle
10

Launchpad verfügt derzeit über eine neue Funktion in der Betaphase, mit der Sie Ihr Paket für mehrere Ubuntu-Versionen gleichzeitig erstellen können, ohne zusätzliche Arbeit zu leisten. Sie können Ihre Pakete sogar jeden Tag automatisch erstellen. https://help.launchpad.net/Packaging/SourceBuilds/GettingStarted Alt-Text

Jesaja
quelle
1
Das hört sich interessant an. Ich kann das nicht direkt verwenden, da ich weder bzr noch das Launchpad für das Repository-Hosting verwende (ich verwende Mercurial). Aber! Möglicherweise ist es möglich, ein bzr-Repository im Launchpad zu erstellen und die neuesten Änderungssätze aus meinem Haupt-Repository dort abzulegen, jedes Mal, wenn ich eine neue Paketerstellung auslösen möchte.
Maxschlepzig
Ich codiere nicht allzu oft etwas und freue mich darauf.
Aperson
@maxschlepzig Stellen Sie eine separate Frage, wie Sie Ihre Hg-Daten in Launchpad importieren, und ich werde sie beantworten.
Jorge Castro
6

In Bezug auf die Namenskonventionen lautet der Standard wie folgt:

  • 1.0-0ubuntu1 für das Paket, das in Ubuntus offiziellem Archiv landet
  • 1.0-0ubuntu1 ~ lucidppa1 für die Version des Pakets, das Sie in Ihren PPA für lucid eingefügt haben
  • 1.0-0ubuntu1 ~ karmicppa1 für die Version dieses Pakets für Karmic

Der Grund dafür ist, dass ein ~ im Versionsfeld für eine Versionsnummer "weniger als nichts" bedeutet. Wenn also jemand Ihre PPA bei Karmic hinzufügt, erhält er das Paket ~ karmicppa1. Wenn sie dann auf Lucid aktualisieren (und Ihre PPA lesen), wird sie durch das Lucid PPA-Paket ersetzt. Wenn Ihr Paket dann in das offizielle Archiv gelangt, verläuft der Übergang von Ihrer PPA reibungslos.

Der andere Vorteil ist, dass durch das Einfügen des Release in das Versionsfeld deutlich wird, für welches Release die Dateien gelten (und Sie auf subtile Weise daran erinnert werden, ein Release pro Release hochzuladen). Möglicherweise benötigen Sie für jedes Ubuntu-Release auch andere Zweige, wenn Sie beispielsweise unterschiedliche Abhängigkeiten haben.

Scott Ritchie
quelle
Scott - gibt es eine Art Dokumentation dazu?
Bartosz Radaczyński
Das ~ und Zeug ist wahrscheinlich irgendwo dunkel beschriftet. Der Rest sind nur Konventionen, die ich unter anderen Entwicklern beobachtet habe, keine offiziell dokumentierte Praxis.
Scott Ritchie
Ok, danke, deine vorgeschlagene Namenskonvention funktioniert gut.
Bartosz Radaczyński
Ich sollte hinzufügen, dass dies manchmal erweitert wird, um ein zusätzliches ~ vor das ppa zu setzen: 1.0-0ubuntu1 ~ karmic1 ~ ppa1 Der Grund dafür ist, dass ein offizielles Update für die stabile Version von Karmic als 1.0-0ubuntu1 ~ karmic1 veröffentlicht werden könnte, und wir möchte, dass die PPA-Version kleiner ist.
Scott Ritchie
Habe in #launchpad auf Freenode zu fragen, und anscheinend ist halb dokumentiert auf dem LaunchPad Wiki unter einem Quellcode - Paket Gebäude . Vielen Dank für die Informationen zu dieser Konvention, es ist ziemlich hilfreich ^ _ ^
TrinitronX