ubuntuusers.de

Hinweis: Dies ist ein statischer Snapshot unseres Wikis vom 25. März 2013 und kann daher nicht bearbeitet werden. Der aktuelle Artikel ist unter wiki.ubuntuusers.de zu finden.

Ubuntu-Mirror

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.

Artikel für fortgeschrittene Anwender

Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.

Ziel des Artikels ist die Einrichtung eines Spiegels (im englischen "Mirror" genannt) für die Quellen von Ubuntu Precise Pangolin 12.04 (Long Term Support), bei dem die Pakete über einen Web- oder Dateiserver abgerufen werden können.

Dabei sollen die vier Paketquellen (Precise, -Updates, -Security und -Backports) mit allen verfügbaren Komponenten (main, restricted, universe, multiverse) als Paketquellen benutzt werden. Die Verwendung dieses Artikels mit anderen Ubuntu-Versionen funktioniert analog. Dazu muss in der Regel precise durch lucid oder oneiric usw. ... ersetzt werden. Für einen Spiegel ist es sinnvoll, einen Root-Server zu nutzen.

In kleineren Netzwerken und auf Servern mit schmaler Anbindung bzw. im Heimgebrauch ist meist ein Proxy/Cache vollkommen ausreichend.

Für Alternativen siehe Lokale Paketquellen

Installation

Folgende Pakete müssen installiert [1] werden:

  • debmirror

  • ubuntu-keyring

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install debmirror ubuntu-keyring 

sudo aptitude install debmirror ubuntu-keyring 

Vorbereitungen

Benutzer und Gruppe

Für debmirror wird der Benutzer mirror und die gleichnamige Gruppe angelegt.

sudo groupadd mirror
sudo useradd -g mirror -d /var/www/mirror -c "Ubuntu Mirror" mirror 

Verzeichnisse

Für die Paketquellen werden einzelne Verzeichnisse angelegt und dem Benutzer und der Gruppe mirror zu gewiesen.

sudo mkdir -p /var/www/mirror/ubuntu
sudo mkdir /var/www/mirror/ubuntu-security
sudo mkdir /var/www/mirror/ubuntu-updates
sudo mkdir /var/www/mirror/ubuntu-backports
sudo chown -R mirror:mirror /var/www/mirror 

Skripte

Um das Spiegeln zu vereinfachen ist der Einsatz von Skripten sinnvoll. Hier sind Skripte zum Spiegeln der Quellen von Ubuntu Lucid Lynx 10.04 (Long Term Support) aufgeführt, die dazu benutzt werden können.

Der Befehl logger -t in den Skripten sorgt für einen Eintrag im syslog (siehe auch logger).

ubuntu

Datei abspeichern unter /var/www/mirror/bin/mirror-ubuntu.bash.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
#!/bin/bash
#
# Spiegelt die Haupt-Ubuntu-Repostiories
#
logger -t mirror-ubuntu.bash[$$] Updating Ubuntu
debmirror /var/www/mirror/ubuntu --passive --progress --nosource             \
--host=ftp.inf.tu-dresden.de --root=os/linux/dists/ubuntu --dist=precise      \
--section=multiverse,universe,restricted,main --arch=i386 --cleanup          \
--verbose
logger -t mirror-ubuntu.bash[$$] Finished Updating Ubuntu

ubuntu-security

Datei abspeichern unter /var/www/mirror/bin/mirror-ubuntu-security.bash.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
#!/bin/bash
#
# Spiegelt die Ubuntu-Security-Repostiories
#
logger -t mirror-ubuntu-security.bash[$$] Updating Ubuntu-Security
debmirror /var/www/mirror/ubuntu-security --passive --progress --nosource    \
--host=ftp.inf.tu-dresden.de --root=os/linux/dists/ubuntu                    \
--dist=precise-security --section=multiverse,universe,restricted,main         \
--arch=i386 --cleanup --verbose
logger -t mirror-ubuntu-security.bash[$$] Finished Updating Ubuntu-Security

ubuntu-updates

