Je cherche à savoir comment configurer un référentiel privé apt (sur 10.04 LTS) pouvant prendre en charge plusieurs versions.
Je comprends que vous ne pouvez pas installer plusieurs versions d’un paquet sur un serveur. Ceci est purement pour un environnement de développement dans lequel nous voulons pouvoir tester plusieurs versions avant de les publier dans le référentiel de production apt.
Je sais que vous pouvez avoir plusieurs versions en plaçant le numéro de version dans le nom du package. Cependant, je souhaite obtenir le contraire, prendre en charge plusieurs versions d'un même nom de package.
par exemple. packagename_1.0_all.deb et packagename_2.0_all.deb plutôt que packagename-1.0_1.0_all.deb et packagename-2.0_2.0_all.deb
Pour ceux qui sont familiers avec le déploiement automatisé de Puppet - nous pouvons spécifier la version d'un package que nous voulons sur un serveur (avec la balise de vérification utilisant le même nom de package).
J'ai essayé le debmarshal de Google décrit à l'adresse http://wiki.debian.org/HowToSetupADebianRepository mais je n'ai pas réussi à le faire fonctionner à cause d'un manque de documentation.
J'avais besoin d'un référentiel à versions multiples pour les mêmes raisons que vous et voici ce que j'ai obtenu:
apt-get install Apache2 dpkg-dev
mkdir -p /var/www/repo/binary
Ensuite, créez update-repo.sh
qui mettra à jour votre référentiel avec les informations sur les packages.
#!/bin/bash
cd /var/www/repo
dpkg-scanpackages -m binary /dev/null | gzip -9c > /var/www/repo/binary/Packages.gz
Placez vos fichiers .deb dans/var/www/repo/binary et exécutez update-repo.sh.
Sur le reste des machines:
echo "deb http://myserver/repo binary" > /etc/apt/sources.list.d/myrepo.list
apt-get update
etc...
La magie est due à -m
lors de l'exécution de dpkg-scanpackages. Sans -m
, une seule version est répertoriée dans Packages.gz.
Je ne l'ai pas essayé, mais il devrait être trivial de faire la même chose pour des sous-pensions séparées, comme proposé par hbdgaf.
Hébergez-le sous un nom de distribution différent. lucide et testant par exemple. Puis changez vos entrées dans votre boite de test
de: deb http://homegrown.local/ubuntu lucid main
to: deb http://homegrown.local/ubuntu testing main