Wie richte ich ein privates Apt-Repository ein, das mehrere Versionen unterstützen kann?


10

Ich bin gerade dabei, ein privates Apt-Repository (unter 10.04 LTS) einzurichten, das mehrere Versionen unterstützen kann.

Ich verstehe, dass Sie nicht mehrere Versionen eines Pakets auf einem Server installieren können. Dies ist eine reine Entwicklungsumgebung, in der mehrere Versionen getestet werden sollen, bevor sie für das Repository für Produktions-Apt freigegeben werden.

Ich weiß, dass Sie mehrere Versionen haben können, indem Sie die Versionsnummer in den Paketnamen einfügen. Ich möchte jedoch das Gegenteil erreichen und mehrere Versionen desselben Paketnamens unterstützen.

zB packagename_1.0_all.deb und packagename_2.0_all.deb anstelle von packagename-1.0_1.0_all.deb und packagename-2.0_2.0_all.deb

Für diejenigen, die mit der automatisierten Bereitstellung von Puppet vertraut sind, können wir angeben, welche Version eines Pakets auf einem Server gewünscht wird (wobei das Tag "verify" denselben Paketnamen verwendet).

Ich habe Googles Debmarshal ausprobiert, der unter http://wiki.debian.org/HowToSetupADebianRepository beschrieben ist , konnte es jedoch aufgrund fehlender Dokumentation nicht zum Laufen bringen.

Antworten:


9

Ich brauchte aus den gleichen Gründen wie Sie ein Repo mit mehreren Versionen, und am Ende hatte ich Folgendes:

apt-get install apache2 dpkg-dev
mkdir -p /var/www/repo/binary

Erstellen Sie update-repo.shdann ein Update, um Ihr Repo mit den Informationen der Pakete zu aktualisieren

#!/bin/bash
cd /var/www/repo
dpkg-scanpackages -m binary /dev/null | gzip -9c > /var/www/repo/binary/Packages.gz

Platzieren Sie Ihre .deb-Dateien in / var / www / repo / binary und führen Sie update-repo.sh aus

Auf den restlichen Maschinen:

echo "deb http://myserver/repo binary" > /etc/apt/sources.list.d/myrepo.list
apt-get update

etc etc ...

Die Magie entsteht durch das -mAusführen von dpkg-scanpackages. Ohne -mist nur eine Version in Packages.gz aufgeführt

Ich habe es nicht ausprobiert, aber es sollte trivial sein, dasselbe für separate Sub-Repos zu tun, wie es hbdgaf vorgeschlagen hat.


1
Ich habe viel gesucht, bis ich auf Ihre Antwort mit dem -mSchalter gestoßen bin . Vielen Dank!
Mario Tacke

3

Hosten Sie es unter einem anderen Distributionsnamen. klar und testend zum Beispiel. Ändern Sie dann Ihre Einträge in Ihrer Testbox
von: deb http://homegrown.local/ubuntu lucid main
in: deb http://homegrown.local/ubuntu testing main

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.