Diese Anleitung zeigt, wie man einen lokalen Repository-Server basierend auf Ubuntu Bionic konfiguriert, aber er kann an eine frühere Version von Ubuntu oder sogar an jede Distribution angepasst werden, die Aptitude als Hauptpaketverwaltungssystem verwendet, wie Debian oder Mint. Normalerweise möchten Sie möglicherweise ein lokales Repository einrichten, um Internetbandbreite zu sparen.
In diesem Tutorial lernen Sie:
- So installieren Sie die erforderliche Software auf dem Server
- So wählen Sie aus, welche Repositories auf dem Server gespiegelt werden sollen
- So spiegeln Sie ausgewählte Repositories lokal auf dem Server
- So konfigurieren Sie den Linux-Client für die Verwendung des lokalen Repository-Servers
Wie oben erwähnt, ziehen wir für dieses Tutorial keinen öffentlichen oder Länder-Mirror in Betracht, aber wenn Sie es implementieren möchten, bedenken Sie Folgendes:
- Ihre Netzwerkbandbreite wird sehr wichtig
- Sie müssen das Repository in der Ubuntu-Spiegelliste registrieren
- Du musst den Mirror mindestens viermal am Tag synchronisieren
- Da Sie alle vorherigen Versionen spiegeln müssen, benötigen Sie möglicherweise 2 TB oder mehr Speicherplatz
Aktualisieren der Paketliste aus den lokalen Repos.
Softwareanforderungen und verwendete Konventionen
Kategorie | Anforderungen, Konventionen oder verwendete Softwareversion |
---|---|
System | Ubuntu 18.04.2 (Bionic Beaver) LTS |
Software | Apache http 2.x, apt-mirror |
Andere | Privilegierter Zugriff auf Ihr Linux-System als root oder über sudo Befehl, Mindestens 200 GB Speicherplatz für das Repository |
Konventionen | # – erfordert, dass bestimmte Linux-Befehle mit Root-Rechten ausgeführt werden, entweder direkt als Root-Benutzer oder durch Verwendung von sudo Befehl$ – erfordert, dass bestimmte Linux-Befehle als normaler, nicht privilegierter Benutzer ausgeführt werden |
Wie man Schritt für Schritt einen Ubuntu-Repository-Server erstellt
- Installieren der erforderlichen Software auf dem Server.
Als ersten Schritt müssen wir den Apache HTTP Server installieren, der sich unter dem Paket namens
apache2
befindet , mit dem Befehl:$ sudo apt install apache2
Installieren von Apache HTTPStellen Sie dann sicher, dass der Dienst beim Start ausgeführt wird:
$ sudo systemctl enable apache2
Wenn alles in Ordnung ist, wechseln wir in das Standard-DocumentRoot-Verzeichnis (das /var/www/html ist).
Dort können wir dann das Unterverzeichnis/var/www/html/ubuntu
und ordnen Sie sie dem entsprechenden Besitzer zu, in diesem Fallwww-data
(der Benutzer, unter dem Apache HTTP läuft).$ sudo mkdir -p /var/www/html/ubuntu $ sudo chown www-data:www-data /var/www/html/ubuntu
Es wird dringend empfohlen, dass sich das DocumentRoot oder zumindest der Ubuntu-Unterordner auf einem Dateisystem befindet, das zu einem logischen Volume gehört; Auf diese Weise können wir es ohne Ausfallzeit online vergrößern.
Zum Zeitpunkt meiner Tests sind 171,5 GiB das absolute Minimum an Speicherplatz, der benötigt wird, wenn auch die src-Pakete gespiegelt werden; Um für die Zukunft zu planen, wird daher empfohlen, mindestens 300 GiB Festplattenspeicher zu haben.Dies ist hauptsächlich eine Schätzung, wenn Sie sich für eine Version von Ubuntu entscheiden. Wenn Pakete für verschiedene Versionen gespiegelt werden müssen, erhöht sich der Platzbedarf erheblich.
- Das Hauptwerkzeug, mit dem wir ein lokales Repository erstellen können, ist
apt-mirror
, um es zu installieren, führen Sie Folgendes aus:$ sudo apt install apt-mirror
Falls das Paket nicht gefunden wird, stellen Sie sicher, dass Sie zuerst die Paketliste aktualisieren mit:
$ sudo apt update
- Auswählen, welche Repositories auf dem Server gespiegelt werden sollen.
Sobald apt-mirror installiert ist, können wir eine Sicherungskopie seiner Konfigurationsdatei
/etc/apt/mirror.list
erstellen , danach vergewissern Sie sich, dass die Zeile mit der Optionset base_path
zeigt auf den richtigen Pfad für unser Repository (standardmäßig /var/spool/apt-mirror ).$ sudo cp /etc/apt/mirror.list /etc/apt/mirror.list.org
Sie können also jetzt Ihren bevorzugten Editor (z. B. vi oder nano) verwenden, um die Option base_path in der Datei mirror.list in
Konfigurationsdatei mirror.list/var/www/html/ubuntu
zu ändern; Sie müssen auch angeben, dass Sie die Repos der bionischen Distribution spiegeln (entsprechend ändern, wenn Sie eine andere Ubuntu-Version haben), immer in der Konfigurationsdatei mirror.list.Falls Sie nicht viel Speicherplatz auf der Festplatte haben, können Sie src-Pakete nicht spiegeln; Sie werden also die entsprechenden Zeilen auskommentieren:
Konfigurationsdatei mirror.listAls nächstes kopieren Sie ein wichtiges Skript nach
/var/www/html/ubuntu/var/
$ sudo mkdir -p /var/www/html/ubuntu/var $ sudo cp /var/spool/apt-mirror/var/postmirror.sh /var/www/html/ubuntu/var/
- Spiegeln der ausgewählten Repositories lokal auf dem Server.
Jetzt ist es an der Zeit, einen lokalen Spiegel zu erstellen, denken Sie daran, dass eine anfängliche Spiegelung (von
archive.ubuntu.com
nur für dieses Tutorial) kann viel Zeit in Anspruch nehmen und Ihre Verbindung verlangsamen, daher würde ich vorschlagen, dass Sie diesen Job nachts starten.
Um mit der Spiegelung der Remote-Repos-Pakete auf den lokalen Server zu beginnen, führen Sie einfach den folgenden Befehl aus:$ sudo apt-mirror
Bei Bedarf können Sie diesen Vorgang unterbrechen (mit der klassischen STRG+C-Kombination) und später neu starten; es wird dort fortgesetzt, wo es verlassen wurde.
Irgendwann kommen wir an den Punkt, an dem die Skripte clean.sh und postmirror.sh ausgeführt werden, das ist ein Zeichen dafür, dass der Spiegelungsprozess abgeschlossen ist.
Ende des Spiegelungsvorgangs. - Konfigurieren des automatischen Synchronisierungsprozesses mithilfe des Cron-Schedulers.
Nachdem unsere erste Synchronisierung abgeschlossen ist, müssen wir einen Cron-Job erstellen, um sicherzustellen, dass wir automatisch ein aktuelles lokales Repository haben. Zum Beispiel möchten wir, dass diese Aufgabe jede Nacht um 2:00 Uhr ausgeführt wird und daher:
$ sudo crontab -e
Dann bearbeiten wir die Crontab, um die folgende Zeile hinzuzufügen:
00 02 * * * /usr/bin/apt-mirror
Und speichern und beenden (mit vi, nano oder dem eingestellten Editor).
Konfigurieren des Linux-Clients zur Verwendung des lokalen Repository-Servers
- Konfigurieren der lokalen Repository-Liste.
In jedem Client, der unser lokales Repository verwenden soll, müssen wir die Konfigurationsdatei
/etc/apt/sources.list
bearbeiten Angeben unseres lokalen Repos und Deaktivieren eines entfernten Repos.In unserem Fall wurden die folgenden Repositories heruntergeladen:
Lokale Repositories des ServersHINWEIS
Es wird empfohlen, jede Zeile in der
/etc/apt/sources.list
zu kommentieren Datei, die auf Repositories verweist, die nicht auf unserem Server gespiegelt sind, zum Beispiel in diesem Fall jede Zeile, die mitdeb-src
beginnt und enthältbionic-backports
wurden kommentiert.Wenn Sie dies nicht tun, erhalten Sie möglicherweise die Fehlermeldung
Release file has not found
beim Ausführen des Befehls apt update auf dem Client.Als erstes ersetzen wir jeden String archive.ubuntu.com durch unsere lokale Spiegel-IP, in diesem Fall 10.0.0.42. Natürlich kann Ihre lokale IP-Adresse anders sein.
$ sudo sed -i.bak0 "s/archive\.ubuntu\.com/10\.0\.0\.\42/g" /etc/apt/sources.list
Dieser Befehl erstellt die Sicherungsdatei
/etc/apt/sources.list.bak0
und ersetzen Sie allearchive.ubuntu.com
Zeichenfolge mit10.0.0.42
.Eine weitere Anpassung läuft wieder sed auf diese Weise ab:
$ sudo sed -i.bak1 "s/ubuntu/ubuntu\/mirror\/archive\.ubuntu\.com\/ubuntu/g" \ /etc/apt/sources.list
Dies ist notwendig, da apt-mirror den Pfad
mirror/archive.ubuntu.com/ubuntu
anhängt zu unserem Basisweg. Hier wird eine weitere Sicherungsdatei erstellt/etc/apt/sources.list.bak1.
Für die Zwecke dieses Tutorials spiegeln wir nur Pakete oder Repositories von archive.ubuntu.com; Natürlich können Sie andere inoffizielle Repositories in der Datei mirror.list auf dem Server hinzufügen, aber dann müssen Sie apt-mirror dort erneut ausführen und auf jedem Client die Datei sources.list entsprechend bearbeiten.
- Lokalen Repository-Index aktualisieren.
Jetzt müssen Sie sicherstellen, dass der Port 80 nicht von der Client-Firewall blockiert wird, und dann können Sie Folgendes ausführen:$ sudo apt update
Und schon kann es losgehen.
Aktualisieren der Paketliste aus den lokalen Repos.
Schlussfolgerung
Das Einrichten eines lokalen Repositorys in Ubuntu ist nicht schwierig, wie es scheinen mag, und es kann sich als nützlich erweisen, vorausgesetzt, Sie verfügen über ausreichende lokale Netzwerk- und Festplattenressourcen.