Créer un référentiel deb avec plusieurs versions du même package

16

Je veux créer mon propre référentiel deb pour stocker certains packages. J'ai essayé reprepro et cela fonctionne très bien, à l'exception d'une caractéristique fondamentale. Reprepro ne peut pas stocker plusieurs versions du même package dans le référentiel.

La possibilité de stocker plusieurs versions du même package est essentielle pour moi, donc je demande quel logiciel peut le faire.

Voici un morceau de FAQ reprepro qui montre qu'il ne peut pas le faire:

3.1) Can I have two versions of a package in the same distribution?
-------------------------------------------------------------------
Sorry, this is not possible right now, as reprepro heavily optimizes
at only having one version of a package in a suite-type-component-architecture
quadruple.
You can have different versions in different architectures and/or components
within the same suite. (Even different versions of a architecture all package
in different architectures of the same suite). But within the same
architecture and the same component of a distribution it is not possible.
bessarabov
la source

Réponses:

11

Pour autant que je sache, mini-dinstall nécessite des fichiers debian .changes lors de l'ajout de paquets. Comme je l' ai seulement eu des fichiers .deb disponibles Je trouve que justement prend en charge plusieurs versions aussi bien.

Une autre option plus légère est le fret qui est un ensemble de scripts shell pour maintenir un référentiel Debian. J'utilise maintenant (2017) le fret depuis trois ans pour maintenir un référentiel petit mais activement mis à jour, avec de bons résultats. Une caractéristique clé était la possibilité de conserver plusieurs versions d'un package.

Modifier: lien mis à jour vers le nouveau dépôt de fret car le précédent n'avait pas été mis à jour depuis 2014.

bohrax
la source
1
Downvoter: vous voulez élaborer?
bohrax
1
Notez que cela freighta été bifurqué et est maintenant maintenu à github.com/freight-team/freight - la version originale n'a pas été mise à jour depuis 2014.
Wolfgang
@WolfgangThanks, a mis à jour le lien dans la réponse!
bohrax
9

La solution consiste à utiliser mini-dinstall pour managin deb repos. Il ne supprime pas la version précédente du package du référentiel.

bessarabov
la source
2
Cela semble être vrai uniquement si "keep_old = 1" est défini dans mini-dinstall.conf. La valeur par défaut (selon la page de manuel et l'expérience récente) consiste à supprimer les anciennes versions. Testé avec la version 0.6.29ubuntu1.
pendor
2

J'ai entendu de bonnes choses sur une alternative, le fret:

https://github.com/rcrowley/freight

HTH, mistige

mistige
la source
Je ne sais pas pourquoi cette réponse a été rejetée, sauf si c'était à cause de son manque de détails. Le fret ressemble en effet à une alternative viable au reprepro, une que j'ai l'intention d'essayer car j'ai le même besoin que l'OP
killthrush
Je ne suis pas le downvoter, mais peut-être parce que le fret a déjà été mentionné dans ma réponse il y a un an. Quoi qu'il en soit, je peux en témoigner comme une option viable. Je l'utilise depuis plus d'un an pour un référentiel petit mais activement mis à jour. Nous avons cependant été mordus par ce problème: github.com/rcrowley/freight/pull/65
bohrax
1
@bohrax: Il semble que freighta été fourchue et est maintenant maintenue à github.com/freight-team/freight place.
Wolfgang
-1

Si vous êtes prêt à écrire le fichier Packages vous-même (par exemple avec un script personnalisé), vous pouvez y mettre plusieurs versions du même package et apt-get vous permettra d'installer une version spécifique avec la syntaxe

apt-get install packagename=version

Vous pouvez obtenir toutes les informations dont vous avez besoin pour écrire ce package avec

dpkg-deb --info package.deb

et

md5sum package.deb

La mise à niveau apt-get choisira également le numéro de version le plus élevé (dans mes tests limités, au moins).

pfyon
la source
Merci pour la réponse, mais je préfère utiliser un système qui générera le fichier Packages.
bessarabov
Cela ne répond pas à la question de la création d'un référentiel de packages avec plusieurs versions du même package. C'est une réponse à une autre question.
gertvdijk
-2

Comme le logiciel vous l'indique, les anciens sont purgés lorsqu'un nouveau arrive. Habituellement, cela se fait avec plusieurs dépôts. Tout comme Ubuntu et Debian ont plusieurs référentiels pour stable et instable ou Natty, Oneiric,…, vous aurez besoin d'avoir plusieurs référentiels.

Habituellement, les gestionnaires de packages sélectionnent la dernière version d'un package, il serait donc difficile pour les utilisateurs de choisir également.

Martin Ueding
la source
1
La création de plusieurs dépôts ne résout pas mon problème. J'ai besoin de plusieurs versions du même package pour être dans le même référentiel. Pour ceux qui sont intéressés, pourquoi ai-je besoin de ceci? Voici un sujet avec mon explication: answers.launchpad.net/launchpad/+question/171452
bessarabov
Je crains que vous ne deviez considérer votre problème sous un angle différent car les dépôts Debian standard ne prennent pas en charge plusieurs versions.
Martin Ueding
2
Vous n'êtes pas correcte. Veuillez consulter le dépôt debian régulier ftp.us.debian.org/debian/pool/main/p/perl et voir qu'il existe plusieurs versions du même paquet pour la même archive.
bessarabov