Dies ist eine alte Version des Dokuments!
In einem virtuellen Testlab befinden sich einige Debian Rechner ohne Internetanschluss. Im Verlauf des Testbetriebs ergaben sich jedoch einige Umstände, welche es erforderlich machten diverse Pakete auf den Testrechnern nachzuinstallieren. Um nicht ständig die Konfiguration der Rechner unnötig zu ändern, um ihnen temporär einen Internetzugang zu gewähren, haben wir nach einer Möglichkeit gesucht, dies lokal im Testlab abzuwickeln.
Die Vorgehensweise gliederte sich in unserem Setup wie folgt:
Erstellen Sie auf dem Repository-Server ein Verzeichnis, welches die freigegebenen Pakete beinhalten soll:
# mkdir /var/local/repository
Sie können jetzt mittels »aptitude« die Pakete auf dem Server herunterladen. Benutzen Sie hierfür die Option »--download-only« (-d) damit Sie nicht alles was Sie auf Ihren Testrechner benötigen auch auf dem Repository-Server installieren müssen. Sie finden die Pakete dann im Verzeichnis »/var/cache/apt/archives«. »aptitude« kümmert sich hierbei wie gewohnt um das Auflösen der Abhängigkeiten und lädt diese dann ggf ebenfalls herunter.
Kopieren Sie nun die heruntergeladenen Pakete in das zu veröffentlichende Verzeichnis »/var/local/repository«. Ich verwende dafür zB »rsync«:
# rsync -rt /var/cache/apt/archives/ /var/local/repository/
Jetzt müssen Sie in diesem Verzeichnis noch einen »Paket-Index« und ggf einen Source-Index erzeugen. Das dafür benötigte Programm »dpkg-scanpackages« befindet sich im Paket »dpkg-dev«. Dieses müssen Sie ggf noch auf dem Server installieren:
# aptitude install dpkg-dev
Navigieren Sie in das zu veröffentlichende Verzeichnis (Die Pfadangabe ist hier immer relativ) und erzeugen Sie den Index:
# cd /var/local/repository # dpkg-scanpackages ./ > Packages && gzip -f Packages # dpkg-scansources ./ > Sources && gzip -f Sources
Im wesentlichen ist das Repository nun komplett und beinhaltet:
deb-Pakete
: Die »deb-Pakete« beinhalten die eigentlichen heruntergeladenen Objekte.Packages.gz
: Enthält den Namen, die Version, die Größe, die Kurz- und Langbeschreibung und die Abhängigkeiten eines jeden Pakets. Diese Informationen werden von »aptitude« oder »dselect« ausgewertet.Sources.gz
: Enthält den Namen, die Version und die »Bau-Abhängigkeiten« (die das Paket zum Bauen benötigt) von jedem Paket; diese Informationen werden von apt-get source und vergleichbaren Werkzeugen verwendet.
Geben Sie abschließend noch das Verzeichnis »/var/local/repository« über das Netzwerk frei:
# echo "/var/local/repository 192.168.167.0/24(rw,sync)" » /etc/exports # exportfs -a
Tragen Sie hier die Angaben, die Ihren Gegebenheiten entsprechen ein. »192.168.167.0/24« in diesem Fall ist die Netzadresse unseres Testlabs.
Sie werden dann bei der Installation von Paketen aus diesem lokalen Repository mit einer Warnung konfrontiert, dass Sie versuchen Pakete aus einer nicht vertrauenswürdigen Quelle zu installieren:
WARNUNG: nichtvertrauenswürdige Versionen der folgenden Pakete werden installiert! Nichtvertrauenswürdige Pakete können die Sicherheit Ihres Systems gefährden. Sie sollten nur dann mit der Installation fortfahren, wenn Sie sicher sind, dass Sie dies wirklich wollen.
Sie können in einer abgegrenzten Testinstallation diese Warnung auch ignorieren. Sie können diese Warnung aber auch verhindern, wenn Sie das lokale Repository mit »GnuPG« digital signieren und den öffentlichen Schlüssel in »apt-key« importieren:
Erzeugen Sie den Schlüssel:
# gpg --gen-key gpg (GnuPG) 1.4.10; Copyright (C) 2008 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Bitte wählen Sie, welche Art von Schlüssel Sie möchten: (1) RSA und RSA (voreingestellt) (2) DSA und Elgamal (3) DSA (nur unterschreiben/beglaubigen) (4) RSA (nur signieren/beglaubigen) Ihre Auswahl? 1 RSA-Schlüssel können zwischen 1024 und 4096 Bit lang sein. Welche Schlüssellänge wünschen Sie? (2048) Die verlangte Schlüssellänge beträgt 2048 Bit Bitte wählen Sie, wie lange der Schlüssel gültig bleiben soll. 0 = Schlüssel verfällt nie <n> = Schlüssel verfällt nach n Tagen <n>w = Schlüssel verfällt nach n Wochen <n>m = Schlüssel verfällt nach n Monaten <n>y = Schlüssel verfällt nach n Jahren Wie lange bleibt der Schlüssel gültig? (0) 0 Schlüssel verfällt nie Ist dies richtig? (j/N) j Sie benötigen eine User-ID, um Ihren Schlüssel eindeutig zu machen; das Programm baut diese User-ID aus Ihrem echten Namen, einem Kommentar und Ihrer Email-Adresse in dieser Form auf: "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>" Ihr Name ("Vorname Nachname"): Pronto Email-Adresse: pronto@prontosystems.org Kommentar: Sie haben diese User-ID gewählt: "Pronto <pronto@prontosystems.org>" Ändern: (N)ame, (K)ommentar, (E)-Mail oder (F)ertig/(B)eenden? F Sie benötigen eine Passphrase, um den geheimen Schlüssel zu schützen. Wir müssen eine ganze Menge Zufallswerte erzeugen. Sie können dies unterstützen, indem Sie z.B. in einem anderen Fenster/Konsole irgendetwas tippen, die Maus verwenden oder irgendwelche anderen Programme benutzen. Es sind nicht genügend Zufallswerte vorhanden. Bitte führen Sie andere Arbeiten durch, damit das Betriebssystem weitere Entropie sammeln kann! (Es werden noch 288 Byte benötigt.) .+++++ +++++ Wir müssen eine ganze Menge Zufallswerte erzeugen. Sie können dies unterstützen, indem Sie z.B. in einem anderen Fenster/Konsole irgendetwas tippen, die Maus verwenden oder irgendwelche anderen Programme benutzen. ..+++++ ....+++++ gpg: /root/.gnupg/trustdb.gpg: trust-db erzeugt gpg: Schlüssel 434C1017 ist als uneingeschränkt vertrauenswürdig gekennzeichnet Öffentlichen und geheimen Schlüssel erzeugt und signiert. gpg: "Trust-DB" wird überprüft gpg: 3 marginal-needed, 1 complete-needed, PGP Vertrauensmodell gpg: Tiefe: 0 gültig: 1 unterschrieben: 0 Vertrauen: 0-, 0q, 0n, 0m, 0f, 1u pub 2048R/434C1017 2012-10-25 Schl.-Fingerabdruck = 258F 8A8D 6E0E 0055 9C63 FD06 9439 C46D 434C 1017 uid Pronto <pronto@prontosystems.org> sub 2048R/34ED4BB9 2012-10-25
Damit dieses Setup am Ende zufriedenstellend funktioniert, müssen im Vorfeld einige Bedingungen erfüllt werden. Da zumindest in unserem Fall die Clients unmittelbar nach der Installation noch einen Internetanschluss haben (wir installieren die Rechner mit einer minimal Net-install CD) wurden einige Pakete unmittelbar hinterher installiert. Zwingend nötig auf den Clients hierbei ist das Paket »nfs-common«
# aptitude install nfs-common
Erstellen Sie einen Mountpoint, an welchem Sie das freigegebene Verzeichnis ins Dateisystem einhängen möchten (zB):
# mkdir /var/repository
Mounten Sie im Anschluss daran das auf dem Repository-Server freugegebene Verzeichnis, welches die Pakete enthält:
# mount 192.168.167.162:/var/local/repository /var/repository
Bearbeiten Sie die Datei »/etc/apt/sources.list« und kommentieren Sie alle eingetragenen Sources aus und fügen den Pfad zum lokalen Repository hinzu:
/etc/apt/sources.list
# deb cdrom:[Debian GNU/Linux 6.0.5 _Squeeze_ - Official i386 NETINST Binary-1 20120512-20:43]/ squeeze main #deb cdrom:[Debian GNU/Linux 6.0.5 _Squeeze_ - Official i386 NETINST Binary-1 20120512-20:43]/ squeeze main #deb http://ftp.de.debian.org/debian/ squeeze main #deb-src http://ftp.de.debian.org/debian/ squeeze main #deb http://security.debian.org/ squeeze/updates main #deb-src http://security.debian.org/ squeeze/updates main # squeeze-updates, previously known as 'volatile' #deb http://ftp.de.debian.org/debian/ squeeze-updates main #deb-src http://ftp.de.debian.org/debian/ squeeze-updates main deb file:///var/repository ./
Führen Sie abschließend »aptitude update« aus, um die neuen Quellen dem System bekannt zu machen:
# aptitude update