Kann ich zwei Versionen desselben Pakets in einem apt-Repository haben?

19

Ich verwende Ubuntu 10.04 in meiner gesamten Umgebung. Um die Code-Bereitstellung zu vereinfachen, implementieren wir ein privates Apt-Repository, in dem wir Builds unseres Codes bereitstellen können.

Eine der Anforderungen dieses Repositorys besteht darin, dass unsere QA-Abteilung jederzeit eine beliebige Version unserer Anwendung installieren kann.

Kann ich mehrere Versionen desselben Pakets in einem Apt-Repository speichern (vorzugsweise in derselben Distribution)? Wenn nicht, was sind einige mögliche Problemumgehungen, die ich verwenden könnte, um das oben beschriebene Verhalten zu erhalten?

GregB
quelle

Antworten:

19

Ja, Sie können und Sie müssen nichts Besonderes tun. Tatsächlich haben die üblichen Debian- und Ubuntu-Repositorys normalerweise mehrere Versionen jedes Pakets (von oldstable / stable / testing / unstable oder dapper / hardy / lucid / maverick / natty). Die Distributionen haben nur ein einzelnes Paket in der Indexdatei jeder Version (den PackagesDateien), aber Sie müssen dem nicht folgen.

Natürlich apt-get install myappwird nur die neueste Version installiert (sofern nicht anders konfiguriert). Sie können ausführen apt-get install myapp=1.42, um die Installation von Version 1.42 zu erzwingen.

Vorsichtsmaßnahme: Wenn alle Versionen denselben Paketnamen haben, kann nicht mehr als eine Version gleichzeitig installiert sein. Wenn dies wichtig ist, geben Sie jede Version einen anderen Paketnamen: myapp-1.42, myapp-1.43usw. Debian und Ubuntu tun dies für Hauptversionen von Bibliotheken, in denen Sie mehr benötigen als ein , wenn Sie ausführbare Dateien mit verschiedenen Bibliotheken verknüpft (zB libcap1und libcap2) sowie wie für ein paar andere Pakete wie den Kernel.

Gilles 'SO - hör auf böse zu sein'
quelle
1
Vielen Dank für die hervorragende Erklärung. Wenn ich den Pfad zum Anhängen von Versionsnummern an meine Pakete beschreite, bricht das dann "apt-get upgrade"? Es scheint mir, dass jedes Mal, wenn ich meine App aktualisiere, dies als Neuinstallation behandelt wird und ich meine Konfiguration verliere. Ich könnte das umgehen, aber ich würde gerne einen Überblick über die Einschränkungen bekommen, bevor ich auf die eine oder andere Weise eine Entscheidung treffe. Vielen Dank.
GregB
2
Der üblicher Weg ist in diesem Fall zu haben , myapp-1.42und so weiter, sowie ein Paket , myappdas hängt nur von der aktuellen myapp-VERSION(oder sogar myapp-stable, myapp-betaund so weiter).
Gilles 'SO - hör auf, böse zu sein'
1
Nur eine Einschränkung: Vergessen Sie -mbeim Ausführen nicht dpkg-scanpackages, Ihren Repository-Index zu erstellen. Andernfalls erhalten Sie nicht mehrere Paketversionen für Ihre PackagesDateien.
Bruno Nery