(Debian) Lokales Paket Repository installieren

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:

  • Anlegen eines lokalen Repositories auf einem dedizierten Rechner mit Internetanschluss
  • Freigeben des lokalen Repositories via NFS
  • Mounten des Repositories via NFS auf den Clients
  • Anpassen der »/etc/sources.list« an den Clients

Server Setup

Es sollte im (Test-) Netzwerk zumindest diesen einen Rechner geben, welcher einen Zugang zumindest zum konfigurierten Online Repository besitzt.

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.

Die oz Kommandos »dpkg-scanpackages« und »dpkg-scansources« müssen Sie jedesmal ausführen, nachdem Sie weitere Pakete in das lokale Repository geladen haben.

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.

Client Setup

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«

Des Weiteren ist darauf hizuweisen, dass sich der Client nicht wesentlich vom Repository-Server unterscheiden darf (Kernel- und Release Version etc), weil die Pakete ja in Abhängigkeit vom Repository Server heruntergeladen werden. Sie können natürlich aber auch andere Pakete für andere Betriebssystem Versionen in das lokale Repository kopieren.

# 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

Wenn Sie jetzt auf einem Client das Kommando »aptitude install [Paketname]« ausführen, sucht »aptitude« ausschließlich in der angegebenen Ressource »/var/repository« nach den Paketen und deren Abhängigkeiten und installiert diese daraus. Eine Internetverbindung am Client ist demnach nicht mehr notwendig. Möchten Sie ein Paket installieren, welches noch nicht im lokalen Repository liegt, führen Sie am Repository-Server einfach das »aptitude install --donwload-only [Paketname]« aus, syncen die neuen Pakete in das freigegebene Verzeichnis, Aktualisieren Sie das Archiv mit »dpkg-scanpackages« und »dpkg-scansources«. Somit stehen Ihnen das neue Paket und alle seine Abhängigkeiten lokal zur Verfügung.

Note: Sie werden 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 diese Warnung ignorieren.

prontosystems - we are connecting more than computers

pronto 2012/10/25 13:36

tux/local_repository.txt (10926 views) · Zuletzt geändert: 2012/10/25 15:12 von wikisysop
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0