apt offline benutzen
Von Samuel Suter <samuel.suter@gmx.ch>
Inhalte
Wann muss ich apt offline benutzen können?
Wenn der Linux-PC keinen direkten Zugang zum Internet hat und man
nicht auf debians unstable und testing Tree verzichten will.
Was will ich updaten?
Zu allererst musst du wissen, was du updaten willst. Welchen Tree
willst du? Unstable? Testing? Nachdem du dich entschieden hast,
kannst du erst mit dem nächsten Schritt fortfahren.
Paket-Listen manuell holen
Was apt normalerweise mit apt-get update automatisch
macht, musst du jetzt von Hand machen.
Zuerst musst du deine /etc/apt/sources.lists anpassen.
Wir nehmen hier als mirror debian.ethz.ch. Die
Einträge sehen wie folgt aus (wobei "woody" beliebig durch sid,
sarge, unstable, testing ersetzt werden kann):
deb http://debian.ethz.ch/mirror/debian woody main contrib non-free
deb http://debian.ethz.ch/mirror/debian-non-US woody/non-US main contrib non-free
deb-src http://debian.ethz.ch/mirror/debian woody main contrib non-free
deb-src http://debian.ethz.ch/mirror/debian-non-US woody/non-US main contrib non-free
Wenn du die non-US Pakete nicht willst lasse einfach diese Zeilen
weg. Du kannst auch die deb-src-Zeilen weglassen.
Jetzt müssen wir die Packet-Dateien holen. Falls du sid willst
und einen i386-Rechner hast, hole folgende Dateien:
http://debian.ethz.ch/debian/dists/sid/contrib/binary-i386/Packages
http://debian.ethz.ch/debian/dists/sid/contrib/binary-i386/Release
http://debian.ethz.ch/debian/dists/sid/main/binary-i386/Packages
http://debian.ethz.ch/debian/dists/sid/main/binary-i386/Release
http://debian.ethz.ch/debian/dists/sid/non-free/binary-i386/Packages
http://debian.ethz.ch/debian/dists/sid/non-free/binary-i386/Release
Kopiere diese Dateien auf deinen Linux-Rechner. Die Dateinamen
müssen einem bestimmten Schema folgen. Für die obigen
Dateien ergibt dies:
/var/lib/apt/lists/debian.ethz.ch_mirror_debian_dists_sid_contrib_binary-i386_Packages
/var/lib/apt/lists/debian.ethz.ch_mirror_debian_dists_sid_contrib_binary-i386_Release
/var/lib/apt/lists/debian.ethz.ch_mirror_debian_dists_sid_main_binary-i386_Packages
/var/lib/apt/lists/debian.ethz.ch_mirror_debian_dists_sid_main_binary-i386_Release
/var/lib/apt/lists/debian.ethz.ch_mirror_debian_dists_sid_non-free_binary-i386_Packages
/var/lib/apt/lists/debian.ethz.ch_mirror_debian_dists_sid_non-free_binary-i386_Release
Man sieht wie die Dateinamen zum Pfad auf dem Mirror passen.
WICHTIG! apt-get update entfällt und darf ja nicht
ausgeführt werden, da sonst die Listen wieder
überschrieben werden.
Liste der zu holenden Pakete erstellen
Jetzt generieren wir eine Liste der Pakete welche wir
benötigen damit wir diese auf einem anderen Rechner
herunterladen können.
Führe zuerst einmal den gewünschten Command wie
gewohnt aus um zu testen ob die erstellen Listen auch funktionieren.
Hier ein paar Beispiele zur Veranschaulichung (Beispiele):
apt-get install php4-gd2
apt-get install apache php4 mysql-server mysql-client
apt-get dist-upgrade
Der Befehl sollte versuchen die Pakete von debian.ethz.ch zu holen,
was natürlich nicht funktioniert, aber hauptsache er versucht
wenigstens auf debian.ethz.ch zuzugreiffen, dann ist schon alles
ok.
Jetzt müssen wir die URIs der zu holenden Pakete in einem
File speichern. Das machen wir wie folgt (Beispiele):
apt-get -qq --print-uris install install php4-gd2 > /tmp/apt_list
apt-get -qq --print-uris install apache php4 mysql-server mysql-client > /tmp/apt_list
apt-get -qq --print-uris dist-upgrade > /tmp/apt_list
Dies führt den gewünschten Befehl aus und speichert die
benötigten Dateien in der Datei /tmp/apt_list. Diese
Liste müssen wir jedoch noch ein bisschen bearbeiten. Wir
starten:
awk '{print $1}' < /tmp/apt_list > /tmp/apt_list_new
Dies belässt nur die URL und schreibt die Datei neu in
/tmp/apt_list_new. Leider sind immer noch die einfachen
Anführungszeichen vorhanden, welche man manuell mit
suchen/ersetzen rausnehmen muss. Die Datei /tmp/apt_list_new
kann wie folgt aussehen:
http://debian.ethz.ch/mirror/debian/pool/main/d/db1-compat/libdb1-compat_2.1.3-7_i386.deb
http://debian.ethz.ch/mirror/debian/pool/main/g/glibc/libc6_2.3.2.ds1-11_i386.deb
http://debian.ethz.ch/mirror/debian/pool/main/a/attr/libattr1_2.4.15-1_i386.deb
http://debian.ethz.ch/mirror/debian/pool/main/a/acl/libacl1_2.2.23-1_i386.deb
http://debian.ethz.ch/mirror/debian/pool/main/c/coreutils/coreutils_5.0.91-2_i386.deb
http://debian.ethz.ch/mirror/debian/pool/main/d/debianutils/debianutils_2.7.2_i386.deb
http://debian.ethz.ch/mirror/debian/pool/main/s/slang/slang1a-utf8_1.4.9-2_i386.deb
http://debian.ethz.ch/mirror/debian/pool/main/n/newt/libnewt0.51_0.51.4-23_i386.deb
http://debian.ethz.ch/mirror/debian/pool/main/p/popt/libpopt0_1.7-4_i386.deb
http://debian.ethz.ch/mirror/debian/pool/main/n/newt/whiptail_0.51.4-23_i386.deb
http://debian.ethz.ch/mirror/debian/pool/main/p/perl/perl-modules_5.8.3-2_all.deb
http://debian.ethz.ch/mirror/debian/pool/main/d/db4.0/libdb4.0_4.0.14-1.3_i386.deb
http://debian.ethz.ch/mirror/debian/pool/main/g/gdbm/libgdbm3_1.8.3-2_i386.deb
http://debian.ethz.ch/mirror/debian/pool/main/p/perl/perl_5.8.3-2_i386.deb
http://debian.ethz.ch/mirror/debian/pool/main/z/zlib/zlib1g_1.2.1-5_i386.deb
http://debian.ethz.ch/mirror/debian/pool/main/m/mysql-dfsg/mysql-common_4.0.18-2_all.deb
.
.
.
Dateien herunterladen
Kopiere die Datei /tmp/apt_list_new auf einen beliebigen
anderen PC (Windows, Linux, Unix, Egalix...). Dort kannst du mit
wget (Wget für Windows)
die Dateien herunterladen. Du musst lediglich folgenden Befehl
ausführen:
wget -x -i c:\pfad\zu\apt_list_new
wget holt jetzt brav alle Dateien und speichert die auch schön
im original Verzeichnis (dank "-x").
CDROM vorbereiten
Die Daten werden nun auf CDROM gebrannt. Aber da muss eine
bestimmte Struktur eingehalten werden und diese sieht
folgendermassen aus ("+" = Ordner, "-" = Datei):
+ .disk
- info
+ dists
+ sid (oder woody, sarge, ...)
+ contrib
+ binary-i386
- Packages
- Release
+ main
+ binary-i386
- Packages
- Release
+ non-free
+ binary-i386
- Packages
- Release
+ pool
+ contrib
+ (a-z)
+ main
+ (a-z)
+ non-free
+ (a-z)
Schauen wir die Datei .disk/info mal genauer an. Darin
steht genau eine Zeile:
Debian GNU/Linux sid dist-upgrade CD by moensch 20040315: i386
Die kannst Du beliebig anpassen. Du solltest lediglich dann auch
deine CD mit dem Filzer auch so anschreiben.
Die Inhalte des Verzeichnisses sollten eigentlich klar sein. Da
kommen die heruntergeladenen Packages und Release
Dateien rein. Schön strukturiert, wie im Beispiel.
In den Ordner pool kannst du direkt die Inhalte des
heruntergeladenen Ordners pool von debian.ethz.ch
speichern.
CDROM brennen
Die CDROM kannst du mit Deinem gewohnten Programm/Tool brennen.
Die Bezeichnung der CDROM ist egal, Debian liest ja sowieso die
Datei /.disk/info aus um die CDROM zu erkennen.
CDROM einlesen
Schiebe die CDROM ins Laufwerk deiner Linux-Kiste und führe
apt-cdrom add aus. Jetzt wird die CD eingelesen und eine
Paket-Datei wird erstellt sowie der Eintrag in der /etc/apt/sources.list
gemacht.
Hier wirst du merken, dass er meldet, er habe einige Pakete ignoriert.
Das liegt daran, dass in den Dateien Packages auf der CDROM
alle Pakete des gewählten Trees (woody, sarge, sid, ...)
sind, jedoch niemals auch alle zugehöhrigen .deb-Dateien. Dann
ist uns noch so recht, dass er diese Einträge auch ignoriert.
System updaten
Nachdem die CDROM im letzten Schritt eingelesen wurde kannst Du
jetzt ganz normal deinen Befehl ausführen, mit diesem du
damals auch die Liste der
benötigten Dateien erstellt hast (Beispiele):
apt-get install php4-gd2
apt-get install apache php4 mysql-server mysql-client
apt-get dist-upgrade
apt schreit nun nach deiner CDROM, und spricht diese ganz schön
auch mit dem Namen an, auf den du sie getauft hast.
Media Change: Please insert the disc labeled
'Debian GNU/Linux sid dist-upgrade CD by moensch 20040315: i386'
in the drive '/cdrom/' and press enter
CD einlegen, Enter drücken und Freude haben!
Viel Spass!
Samuel Suter <samuel.suter@gmx.ch>
|