Eigener partieller Debian-Mirror
 

Oftmals, wenn man eine Debian-CD installiert, fehlen ein paar Pakete. Um diese auf einer CD, einem USB-Stick oder einer Festplatte griffbereit zu haben, kann man sich ein eigenes, kleines Debian-Archiv mit den Wunschpaketen zusammenstellen. Und wie das unter Linux so üblich ist, gibt es mehrere Wege zum Ziel.

Pakete besorgen

Eine Möglichkeit ist in /var/cache/apt/archives/ nachzusehen. Dort werden die Pakete vor der Installation von apt zwischengespeichert. Eine andere Möglichkeit ist die entsprechenden Pakete in besagtes Verzeichnis mittels apt runterzuladen.
# apt-get install -d atanks
Die Option -d (download-only) installiert die Pakete nicht, sondern lädt sie nur runter. Dies funktioniert allerdings nur mit noch nicht installierten Paketen. Bei bereits installierten Paketen hilft die Option --reinstall
# apt-get install --reinstall -d atanks
Der Nachteil dieser Möglichkeit, es werden keine Abhängigkeiten mit runtergeladen, sondern lediglich das angegebene Paket. Möchte man auch die Abhängigkeiten haben, empfiehlt sich eine Standard Debian Live-CD zu erstellen und mittels dieser die Pakete zwischenzuspeichern.
Die dritte Möglichkeit die Pakete runterzuladen ist mittels einer Liste:
# apt-get -qq --print-uris --reinstall install <PAKET> | awk '{print $1}' | tr -d "'" > Liste.txt
erstellt eine Liste mit urls von den Paketen. Anschließend kann man mittels wget die Pakete herunterladen.
# wget -i Liste.txt

Eigenes Archiv erstellen

Zuerst muß man die dafür erforderliche Ordnerstruktur erstellen:
# mkdir -p <Archivname>/dists/lenny/main/binary-i386
anschließend kopiert man die Pakete in den Ordner binary-i386:
# cp -v /var/cache/apt/archives/*.deb <Archivname>/dists/lenny/main/binary-i386
Danach muß die Datei Packages generiert werden. Die Datei Packages enthält eine Übersicht über alle Pakete im Archiv und wird nach dem Eintragen in die Datei /etc/apt/sources.list von apt mittels apt-get update eingelesen. Dafür gibt es zwei Möglichkeiten. Entweder man benutzt
# dpkg-scanpackages dists/lenny/main/binary-i386 > dists/lenny/main/binary-i386/Packages
oder man bedient sich den Werkzeugen von apt:
# apt-ftparchive packages dists/lenny/main/binary-i386/ > dists/lenny/main/binary-i386/Packages
Eventuell muß die Datei Packages noch mit gz komprimiert werden:
# gzip -9 Packages
Damit ist unser mini-Debian-Archiv fertig und muß nur noch eingebunden werden.

Eigenes Archiv einbinden

Hat man das Archiv lokal auf der Festplatte lautet der Eintrag in der Datei
/etc/apt/sources.list
deb file:/Pfad/<Archivname> lenny main
für ein Archiv von einer CD-ROM gibt es ein Hilfsprogramm von apt, welches den Eintrag automatisch erstellt. Dazu legt man die betreffende CD ein und ein
# apt-cdrom add
erstellt den Eintrag in der Datei /etc/apt/sources.list. Ein anschließendes
# apt-get update
liest die Paketliste ein.

Eigenes Archiv unter Debian bullseye

Zuerst legt man ein Verzeichnis an, z.B.
# mkdir /home/user/Software/dists/bullseye/main/binary-amd64/
Anschließend kopiert man alle Debian Pakete DOPPELT hinein, und zwar einmal direkt in das Verzeichnis Software UND in das Verzeichnis binary-amd64. Anschließend führt man den scanpackages Befehl aus:
# dpkg-scanpackages /home/user/Software > /home/user/Software/Packages
Anschließend komprimiert man die Packages-Datei:
# gzip -9 Packages
Mit folgender Zeile bindet man das Archiv in die sources.list ein:
deb file:/home/user/Software ./
Damit die "unsichere" Paketquelle verwendet wird, muß man noch unsichere Quellen erlauben, also lautet der update Befehl:
# apt-get -o Acquire::AllowInsecureRepositories=true update
Anschließend kann man ohne Probleme die Pakete aus dem eigenen Repo installieren.

Komplettes Debian Archiv mit debmirror

Für die Erstellung eines kompletten Debian-Spiegels gibt es das Paket debmirror. Ein Aufruf wie
# debmirror
gibt eine Übersicht über alle möglichen Angaben für debmirror. Als einziger Parameter ist das Spiegel-Verzeichnis zwingend erforderlich, damit debmirror weiß, wo es den Spiegel erzeugen soll. Existiert das Verzeichnis nicht, wird es angelegt. Folgender Befehl erzeugt einen lokalen Spiegel für die Architektur i386. Dabei ist zu beachten, daß der Befehl eigentlich nur eine Zeile lang ist, der Übersicht halber aber auf mehrere Zeilen mittels des Backslash (\) verteilt wurde. Der Backslash "maskiert" das Return-Zeichen und ermöglicht so ein Weiterschreiben des Befehls in der nächsten Zeile.

# debmirror -a i386 -s main,contrib,non-free \
-h ftp.de.debian.org \
-d woody,lenny \
/home/ftp/debian \
--nosource --progress

-a = die Architektur, hier i386
-s = die Sektion, hier main, contrib und non-free
-h = der Host von dem der Spiegel erzeugt wird.
-d = die Distribution, hier woody und lenny.
/home/ftp/debian = Das lokale Verzeichnis in dem der Spiegel erzeugt wird.
--nosource = lädt nur die binarys runter, keine sourcen.
--progress = zeigt einen Fortschrittsbalken während des Downloads.

Anschließend hat man im angegebenen Verzeichnis einen kompletten Debian-Mirror, was aber natürlich einige Zeit dauern kann, da heutige Debian-Releases so um die 50 GB!!! groß sind. Siehe hier.