Comment créer et publier des fichiers binaires pour plusieurs distributions Debian / Ubuntu?

5

Pour un logiciel propriétaire, j'aimerais créer et publier plusieurs versions de logiciels pour plusieurs distributions. Par exemple, 1.0, 1.1 et les deux versions pour squeeze, wheezy et precise.

Les versions s'exécutent automatiquement sur différentes machines et produisent des .debfichiers spécifiques à la distribution . Spécifiques à la distribution de manière à ce qu'ils soient liés aux versions de bibliothèques spécifiques à la distribution. Par exemple, OpenSSL 0.9.8 pour squeeze, 1.0.1 pour wheezy. Cependant, ces packages sont construits avec le même numéro de version et le même nom de package. C'est ce qui est probablement la cause du problème suivant.

Actuellement, j'utilise reprepro avec la includedebcommande pour ajouter les fichiers binaires au référentiel. Cela fonctionne bien, jusqu'à ce que j'ajoute la même version de paquet construite pour une deuxième distribution.

Publier pour Squeeze, c'est bien

# reprepro -b ./repo --outdir ./wwwpub/repo includedeb squeeze /path/to/sqeezepackages/packagename-1.0.deb

Mais la publication de la même version du logiciel basé sur Wheezy échoue, mais la publication de Wheezy échoue:

# reprepro -b ./repo --outdir ./wwwpub/repo includedeb wheezy /path/to/wheezypackages/packagename-1.0.deb 
/path/to/wheezypackages/packagename-1.0.deb: component guessed as 'main'
ERROR: '/path/to/wheezypackages/packagename-1.0.deb' cannot be included as 'pool/main/p/packagename/packagename_1.0_all.deb'.
Already existing files can only be included again, if they are the same, but:
md5 expected: e7df7cd2ca07f4f1ab415d457a6e1c13, got: 0fa924209085a5713f79e6a30649455f
sha1 expected: 947b41827bbac414baddf0648b9abecaad8de4fe, got: 1be168ff837f043bde17c0314341c84271047b31
sha256 expected: a883dafc480d466ee04e0d6da986bd78eb1fdd2178d04693723da3a8f95d42f4, got: a93dbf1e95ddc4cfa84e9cd3cfa6c9e0e14affd79812abde4bca688224430a65
size expected: 1234, got: 1235
There have been errors!

Je suppose que ma version nécessite un numéro de version unique pour chaque distribution.

  • Quel est le moyen le plus simple d'y parvenir?
  • Comment puis-je ajouter ceci au numéro de version actuel? Est - il conseillé d'utiliser quelque chose comme 1.1~wheezy, 1.1+wheezy, 1.1-1(incrémenter), 1.1+deb6etc.? Comme cela jessieest à venir et j'aimerais que le système le reconnaisse lors des mises à niveau dist, je pense que simplement utiliser le nom de la distribution ne fonctionnera pas comme javant wet sera reconnu comme plus ancien par APT.
  • Une fois déterminé comment construire le numéro de version; Comment puis-je ajouter ceci à mon outillage? Je suppose que j'ai besoin d'heuristiques dans les debian/controlfichiers pour avoir le numéro de version spécifique à la distribution sur laquelle il est construit. Et pour le changelog, je devrai également faire appel dchà ce numéro de version.
Gertvdijk
la source

Réponses:

0

Personnellement, je ne ferais qu'une archive par distribution.

Cela réglerait votre problème et aurait pour avantage que chaque archive serait plus petite. (plus rapide à télécharger et à analyser par les clients)

Mathieu Bridon
la source
Pas vraiment résoudre le problème de la transition sur une mise à niveau dist. Si l'archive 1.1Wheezy contient l'archive jessie et l'archive jessie 1.1, APT ne mettra pas à jour le paquet vers le paquet jessie jusqu'à ce qu'il soit supprimé du cache manuellement, puis réinstallé manuellement ( apt-get clean; apt-get install --reinstall mypackage). Pas si chouette.
gertvdijk
De plus, je doute qu'il soit vrai que "chaque archive serait plus petite", car les outils de référentiel sont déjà au courant des listes de paquetages sur une base de publication par distribution. Il est peut-être vrai que la liste complète des paquets est légèrement plus petite dans ce cas, mais encore une fois, il ne s'agit que d'une poignée de paquets dans mon cas, pas d'un miroir Ubuntu complet ou quelque chose du genre.
gertvdijk
Vous avez raison, je n'avais pas pensé au chemin de mise à niveau entre les versions de la distribution.
Mathieu Bridon