Apt Mirror

Vorbereitung

Apt Mirror synchronisiert die konfigurierten Paketquellen vollständig. Von daher muss für ausreichend Platz auf dem System gesorgt werden.

Beispiel: Für die offiziellen Paketquellen von Ubuntu 20.04 (Focal Fossa) benötigt man, für die Architekturen i386 und AMD64 und ohne Quellcode-Pakete, etwa 80 GiB.

Von daher ist zu empfehlen, eine separate Partition zu erstellen und entsprechend zu mounten. (Mehr zum Mountpoint unten)

Installation und Konfiguration

apt install apt-mirror

In der Konfigdatei können die Paketquellen angegeben werden, welche synchronisiert werden sollen. In diesem Beispiel wurden die Paketquellen für Bionic Beaver und Focal Fossa konfiguriert. Es können aber ebenso Paketquellen für Debian angegeben werden.

Ausserdem kann es sinnvoll sein, den base_path anzupassen. Dies ist der Pfad wo die Paketquellen abgelegt werden. Auf diesen Pfad sollte die oben erwähnte Partition gemountet werden. Achtung: Die von apt-mirror erstellten Verzeichnisse und Dateien müssen nach dem Mounten vorhanden sein.

/etc/apt/mirror.list
############# config ##################
#
# 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 cleanscript $var_path/clean.sh
# set defaultarch  <running host architecture>
# set postmirror_script $var_path/postmirror.sh
# set run_postmirror 0
set nthreads     20
set _tilde 0
#
############# end config ##############

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

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

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

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

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

Berechtigungen einmaling anpassen:

chgrp -R www-data /data/nfs/mirror

Und im postmirror.sh eintragen:

/data/nfs/mirror/var/postmirror.sh
chgrp -R www-data /data/nfs/mirror

Synchronisieren

apt-mirror

Es ist leider nicht möglich, manuell ein einzelnes Repo zu synchronisieren. Als Workaround kann man alle anderen Repos in der Config auskommentieren.

Für das automatische Synchronisieren kann ein Cronjob verwendet werden, zB jeden Sonntag um 1 Uhr.

/etc/cron.d/apt-mirror
0 1 * * sun     root      /usr/bin/apt-mirror > /var/spool/apt-mirror/var/cron.log

Paketquellen verfügbar machen

Um die Paketquellen nun im Netz verfügbar zu machen, brauchen wir einen Webserver. Zum Beispiel Apache.

Siehe auch

Wenn der Webserver verfügbar ist, kann nun ein Link zu den Paketquellen ins DocumentRoot des Webservers erstellt werden:

ln -s /var/spool/apt-mirror/mirror/archive.ubuntu.com/ubuntu /var/www/html/ubuntu

Es empfiehlt sich auch, per RewriteRule die URLs zu kürzen:

RewriteRule ^/debian/(.*) /mirror/deb.debian.org/debian/$1 [passthrough]
RewriteRule ^/debian-security/(.*) /mirror/security.debian.org/debian-security/$1 [passthrough]

Auf dem Client

Jetzt muss der Mirror Server nur noch auf dem Client konfiguriert werden: /etc/apt/sources.list

deb http://<IP des Servers>/ubuntu focal main restricted