Ubuntu-Mirror
Archivierte Anleitung
Dieser Artikel wurde archiviert. Das bedeutet, dass er nicht mehr auf Richtigkeit überprüft oder anderweitig gepflegt wird. Der Inhalt wurde für keine aktuell unterstützte Ubuntu-Version getestet. Wenn du Gründe für eine Wiederherstellung siehst, melde dich bitte in der Diskussion zum Artikel. Bis dahin bleibt die Seite für weitere Änderungen gesperrt.
Artikel für fortgeschrittene Anwender
Dieser Artikel erfordert mehr Erfahrung im Umgang mit Linux und ist daher nur für fortgeschrittene Benutzer gedacht.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Ziel des Artikels ist die Einrichtung eines Spiegels (im englischen "Mirror" genannt) für die offiziellen Paketquellen einer bestimmten Ubuntu-Version, bei dem die Pakete über einen Web- oder Dateiserver abgerufen werden können.
Dabei sollen die vier Paketquellen (hier Ubuntu 12.04 mit -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. 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.
Installation¶
Folgende Pakete müssen installiert [1] werden:
- debmirror 
- ubuntu-keyring 
Befehl zum Installieren der Pakete:
sudo apt-get 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 12.04 aufgeführt, die dazu benutzt werden können. Die Verwendung der Skripte mit anderen Ubuntu-Versionen funktioniert analog. Dazu muss bei der Option "--dist=..." precise durch trusty oder xenial usw. ersetzt werden.
Der Befehl logger -t in den Skripten sorgt für einen Eintrag im syslog (siehe auch logger).
- /var/www/mirror/bin/mirror-ubuntu.bash: - 1 2 3 4 5 6 7 8 9 10 - #!/bin/bash # # Spiegelt die Haupt-Ubuntu-Repostiories fuer Ubuntu 12.04 # 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 
- /var/www/mirror/bin/mirror-ubuntu-security.bash: - 1 2 3 4 5 6 7 8 9 10 - #!/bin/bash # # Spiegelt die Ubuntu-Security-Repositories fuer Ubuntu 12.04 # 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 
- /var/www/mirror/bin/mirror-ubuntu-updates.bash: - 1 2 3 4 5 6 7 8 9 10 - #!/bin/bash # # Spiegelt die Ubuntu-Update-Repositories fuer Ubuntu 12.04 # 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 
- /var/www/mirror/bin/mirror-ubuntu-backports.bash: - 1 2 3 4 5 6 7 8 9 10 - #!/bin/bash # # Spiegelt die Ubuntu-Backport-Repositories fuer Ubuntu 12.04 # 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
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 Release-Daten. 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.
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 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 (als Version bitte den jeweiligen Codenamen, z.B. precise für Ubuntu 12.04 eintragen):
deb file:/var/www/mirror/ubuntu VERSION universe multiverse main restricted deb file:/var/www/mirror/ubuntu-security VERSION-security universe main restricted multiverse deb file:/var/www/mirror/ubuntu-updates VERSION-updates main restricted universe multiverse deb file:/var/www/mirror/ubuntu-backports VERSION-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 (als Version bitte den jeweiligen Codenamen, z.B. precise für Ubuntu 12.04 und für <Rechner> die IP-Adresse oder den Rechnernamen des Mirrors eintragen):
deb http://<Rechner>/mirror/ubuntu VERSION universe multiverse main restricted deb http://<Rechner>/mirror/ubuntu-security VERSION-security universe main restricted multiverse deb http://<Rechner>/mirror/ubuntu-updates VERSION-updates main restricted universe multiverse deb http://<Rechner>/mirror/ubuntu-backports VERSION-backports main restricted universe multiverse
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 Root-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 (als Version bitte den jeweiligen Codenamen, z.B. precise für Ubuntu 12.04 und für <Rechner> die IP-Adresse oder den Rechnernamen des Mirrors eintragen):
deb ftp://<Rechner>/mirror/ubuntu VERSION universe multiverse main restricted deb ftp://<Rechner>/mirror/ubuntu-security VERSION-security universe main restricted multiverse deb ftp://<Rechner>/mirror/ubuntu-updates VERSION-updates main restricted universe multiverse deb ftp://<Rechner>/mirror/ubuntu-backports VERSION-backports main restricted universe multiverse
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.
Links¶
- Lokale Paketquellen Übersichtsartikel