Datei abspeichern unter /var/www/mirror/bin/mirror-ubuntu-updates.bash.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
#!/bin/bash
#
# Spiegelt die Ubuntu-Update-Repostiories
#
logger -t mirror-ubuntu-updates.bash[$$] Updating Ubuntu-Updates
debmirror /var/www/mirror/ubuntu-updates --passive --progress --nosource     \
--host=ftp.inf.tu-dresden.de --root=os/linux/dists/ubuntu                    \
--dist=precise-updates --section=multiverse,universe,restricted,main          \
--arch=i386 --cleanup --verbose
logger -t mirror-ubuntu-updates.bash[$$] Finished Updating Ubuntu-Updates

ubuntu-backports

Datei abspeichern unter /var/www/mirror/bin/mirror-ubuntu-backports.bash.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
#!/bin/bash
#
# Spiegelt die Ubuntu-Backport-Repostiories
#
logger -t mirror-ubuntu-backports.bash[$$] Updating Ubuntu-Backports
debmirror /var/www/mirror/ubuntu-backports --passive --progress --nosource   \
--host=ftp.inf.tu-dresden.de --root=os/linux/dists/ubuntu                    \
--dist=precise-backports --section=multiverse,universe,restricted,main        \
--arch=i386 --cleanup --verbose
logger -t mirror-ubuntu-backports.bash[$$] Finished Updating Ubuntu-Backports

Skripte ausführbar machen

sudo chmod 700 mirror*bash 

Die Verwendung der Skripte mit anderen Ubuntu-Versionen funktioniert analog zu diesen hier. Dazu muss in der Regel im "-dist"-Teil preicse durch lucid oder oneiric usw. ... ersetzt werden.

Schlüssel importieren

Wer sich mit dem technischen Hintergrund von GPG-Schlüsseln und dem Web of Trust noch nicht auseinandergesetzt hat, dem sei dies an dieser Stelle dringend ans Herz gelegt.

debmirror überprüft anhand des GPG-Schlüssels die Releasedaten. Aus diesem Grund wird noch der Schlüsselbund der Ubuntu-Rollen benötigt. Man tut sich selber keinen Gefallen, wenn man diese Überprüfung ausschaltet.

su mirror -c "gpg --no-default-keyring --keyring trustedkeys.gpg --import /usr/share/keyrings/ubuntu-archive-keyring.gpg" 

Benutzung

Spiegeln

Achtung!

Das Spiegeln erzeugt etwa 20 Gigabyte an Daten und bedeutet entsprechend ein hohes Downloadvolumen und Last auf dem Server, der gespiegelt wird. Daher sollte die Anleitung wirklich nur für einen Spiegel genutzt werden, der alle Pakete bereitstellen muss. Für den Heimgebrauch ist apt-proxy vollkommen ausreichend!

Jetzt kann man mit dem Skript mirror-ubuntu.bash den allgemeinen Mirror und mit mirror-ubuntu-security.bash den Security-Mirror spiegeln. Die Updates werden mit mirror-ubuntu-updates.bash und die Backports entsprechend mit mirror-ubuntu-backports.bash geholt.

Die Skripte sollten vom dem Benutzer mirror aufgerufen werden, damit die neuen Verzeichnisse dem richtigen Benutzer gehören:

su mirror -c "/var/www/mirror/bin/mirror-ubuntu.bash"
su mirror -c "/var/www/mirror/bin/mirror-ubuntu-security.bash"
su mirror -c "/var/www/mirror/bin/mirror-ubuntu-updates.bash"
su mirror -c "/var/www/mirror/bin/mirror-ubuntu-backports.bash" 

Lokal

Der lokale Mirror kann mit diesen Einträgen in der /etc/apt/sources.list benutzt werden:

deb file:/var/www/mirror/ubuntu preicse universe multiverse main restricted
deb file:/var/www/mirror/ubuntu-security precise-security universe main restricted multiverse
deb file:/var/www/mirror/ubuntu-updates precise-updates main restricted universe multiverse
deb file:/var/www/mirror/ubuntu-backports precise-backports main restricted universe multiverse

