Wie man einen lokalen Debian/Ubuntu Spiegel mit apt-mirror erstellt

Version 1.0
Author: Falko Timme <ft [at] falkotimme [dot] com>

Diese Anleitung veranschaulicht, wie man einen Debian/Ubuntu Spiegel für das lokale Netzwerk mit dem Tool apt-mirror erstellt. Ein lokaler Debian/Ubuntu Spiegel ist ziemlich nützlich, wenn Du in Deinem lokalen Netzwerk mehrere Systeme installieren musst, da Du dann alle benötigten Pakete über die schnelle LAN Verbindung runter laden kannst, das spart Dir Internet Bandweite.

Ich möchte an dieser Stelle darauf hinweisen, dass dies nicht der einzige Weg ist, ein solches System einzurichten. Es gibt viele Möglichkeiten dieses Ziel zu erreichen – dies ist der Weg, den ich gewählt habe. Ich übernehme keine Garantie, dass dies auch bei Dir funktioniert!

1 Vorbemerkung

Du kannst einen Debian und Ubuntu Spiegel auf Debian und Ubuntu Systemen einrichten, d.h. ein Debian System kann ein Debian und ein Ubuntu Spiegel sein, sowie ein Ubuntu System ein Ubuntu und ein Debian Spiegel sein kann.

Bitte beachte, dass Du eine schnelle Internetverbindung benötigst, um alle Pakete auf Deinen Spiegel runter laden zu können sowie viel Festplattenspeicherplatz. Bei meinem Test habe ich die Haupt-, contrib- und unfreien Pakete von  Debian Sarge sowie die Haupt-, beschränkten und universellen Pakete von Ubuntu Edgy Eft gespiegelt, was ungefähr 25GB Speicherplatz erforderte und über 6 Stunden mit einer 16MBit DSL Verbindung benötigt hat.

Ich werde in dieser Anleitung keine Security Updates spiegeln – ich finde, man sollte Security Updates immer direkt aus dem Internet laden. Somit stellst Du sicher, dass Du die neusten erhältst.

