Einer der Gründe, warum Sie die Einrichtung eines lokalen apt-Repository-Servers in Betracht ziehen könnten, ist die Minimierung der erforderlichen Bandbreite, wenn Sie mehrere Instanzen von Ubuntu aktualisieren müssen. Nehmen Sie zum Beispiel eine Situation, in der Sie etwa 20 Server haben, die alle zweimal pro Woche aktualisiert werden müssen. Sie könnten eine Menge Bandbreite sparen, da Sie lediglich alle Ihre Systeme über ein LAN von Ihrem lokalen Repository-Server aktualisieren müssen.
In dieser Anleitung erfahren Sie, wie Sie einen lokalen apt-Repository-Server unter Ubuntu 20.04 LTS einrichten.
Voraussetzungen
- Ubuntu 20.04 LTS-System
- Apache-Webserver
- Mindestens 170 GB freier Speicherplatz auf dem Dateisystem /var/www/html
- Stabile Internetverbindung
Schritt 1) Erstellen Sie einen lokalen Apache-Webserver
Melden Sie sich zunächst bei Ihrem Ubuntu 20.04 an und richten Sie den Apache-Webserver wie gezeigt ein.
$ sudo apt install -y apache2
Aktivieren Sie den Apache2 - Dienst , damit er während des Neustarts bestehen bleibt . Führen Sie folgenden Befehl aus
$ sudo systemctl enable apache2
Das standardmäßige Dokumentenstammverzeichnis von Apache befindet sich im Pfad /var/www/html. Wir werden später ein Repository-Verzeichnis in diesem Pfad erstellen, das die benötigten Pakete enthält.
Schritt 2) Erstellen Sie ein Paket-Repository-Verzeichnis
Als nächstes erstellen wir ein lokales Repository-Verzeichnis namens ubuntu im Pfad /var/www/html.
$ sudo mkdir -p /var/www/html/ubuntu
Legen Sie die erforderlichen Berechtigungen für das oben erstellte Verzeichnis fest.
$ sudo chown www-data:www-data /var/www/html/ubuntu
Schritt 3) apt-mirror installieren
Der nächste Schritt ist die Installation des apt-mirror-Pakets. Nach der Installation dieses Pakets erhalten wir den apt-mirror-Befehl oder das Tool, das die entfernten Debian-Pakete herunterlädt und mit dem lokalen Repository auf unserem Server synchronisiert. Um es also zu installieren, führen Sie Folgendes aus
$ sudo apt update $ sudo apt install -y apt-mirror
Schritt 4) Repositories zum Spiegeln oder Synchronisieren konfigurieren
Sobald apt-mirror installiert ist, wird seine Konfiguration „/etc/apt/mirrror.list“ automatisch erstellt. Diese Datei enthält eine Liste von Repositorys, die heruntergeladen oder im lokalen Ordner unseres Ubuntu-Servers synchronisiert werden. In unserem Fall ist der lokale Ordner „/var/www/html/ubuntu/“. Bevor Sie Änderungen an dieser Datei vornehmen, erstellen wir zuerst eine Sicherungskopie.
$ sudo cp /etc/apt/mirror.list /etc/apt/mirror.list-bak
Bearbeiten Sie nun die Datei mit dem vi-Editor und aktualisieren Sie base_path und Repositories wie unten gezeigt.
$ sudo vi /etc/apt/mirror.list ############# config ################### set base_path /var/www/html/ubuntu set nthreads 20 set _tilde 0 ############# end config ############## deb http://archive.ubuntu.com/ubuntu focal main restricted universe \ multiverse deb http://archive.ubuntu.com/ubuntu focal-security main restricted \ universe multiverse deb http://archive.ubuntu.com/ubuntu focal-updates main restricted \ universe multiverse clean http://archive.ubuntu.com/ubuntu
Speichern und beenden Sie die Datei.
Falls Sie vielleicht bemerkt haben, dass ich Ubuntu 20.04 LTS-Paket-Repositorys verwendet und die src-Paket-Repositorys auskommentiert habe, da ich nicht genügend Speicherplatz auf meinem System habe. Wenn Sie auch src-Pakete herunterladen oder synchronisieren möchten, kommentieren Sie die Zeilen aus, die mit „deb-src“ beginnen.
Schritt 5) Starten Sie die Spiegelung der Remote-Repositories in den lokalen Ordner
Bevor Sie mit dem Spiegeln oder Synchronisieren beginnen, kopieren Sie zuerst das Skript postmirror.sh in den Ordner /var/www/html/ubuntu/var mit dem folgenden cp-Befehl.
$ sudo mkdir -p /var/www/html/ubuntu/var $ sudo cp /var/spool/apt-mirror/var/postmirror.sh /var/www/html/ubuntu/var
Jetzt ist es an der Zeit, die Pakete aus Remote-Repositories in den lokalen Ordner unseres Systems zu spiegeln. Unten ausführen:
$ sudo apt-mirror
Der obige Befehl kann auch im Hintergrund mit dem folgenden nohup-Befehl gestartet werden,
$ nohup sudo apt-mirror &
Verwenden Sie unten, um den Fortschritt der Spiegelung zu überwachen,
$ tail nohup.out
In Ubuntu 20.04 LTS synchronisiert apt-mirror das CNF-Verzeichnis und seine Dateien, daher müssen wir den Ordner und seine Dateien manuell herunterladen und kopieren. Um also das manuelle Herunterladen des CNF-Verzeichnisses zu vermeiden, erstellen Sie ein Shell-Skript mit dem folgenden Inhalt,
$ vi cnf.sh #!/bin/bash for p in "${1:-focal}"{,-{security,updates}}\ /{main,restricted,universe,multiverse};do >&2 echo "${p}" wget -q -c -r -np -R "index.html*"\ "http://archive.ubuntu.com/ubuntu/dists/${p}/cnf/Commands-amd64.xz" wget -q -c -r -np -R "index.html*"\ "http://archive.ubuntu.com/ubuntu/dists/${p}/cnf/Commands-i386.xz" done
Speichern und schließen Sie das Skript.
Führen Sie das Skript aus, um das CNF-Verzeichnis und seine Dateien herunterzuladen.
$ chmod +x cnf.sh $ bash cnf.sh
Dieses Skript erstellt einen Ordner mit dem Namen „archive.ubuntu.com“ im aktuellen Arbeitsverzeichnis. Kopieren Sie diesen Ordner in den Spiegelordner,
$ sudo cp -av archive.ubuntu.com /var/www/html/ubuntu/mirror/
Hinweis: Wenn wir das cnf-Verzeichnis nicht synchronisieren, erhalten wir auf Client-Rechnern folgende Fehler. Um diese Fehler zu beheben, müssen wir das obige Skript erstellen und ausführen.
E: Failed to fetch http://x.x.x.x/ubuntu/mirror/archive.ubuntu.com/ubuntu/dists/\ focal/restricted/cnf/Commands-amd64 404 Not Found [IP:169.144.104.219 80] E: Failed to fetch http://x.x.x.x/ubuntu/mirror/archive.ubuntu.com/ubuntu/dists/\ focal-updates/main/cnf/Commands-amd64 404 Not Found [IP:169.144.104.219 80] E: Failed to fetch http://x.x.x.x/ubuntu/mirror/archive.ubuntu.com/ubuntu/dists/\ focal-security/main/cnf/Commands-amd64 404 Not Found [IP:169.144.104.219 80]abzurufen
Automatische Repositories-Synchronisierung planen
Konfigurieren Sie einen Cron-Job, um unsere lokalen apt-Repositories automatisch zu aktualisieren. Es wird empfohlen, diesen Cronjob täglich nachts einzurichten.
Führen Sie „crontab -e“ aus und fügen Sie den folgenden Befehl hinzu, der täglich um 1:00 Uhr nachts ausgeführt werden soll.
$ sudo crontab -e 00 01 * * * /usr/bin/apt-mirror
Speichern und schließen.
Hinweis:Falls die Firewall auf Ubuntu Server läuft, erlauben Sie Port 80 mit dem folgenden Befehl
$ sudo ufw allow 80
Schritt 6) Zugriff auf das lokale APT-Repository über einen Webbrowser
Um über einen Webbrowser auf unser lokal konfiguriertes apt-Repository zuzugreifen, geben Sie die folgende URL ein:
http://
Schritt 7) Konfigurieren Sie den Ubuntu 20.04-Client für die Verwendung des lokalen apt-Repository-Servers
Um zu testen und zu überprüfen, ob unser apt-Repository-Server gut funktioniert oder nicht, habe ich ein anderes Ubuntu 20.04 lts-System, auf dem ich die Datei /etc/apt/sources.list aktualisiere, sodass der apt-Befehl auf lokale Repositorys statt auf Remote zeigt.
Melden Sie sich also beim System an und ändern Sie Folgendes in der sources.list
http://archive.ubuntu.com/ubuntu to http://169.144.104.219/ubuntu/mirror/archive.ubuntu.com/ubuntu
Hier ist „169.144.104.219“ die IP-Adresse meines apt-Repository-Servers, ersetzen Sie diese IP-Adresse, die zu Ihrer Umgebung passt.
Stellen Sie außerdem sicher, dass Sie alle anderen Repositories auskommentieren, die nicht auf unserem apt-Repository-Server gespiegelt sind. Nachdem Sie also die Änderungen in der Datei sources.list vorgenommen haben, würde sie wie folgt aussehen:
Führen Sie jetzt den Befehl „apt update“ aus, um zu überprüfen, ob der Clientcomputer Updates von unserem lokalen apt-Repository-Server erhält,
$ sudo apt update
Die perfekte, obige Ausgabe bestätigt, dass der Client-Computer erfolgreich eine Verbindung zu unserem Repository herstellen kann, um die Pakete und Updates abzurufen. Das ist alles aus diesem Artikel. Ich hoffe, diese Anleitung hilft Ihnen beim Einrichten eines lokalen apt-Repository-Servers auf einem Ubuntu 20.04-System.
Auch lesen :14 nützliche „ls“-Befehlsbeispiele in Linux