Swiss Penguin Logo

LIB - apt offline benutzen

LUGS

Über die LUGS
Statuten und Protokolle
Sektionen
Terminliste
IRC
Mailinglisten
Kontaktadressen
Mitglied werden
Internes
Mitgliederliste

LINUX

Was ist Linux?
   Screenshots
Distributionen
   kmLinux
Firmen
Ressourcen
LIB

Dokumentation
Events
Projekte
Vorträge
Allgemeines

ChangeLog
Sprache
Galerie

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>

Powered by Linux, served by Apache / PHP, last changes done 04.02.2008 -- Copyright