Zugriff

Apache

Um einen Mirror für anderere Rechner anzubieten, ist es vorteilhaft dies über Apache zu erledigen, da so einfache Regeln für den Paketfilter möglich sind.

In der /etc/apache2/httpd.conf kann ein Eintrag, abhängig von sonstiger Verwendung und Konfiguration des Apache, wie folgt aussehen.

<Directory /mirror>
      Options Indexes FollowSymLinks
      AllowOverride None
      Order allow,deny
      allow from all
</Directory>

In die /etc/apt/sources.list der Clients ist dann folgendes einzutragen:

 deb http://<Rechner>/mirror/ubuntu preicse universe multiverse main restricted
 deb http://<Rechner>/mirror/ubuntu-security precise-security universe main restricted multiverse
 deb http://<Rechner>/mirror/ubuntu-updates precise-updates main restricted universe multiverse
 deb http://<Rechner>/mirror/ubuntu-backports precise-backports main restricted universe multiverse

Wobei <Rechner> durch die IP-Adresse oder den Rechnernamen des Mirrors zu ersetzen ist.

ProFTPD

Um einen anonymen ftp-Zugang zum Mirror anzubieten, kann beispielsweise ProFTPD verwendet werden. Die /etc/proftpd.conf ist dazu in einem Editor [3] mit administrativen Rechten [5] wie folgt zu ergänzen.

<Anonymous ~mirror>
   User                         ftp
   Group                        nogroup
   UserAlias                    anonymous ftp
   RequireValidShell            off
   # Anzahl der anonymen Logins begrenzen
   MaxClients                   20
   DisplayLogin                 welcome.msg
   DisplayFirstChdir            .message
   # Schreibrechte in der anonymen chroot verbieten
   <Directory *>
     <Limit WRITE>
       DenyAll
     </Limit>

   </Directory>
</Anonymous>

In die /etc/apt/sources.list der Clients ist dann Folgendes einzutragen:

 deb ftp://<Rechner>/mirror/ubuntu precise universe multiverse main restricted
 deb ftp://<Rechner>/mirror/ubuntu-security preicse-security universe main restricted multiverse
 deb ftp://<Rechner>/mirror/ubuntu-updates precise-updates main restricted universe multiverse
 deb ftp://<Rechner>/mirror/ubuntu-backports precise-backports main restricted universe multiverse

Wobei <Rechner> durch die IP-Adresse oder den Rechnernamen des Mirrors zu ersetzen ist.

Regelmäßige Aktualisierung

In die Datei /etc/cron.allow muss der Benutzer mirror in die nächste freie Zeile eingetragen werden, damit mirror auch eine eigene cron-Tabelle anlegen darf. Dazu wird die Datei in einem Editor [3] mit administrativen Rechten bearbeitet [5].

Anschließend wird die cron-Tabelle für das automatische Aktualisieren des Spiegels angelegt.

sudo crontab -e -u mirror 
 0 1 * * * bash -l -c "/var/www/mirror/bin/mirror-ubuntu.bash"
 0 3 * * * bash -l -c "/var/www/mirror/bin/mirror-ubuntu-security.bash"
 0 5 * * * bash -l -c "/var/www/mirror/bin/mirror-ubuntu-updates.bash"
 0 7 * * * bash -l -c "/var/www/mirror/bin/mirror-ubuntu-backports.bash"

Das sorgt dafür, dass die "Haupt-Pakete" um 01:00 Uhr nachts aktualisiert werden, die Sicherheitsupdates um 03:00 Uhr, die nicht-kritischen Updates um 05:00 Uhr und die Backports um 07:00 geholt werden.

Nachtrag

  • Grundlage für dieses Dokument war die Anleitung von Andreas Kraus {de} aus der Linux Usergroup Untermain.

  • Fehler oder Korrekturen jederzeit gerne an Lux.

ubuntuusers.local › WikiUbuntu-Mirror