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 .deb
fichiers 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 includedeb
commande 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+deb6
etc.? Comme celajessie
est à 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 commej
avantw
et 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/control
fichiers pour avoir le numéro de version spécifique à la distribution sur laquelle il est construit. Et pour le changelog, je devrai également faire appeldch
à ce numéro de version.
1.1
Wheezy contient l'archive jessie et l'archive jessie1.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.