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?
Antworten:
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
changelog
Datei 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: any
in 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).quelle
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
quelle
In Bezug auf die Namenskonventionen lautet der Standard wie folgt:
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.
quelle