web-dev-qa-db-fra.com

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

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

Actuellement, je l’emballe en utilisant le PPA d’Ubuntu uniquement pour la distribution actuelle.

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

Je ne suis pas sûr de savoir comment accomplir cela.

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

La spécification Debian permet d'ajouter plusieurs distributions dans le champ de distribution. Mais cela ne semble pas m'aider.

Certains documents ubunt parlent de coder le nom de la distribution dans le numéro de version (dans le fichier debian changelog).

Mais comment cela fonctionne-t-il dans la pratique? Une nouvelle version du programme est disponible, alors quoi? Est-ce que j'ajoute pour chaque distribution une nouvelle entrée de journal des modifications et le buildserver de PPA se construit automatiquement pour chaque nouveau package de distribution après l'avoir déchargé? Ou bien le serveur de compilation PPA ne regarde-t-il que la première entrée du journal des modifications?

12
maxschlepzig

La meilleure chose à faire est de télécharger ne fois pour chaque version d'Ubunt.

Launchpad ne crée pas de packages pour les versions d'Ubuntu qui ne sont plus prises en charge, mais seulement un package pour une version spécifique d'Ubuntu. Comme vous le savez déjà, la version ciblée est spécifiée dans le fichier changelog, par la dernière entrée!

N'oubliez pas que les packages dont dépend votre programme 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 paquet chargé est construit pour toutes les architectures disponibles tant que vous avez Architecture: any dans le paquet. définition (debian/control), cela vous permet également de faire dépendre le paquet de différents paquets pour différentes architectures (en définissant le paquet plus d’une fois)

7
LassePoulsen

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

10
Isaiah

En ce qui concerne les conventions de dénomination, la norme consiste à procéder comme suit:

  • 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 avez insérée dans votre PPA pour lucid
  • 1.0-0ubuntu1 ~ karmicppa1 pour la version de ce paquet 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 chez Karmic, il recevra le paquet ~ karmicppa1. Quand ils passeront ensuite à Lucid (et réviseront votre PPA), ils seront remplacés par le paquet Lucid PPA. Si votre paquet entre ensuite dans les archives officielles, la transition de votre PPA se fera en douceur.

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

6
Scott Ritchie