Einrichtung eines Apt-Mirror mit Ubuntu

Oft macht es Sinn sich alle Pakete eines Repositories für den Offlinegebrauch herunter zu laden. Sei es das kein oder nur schlechtes Internet hat, oder einfach einen statischen Stand benötigt, z.B. für den Rollout mit Foreman/Puppet. Hier für ist der Apt-Mirror optimal.

Systemannahme: Ubuntu 16.04 (LXC Container auf Proxmox)

Der Dienst lässt sich leicht über das Paketmanagement installieren:

apt install apt-mirror apache2 screen -y

Danach muss man noch die Config beschreiben:

nano /etc/apt/mirror.list
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
set limit_rate 50K
 
#
############# end config ##############
 
deb-i386 http://archive.ubuntu.com/ubuntu xenial main restricted universe multiverse
deb-i386 http://archive.ubuntu.com/ubuntu xenial-security main restricted universe multiverse
deb-i386 http://archive.ubuntu.com/ubuntu xenial-updates main restricted universe multiverse
deb-i386 http://archive.ubuntu.com/ubuntu xenial-backports main restricted universe multiverse
 
deb-amd64 http://archive.ubuntu.com/ubuntu xenial main restricted universe multiverse
deb-amd64 http://archive.ubuntu.com/ubuntu xenial-security main restricted universe multiverse
deb-amd64 http://archive.ubuntu.com/ubuntu xenial-updates main restricted universe multiverse
deb-amd64 http://archive.ubuntu.com/ubuntu xenial-backports main restricted universe multiverse
 
deb-i386 http://ppa.launchpad.net/kubuntu-ppa/backports/ubuntu xenial main
deb-amd64 http://ppa.launchpad.net/kubuntu-ppa/backports/ubuntu xenial main
 
deb-i386 http://ppa.launchpad.net/philip5/extra/ubuntu xenial main
deb-amd64 http://ppa.launchpad.net/philip5/extra/ubuntu xenial main
 
clean http://archive.ubuntu.com/ubuntu
clean http://ppa.launchpad.net/kubuntu-ppa/backports/ubuntu
clean http://ppa.launchpad.net/philip5/extra/ubuntu

In unserem Fall haben wir hier alle Ubuntuquellen inkl. 32bit aber ohne den Sourcen eingebunden. Weiters 2 PPA's. die Kubuntu- Backports für aktuelles Plasma, und das PPA von Philip5 für das aktuelle Digikam für MYSQL-Anbindung. Clean kann bei Bedarf auskommentiert werden. Es beschreibt das die alte Pakete die Online nicht mehr verfügbar sind, lokal gelöscht werden. Durch die Installation wird automatisch auch ein Cron-Job unter /etc/cron.d namens apt-mirror angelegt. Dieser ist aber nicht automatisch aktiv, da die entsprechende Konfigurationszeile auskommentiert ist.

Zu guter letzt fügen wir noch zwei Features unserem Apache hinzu. Dieser liefert dann die Pakete aus.

nano /etc/apache2/sites-enabled/000-default.conf

Hier fügen wir die Optionen FollowSymLinks und Indexes hinzu.

...
DocumentRoot /var/www
        <Directory />
        Options FollowSymLinks
        AllowOverride Indexes
        </Directory>
...

In einem Screen starten wir nun den Download der Pakete an. Die Geschwindigkeit wurde im Configfile begrenzt.

screen -S apt-mirror-download
apt-mirror

Ist der Download erst einmal abgeschlossen müssen wir noch ein paar Symlinks legen um Zugriff über Apache zu erlangen.

ln -s /var/spool/apt-mirror/mirror/archive.ubuntu.com/ubuntu /var/www/ubuntu
ln -s /var/spool/apt-mirror/mirror/ppa.launchpad.net/kubuntu-ppa/backports/ubuntu /var/www/ppa-kubuntu-backports
ln -s /var/spool/apt-mirror/mirror/ppa.launchpad.net/philip5/extra/ubuntu /var/www/ppa-philip5-digikam

Bei den Ubuntuquellen wird hier nur der Servername archive.ubuntu.com durch den eigenen ersetzt. Bei den PPA's ist das etwas anders, da auch diese mit „ubuntu enden. Dies sieht dann so aus:

deb http://apt-mirror.local/kubuntu-ppa/backports/ppa-kubuntu-backports xenial main
deb http://apt-mirror.local/philip5/extra/ppa-philip5-digikam xenial main

Und ab sofort gehts komplett Offline ;)

adminadmin, 2017/04/07 22:46
Vielen Dank für den Artikel :)
Max Mustermanntuxi, 2017/04/07 23:01
So jetzt bin auch ich da :)