Comment créer et administrer des PPA multi-architectures?

13

J'ai un programme qui doit être recompilé pour chaque version d'ubuntu.

Actuellement, je le conditionne en utilisant le PPA d'Ubuntu uniquement pour la distribution actuelle.

Finalement, je dois fournir des packages pour la version précédente d'ubuntu.

Je ne sais pas comment y parvenir.

Comment fonctionne le serveur de construction Ubuntu PPA - regarde-t-il simplement le champ de distribution dans l'entrée de journal des modifications la plus récente (dans le fichier debian / changelog) pour déterminer pour quelle distribution le paquet doit être construit?

La spécification debian permet d'ajouter plusieurs distributions dans le champ de distribution. Mais cela ne me semble pas utile.

Certains documents ubuntu parlent de l'encodage du nom de distribution dans le numéro de version (dans le fichier du journal des modifications debian).

Mais comment cela fonctionne-t-il dans la pratique? Une nouvelle version du programme est disponible, alors quoi? Dois-je ajouter pour chaque distribution une nouvelle entrée de journal des modifications et le buildserver PPA crée automatiquement pour chaque distribution de nouveaux packages après l'avoir publié? Ou le serveur de build PPA regarde-t-il simplement la première entrée du journal des modifications?

maxschlepzig
la source
1
Je suis également très intéressé par ce processus!
Marco Ceppi

Réponses:

7

La voie à suivre consiste à télécharger une fois pour chaque version d' Ubuntu .

Launchpad ne construit pas de packages pour les versions d'Ubuntu qui ne sont plus prises en charge, et ne crée un package que pour une version spécifique d'Ubuntu. La version ciblée est (comme vous le savez déjà) spécifiée dans le changelogfichier, par la nouvelle entrée!

N'oubliez pas que les packages dont votre programme dépend peuvent ne pas être disponibles dans la même version sur toutes les versions d'Ubuntu.

Vous parlez également de "multi-architecture" (architecture = type CUP, par exemple x86, LPIA, AMD64) cela ne fait aucune différence puisque chaque package téléchargé est construit pour toutes les architectures disponibles tant que vous l'avez Architecture: anydans le debian/controlfichier de définition de package ( ), cela vous permet également de faire dépendre le package de différents packages pour différentes architectures (définir le package plusieurs fois)

LassePoulsen
la source
10

Launchpad a une nouvelle fonctionnalité actuellement en version bêta qui vous permet de créer votre package pour plusieurs versions d'ubuntu à la fois sans aucun travail supplémentaire. Vous pouvez même créer automatiquement vos packages chaque jour. https://help.launchpad.net/Packaging/SourceBuilds/GettingStarted texte alternatif

Isaïe
la source
1
Cela semble intéressant. Je ne peux pas l'utiliser directement, car je n'utilise pas bzr ni launchpad pour l'hébergement de référentiel (j'utilise Mercurial). Mais! Il est peut-être possible de créer un référentiel bzr sur le tableau de bord et de vider les derniers changements de mon référentiel principal, chaque fois que je veux déclencher une nouvelle construction de package.
maxschlepzig
Je ne code souvent rien et j'en suis ravi.
aperson
@maxschlepzig Posez une question distincte sur la façon d'importer votre contenu Hg dans Launchpad et j'y répondrai.
Jorge Castro
6

Concernant les conventions de nommage, la norme est de faire quelque chose comme ceci:

  • 1.0-0ubuntu1 pour le paquet qui finit dans les archives officielles d'Ubuntu
  • 1.0-0ubuntu1 ~ lucidppa1 pour la version de ce paquet que vous mettez dans votre PPA pour lucid
  • 1.0-0ubuntu1 ~ karmicppa1 pour la version de ce package pour Karmic

La raison en est qu'un ~ dans le champ de version représente "moins que rien" pour un numéro de version. Donc, si quelqu'un ajoute votre PPA à Karmic, il recevra le package ~ karmicppa1. Lorsqu'ils passeront ensuite à Lucid (et liront votre PPA), il sera remplacé par le package Lucid PPA. Si votre colis entre ensuite dans les archives officielles, la transition de votre PPA se fera en douceur.

L'autre avantage est que le fait de mettre la version dans le champ version indique clairement à quelle version les fichiers s'appliquent (et vous rappelle subtilement d'en télécharger une par version). Vous pouvez également avoir besoin de différentes branches pour chaque version d'Ubuntu lorsque vous avez différentes dépendances, par exemple.

Scott Ritchie
la source
Scott - existe-t-il une sorte de documentation à ce sujet?
Bartosz Radaczyński
Le ~ et les trucs sont probablement étiquetés dans un endroit obscur. Le reste n'est que des conventions que j'ai observées chez d'autres développeurs, pas une pratique documentée officielle.
Scott Ritchie
Ok, merci, votre convention de dénomination suggérée fonctionne bien.
Bartosz Radaczyński
Je dois ajouter que parfois cela est encore étendu pour mettre un ~ supplémentaire avant le ppa: 1.0-0ubuntu1 ~ karmic1 ~ ppa1 La raison en est qu'une mise à jour officielle de la version stable de Karmic pourrait être publiée en tant que 1.0-0ubuntu1 ~ karmic1, et nous veulent que la version PPA soit inférieure à cela.
Scott Ritchie
J'ai dû demander dans #launchpad sur Freenode, et apparemment, cela est semi-documenté sur le LaunchPad Wiki sous Building a Source Package . Merci pour les informations sur cette convention, c'est très utile ^ _ ^
TrinitronX