Ich habe dies auf einem Debian Sarge und einem Ubuntu Edgy Eft System getestet. Falls Du unterschiedliche Debian/Ubuntu Versionen verwendest, kann es sein, dass die Prozedur etwas abweicht. Du solltest bereits ein Debian Sarge Basissystem eingerichtet haben (was z.B. auf den ersten beiden Seiten der folgenden Anleitung beschrieben ist https://www.howtoforge.com/perfect_setup_debian_sarge) oder ein Ubuntu Edgy Eft Basissystem (wie es auf den Seiten eins bis drei dieser Anleitung beschrieben wird https://www.howtoforge.com/perfect_setup_ubuntu_6.10).

In diesem Beispiel hat mein lokaler Spiegel die IP Adresse 192.168.0.100.

2 Installation von apt-mirror

2.1 /etc/apt/sources.list modifizieren (nur Debian Sarge)

Wenn Du Dich auf Debian Sarge befindest, musst Du /etc/apt/sources.list bearbeiten, um apt-mirror installieren zu können. Ich weiß nicht, ob dies auch auf Debian Etch oder Sid notwendig ist, probier‘ es bitte selbst aus. Dieser Schritt ist bei Ubuntu Edgy Eft nicht nötig.

vi /etc/apt/sources.list

Füge bitte folgende Zeile der Datei hinzu:

[...]
deb http://apt-mirror.sourceforge.net/ apt-mirror/
[...]

Aktualisiere dann die Paketdatenbank:

apt-get update

2.2 Installation von apt-mirror

Dieser Schritt gilt für alle Systeme (Debian und Ubuntu). Um apt-mirror zu installieren, führe bitte dies aus

apt-get install apt-mirror

3 Installation von  Apache

Ich möchte auf meinen neuen lokalen Debian/Ubuntu Spiegel später via http zugreifen, deshalb installiere ich jetzt den Apache Web Server:

apt-get install apache2

Der Standard Dokumenten-Root ist /var/www, ich werde später Symlinks von diesem Verzeichnis zu dem Ort der Debian und Ubuntu Paketdatenbank erstellen.

4 Konfiguration von apt-mirror

apt-mirrors Konfigurationsdatei ist /etc/apt/mirror.list. Es sollte bereits eine Standardkonfiguration darin enthalten sein; auf Debian Sarge sieht die Datei wie folgt aus:

# apt-mirror configuration file

##
## The default configuration options (uncomment and change to override)
##
#
# set base_path           /var/spool/apt-mirror
# set mirror_path  $base_path/mirror
# set skel_path           $base_path/skel
# set var_path     $base_path/var
#
# set defaultarch
# set nthreads     20
#

##
## Example sources
##

# sarge's section
deb http://ftp.fi.debian.org/debian sarge main contrib non-free
deb-src http://ftp.fi.debian.org/debian sarge main contrib non-free

deb http://security.debian.org/debian-security sarge/updates main contrib non-free
deb-src http://security.debian.org/debian-security sarge/updates main contrib non-free

deb http://ftp.fi.debian.org/debian sarge main/debian-installer

# sarge-proposed-updates's section
deb http://ftp.fi.debian.org/debian sarge-proposed-updates main contrib non-free
deb-src http://ftp.fi.debian.org/debian sarge-proposed-updates main contrib non-free

# sid's section
deb http://ftp.fi.debian.org/debian sid main contrib non-free
deb-src http://ftp.fi.debian.org/debian sid main contrib non-free

deb http://ftp.fi.debian.org/debian sid main/debian-installer

# experimental section
deb http://ftp.fi.debian.org/debian ../project/experimental main contrib non-free
deb-src http://ftp.fi.debian.org/debian ../project/experimental main contrib non-free

##
## Cleaner configuration example
##
#
# set cleanscript $var_path/clean.sh
#

# Cleaning section
clean http://security.debian.org/
clean http://ftp.fi.debian.org/

skip-clean http://ftp.fi.debian.org/doc/
skip-clean http://ftp.fi.debian.org/tools/
skip-clean http://ftp.fi.debian.org/debian-cd/
skip-clean http://ftp.fi.debian.org/debian-minicd/
skip-clean http://ftp.fi.debian.org/debian/dists/sarge/main/installer-i386/
skip-clean http://ftp.fi.debian.org/debian/dists/sid/main/installer-i386/
skip-clean http://ftp.fi.debian.org/debian/doc/
skip-clean http://ftp.fi.debian.org/debian/tools/
skip-clean http://ftp.fi.debian.org/debian/project/
skip-clean http://ftp.fi.debian.org/debian-non-US/project/

Auf Ubuntu Edgy Eft sieht sie so aus:

############# config ##################
#
# set base_path    /var/spool/apt-mirror
#
# if you change the base path you must create the directories below with write privlages
#
# set mirror_path  $base_path/mirror
# set skel_path    $base_path/skel
# set var_path     $base_path/var
# set cleanscript $var_path/clean.sh
# set defaultarch
set nthreads     20
set tilde 0
#
############# end config ##############

deb http://archive.ubuntu.com/ubuntu edgy main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu edgy-updates main restricted universe multiverse
#deb http://archive.ubuntu.com/ubuntu edgy-backports main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu edgy-security main restricted universe multiverse
#deb http://archive.ubuntu.com/ubuntu edgy-proposed main restricted universe multiverse

deb-src http://archive.ubuntu.com/ubuntu edgy main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu edgy-updates main restricted universe multiverse
#deb-src http://archive.ubuntu.com/ubuntu edgy-backports main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu edgy-security main restricted universe multiverse
#deb-src http://archive.ubuntu.com/ubuntu edgy-proposed main restricted universe multiverse

clean http://archive.ubuntu.com/ubuntu

Wenn Du die Datei mit /etc/apt/sources.list vergleichst, wirst Du feststellen, dass sie sehr ähnlich ist. /etc/apt/mirror.list listet hauptsächlich die Paketdatenbanken auf, die gespiegelt werden sollen, plus ein paar andere Optionen.

Nun modifizieren wir /etc/apt/mirror.list. Wie bereits erwähnt, möchte ich die Haupt-, contrib- und unfreien Pakete von Debian Sarge sowie die Haupt-, beschränkten und universellen Pakete von Ubuntu Edgy Eft spiegeln. Allerdings möchte ich nicht die Security Updates spiegeln, da diese direkt aus dem Internet geladen werden sollten. Ich möchte auch nicht die Quell-Pakete spiegeln, da man in 95% aller Installationen die Quell-Pakete nicht benötigt und diese sehr viel Platz auf der Festplatte benötigen. Also sieht meine /etc/apt/mirror.list wie folgt aus:

vi /etc/apt/mirror.list

# apt-mirror configuration file

##
## The default configuration options (uncomment and change to override)
##
#
# set base_path    /var/spool/apt-mirror
# set mirror_path  $base_path/mirror
# set skel_path    $base_path/skel
# set var_path     $base_path/var
#
# set defaultarch
# set nthreads     20
#

##
## Example sources
##

# sarge's section
deb http://ftp.de.debian.org/debian sarge main contrib non-free

# Ubuntu Edgy Eft
deb http://de.archive.ubuntu.com/ubuntu/ edgy main restricted universe

##
## Cleaner configuration example
##
#
# set cleanscript $var_path/clean.sh
#

# Cleaning section
clean http://ftp.de.debian.org/
clean http://de.archive.ubuntu.com/

Bitte beachte, dass ich ftp.de.debian.org anstelle von ftp.fi.debian.org und de.archive.ubuntu.com anstelle von archive.ubuntu.com verwendet habe. Du solltest Spiegel verwenden, die in Deiner Nähe sind. Wenn Du Dich also zum Beispiel in den USA befindest, dann ersetze de mit us und so weiter.

Die Cleaning Section am Ende teilt apt-mirror mit, welches Verzeichnis auf der lokalen Festplatte darauf überprüft werden soll, ob Speicherplatz freigegeben werden kann. Ich möchte die gesamten lokalen Paketdatenbanken von Debian und Ubuntu überprüfen, also definiere ich

clean http://ftp.de.debian.org/
clean http://de.archive.ubuntu.com/

Falls Du andere Debian/Ubuntu Versionen verwenden möchtest, ersetze einfach sarge mit etch oder sid und edgy mit breezy, dapper, etc.

5 Die lokalen Paketdatenbanken ertellen

Da nun apt-mirror konfiguriert ist, wird es Zeit, es zum ersten Mal auszuführen und alle Pakete runter zu laden, die die lokale Debian und Ubuntu Paketdatenank bilden. Wir müssen lediglich Folgendes eingeben

su – apt-mirror -c apt-mirror

apt-mirror teilt Dir mit, wieviele GB runter geladen werden müssen. Das kann einige Stunden dauern, sei also geduldig. Die Pakete werden in Unterverzeichnissen des /var/spool/apt-mirror/mirror Verzeichnisses abgelegt, pass also auf, dass die Partition, die dieses Verzeichnis beinhaltet, genug freien Speicherplatz hat.

Die Debian Paketdatenbank wird in /var/spool/apt-mirror/mirror/ftp.de.debian.org/debian und die Ubuntu Paketdatenbank wird in /var/spool/apt-mirror/mirror/de.archive.ubuntu.com/ubuntu sein. Falls Du in Kapitel 4 andere Spiegel verwendet hast, werden die Pfade bei Dir ein wenig abweichen.

6 Die lokalen Paketdatenbanken aufräumen

Nachdem apt-mirror alle Pakete runter geladen hat, teilt es Dir höchstwahrscheinlich mit, dass Du mit dem /var/spool/apt-mirror/var/clean.sh Skript Speicherplatz freigeben kannst. Und das tun wir jetzt:

/bin/bash /var/spool/apt-mirror/var/clean.sh

Die Ausgabe wird wie folgt aussehen:

server1:~# /bin/bash /var/spool/apt-mirror/var/clean.sh
Removing 157 unnecessary files [13316096 bytes]…
[0%]…………….done.

Removing 18 unnecessary directories…
[0%]………………done.

Wie Du siehst, sind ein paar MB frei gegeben wurden.

7 Die lokalen Paketdatenbanken aktualisieren / einen täglichen Cron Job erstellen

Das Aktualisieren des lokalen Spiegels ist einfach. Führe einfach erneut dies aus:

su – apt-mirror -c apt-mirror

Wenn Du dies nicht manuell vornehmen möchtest, kannst Du einen täglichen Cronjob erstellen. Bearbeite einfach /etc/cron.d/apt-mirror und aktiviere die letzte Zeile, so dass es wie folgt aussieht:

vi /etc/cron.d/apt-mirror

#
# Regular cron jobs for the apt-mirror package
#
0 4     * * *   apt-mirror      /usr/bin/apt-mirror > /var/spool/apt-mirror/var/cron.log

Damit wird apt-mirror jeden Tag um 4.00 Uhr ausgeführt und auf  /var/spool/apt-mirror/var/cron.log loggen.

8 Die lokalen Spiegel über HTTP zugreifbar machen

Der Standard Apache Dokumenten-Root unter Debian und Ubuntu ist /var/www, jedoch sind unsere Paketdatenbanken in /var/spool/apt-mirror/mirror gespeichert. Um unsere Paketdatenbanken von http://192.168.0.100/debian und http://192.168.0.100/ubuntu aus zugreifbar zu machen (in dieser Anleitung ist 192.168.0.100 die IP Adresse unseres lokalen Spiegels), erstellen wir die Symlinks /var/www/debian und /var/www/ubuntu, die auf die richtigen Paketdatenbanken weisen:

ln -s /var/spool/apt-mirror/mirror/ftp.de.debian.org/debian /var/www/debian
ln -s /var/spool/apt-mirror/mirror/de.archive.ubuntu.com/ubuntu /var/www/ubuntu

Denk daran diese Befehle anzupassen, wenn Du andere Spiegel als ftp.de.debian.org und de.archive.ubuntu.com verwendest.

Was Du außerdem bedenken solltest, ist, dass Du Dich auf Debian Sarge zum einen als sarge aber auch als stable (als diese Anleitung verfasst wurde, war Debian Sarge „Stable“ und Debian Etch lief noch unter dem Status „Testing“) beziehen kannst. Wenn Du dies ausführst

ls -l /var/spool/apt-mirror/mirror/ftp.de.debian.org/debian/dists

wirst Du feststellen, dass ein Verzeichnis mit der Bezeichnung sarge vorhanden ist, allerdings gibt es kein stable. Wenn Du stable anstelle von sarge in /etc/apt/sources.list verwendest oder ein neues Debian System mit dem lokalen Spiegel installierst, führt das zu einem Problem (der Debian Sarge Installer bezieht sich auch auf stable anstelle von sarge). Die Lösung ist hier die Erstellung eines Symlinks. Erst wechseln wir mit cd in das dists Verzeichnis und dann fügen wir den symlink mit ln ein:

cd /var/spool/apt-mirror/mirror/ftp.de.debian.org/debian/dists
ln -s sarge/ stable

Vergiss nicht diesen Befehl anzupassen, wenn Du einen anderen Spiegel als ftp.de.debian.org verwendest.

Sobald Debian Etch „Stable“ wird und Du Dich entscheidest, auch Etch zu spiegeln, vergiss nicht den stable Symlink zu ändern, z.B. wie folgt:

cd /var/spool/apt-mirror/mirror/ftp.de.debian.org/debian/dists
rm -f stable
ln -s etch/ stable

Dieses Problem haben wir bei Ubunut nicht, da es dort kein stable gibt, nur breezy, dapper, edgy, etc.

9 Konfiguriere Deine Client Computer so dass sie den lokalen Spiegel verwenden

Da unser lokaler Spiegel nun verwendet werden kann, müssen wir unseren Debian Sarge und Ubuntu Edgy Eft Systemen  nur mitteilen, ihn auch zu verwenden.

9.1 Debian Sarge

Auf Debian Sarge Systemen kannst Du die main contrib non-free Paketdatenbank in /etc/apt/sources.list wie folgt ersetzen:

vi /etc/apt/sources.list

[...]
deb http://192.168.0.100/debian sarge main contrib non-free
[...]

Anstelle von sarge könntest Du auch stable verwenden:

[...]
deb http://192.168.0.100/debian stable main contrib non-free
[...]

Führe danach dies aus

apt-get update

9.2 Ubuntu Edgy Eft

Auf Ubuntu Edgy Eft Systemen kannst Du die main restricted universe Paketdatenbank in /etc/apt/sources.list wie folgt ersetzen:

vi /etc/apt/sources.list

[...]
deb http://192.168.0.100/ubuntu/ edgy main restricted universe
[...]

Führe danach dies aus

apt-get update

9.3 Installation auf einem frisch aufgesetzten System

Wenn Du ein frisch aufgesetztes Debian Sarge oder Ubuntu Edgy Eft System installierst, bestimme Deinen lokalen Spiegel wie folgt, wenn der Installer fragt, welche Paketdatenbank Du verwenden möchtest:

Danach wird der Installer Deinen lokalen Spiegel verwenden, um das System zu installieren:

10 Links

Das könnte dich auch interessieren …