[[Vorlage(Archiviert, )]] [[Vorlage(Fortgeschritten)]] {{{#!vorlage Wissen [:Pakete_installieren: Installation von Programmen] [:Terminal: Ein Terminal öffnen] [:Editor: Einen Editor öffnen] [:Apache: Installation von Apache] [:sudo: Programme als Adminstrator ausführen] [:Rechte: Rechte für Dateien und Ordner ändern] }}} [[Inhaltsverzeichnis(2)]] 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 -[:Paketquellen: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 [:Lokale_Paketquellen#Proxies-Caches-Buendeln-von-Updates:Proxy/Cache] vollkommen ausreichend. ##aasche: nicht mehr online ##Grundlage für dieses Dokument war die Anleitung von Andreas Kraus aus der Linux Usergroup Untermain. = Installation = Folgende Pakete müssen installiert [1] werden: {{{#!vorlage Paketinstallation debmirror ubuntu-keyring }}} = Vorbereitungen = == Benutzer und Gruppe == Für debmirror wird der Benutzer `mirror` und die gleichnamige Gruppe angelegt. {{{#!vorlage Befehl 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. {{{#!vorlage Befehl 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 [:Precise: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''': {{{#!code bash #!/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''': {{{#!code bash #!/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''': {{{#!code bash #!/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''': {{{#!code bash #!/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 === {{{#!vorlage Befehl sudo chmod 700 mirror*bash }}} == Schlüssel importieren == Wer sich mit dem [:GnuPG/Technischer_Hintergrund:technischen Hintergrund] von GPG-Schlüsseln und dem [:GnuPG/Web_of_Trust: 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. {{{#!vorlage Befehl su mirror -c "gpg --no-default-keyring --keyring trustedkeys.gpg --import /usr/share/keyrings/ubuntu-archive-keyring.gpg" }}} = Benutzung = == Spiegeln == {{{#!vorlage Warnung 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: {{{#!vorlage befehl 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 [:Precise: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. {{{ Options Indexes FollowSymLinks AllowOverride None Order allow,deny allow from all }}} In die '''/etc/apt/sources.list''' der Clients ist dann folgendes einzutragen (als `Version` bitte den jeweiligen Codenamen, z.B. `precise` für [:Precise:Ubuntu 12.04] und für `` die IP-Adresse oder den Rechnernamen des Mirrors eintragen): {{{ deb http:///mirror/ubuntu VERSION universe multiverse main restricted deb http:///mirror/ubuntu-security VERSION-security universe main restricted multiverse deb http:///mirror/ubuntu-updates VERSION-updates main restricted universe multiverse deb http:///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. {{{ 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 DenyAll }}} In die '''/etc/apt/sources.list''' der Clients ist dann Folgendes einzutragen (als `Version` bitte den jeweiligen Codenamen, z.B. `precise` für [:Precise:Ubuntu 12.04] und für `` die IP-Adresse oder den Rechnernamen des Mirrors eintragen): {{{ deb ftp:///mirror/ubuntu VERSION universe multiverse main restricted deb ftp:///mirror/ubuntu-security VERSION-security universe main restricted multiverse deb ftp:///mirror/ubuntu-updates VERSION-updates main restricted universe multiverse deb ftp:///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: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. {{{#!vorlage Befehl 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:] {Übersicht} Übersichtsartikel # tag: Community, Paketverwaltung, Server