Vermeiden Sie Pacman-Kopfschmerzen unter Arch Linux, indem Sie die Aktualisierung der Mirror-Liste automatisieren


Linux
2024-02-12T13:00:14Z

Das Wichtigste in Kürze

  • Mirrors sind Server, die Softwarepakete in Linux-Repositories enthalten. Die Aktualität Ihrer Mirror-Liste ist entscheidend für Anwendungsinstallationen und Systemaktualisierungen.
  • Zur manuellen Aktualisierung der Arch-Mirror-Liste müssen Sie eine Liste der Mirrors in Ihrer Region erstellen, diese in eine Datei einfügen und für pacman speichern.
  • Reflector ist ein Dienstprogramm, das Mirror-Listen erstellt und die Mirrorlist-Datei aktualisiert. Es kann auf der Kommandozeile oder als Dienst mit anpassbaren Optionen verwendet werden.

Mirrors sind Server, die die Repositories einer Linux-Distribution replizieren. Arch Linux hat viele Mirrors, die rund um den Globus verteilt sind. Wir zeigen Ihnen zwei Möglichkeiten, wie Sie auswählen können, welche Mirrors Ihr Arch Linux Computer verwendet.

Warum Mirrors wichtig sind

Alle Softwarepakete, die den Benutzern einer Linux-Distribution zur Verfügung stehen, werden in Repositories gespeichert. Repositories sind einfach Server, die über das Internet zugänglich sind. Wenn Sie eine Anwendung installieren, muss Ihr Paketmanager eine Verbindung zu einem Repository herstellen, damit er die Installationsdateien abrufen kann.

Wie bei allen Cloud-basierten Ressourcen gibt es auch bei Repositorys Probleme mit der Bandbreite und Verfügbarkeit. Zu viele Verbindungen und zu viel Netzwerkverkehr können dazu führen, dass der Server ins Stocken gerät und träge wird. Hardwareausfälle oder geplante Wartungsarbeiten können ein Repository außer Betrieb setzen.

Die Distributionen nutzen ein Netzwerk von Nachahmer-Repositories, die auf der ganzen Welt verteilt sind. Diese ermöglichen schnellere Verbindungen zu den Benutzern, indem sie Repositories in ihren Regionen bereitstellen, anstatt alle zu zwingen, sich mit dem Hauptrepository zu verbinden.

Es ist wichtig, dass die Liste der Spiegelserver, die Ihr Computer verwendet, auf dem neuesten Stand ist, da Anwendungsinstallationen und Systemaktualisierungen von ihnen abhängen.

Manuelles Aktualisieren der Arch-Mirror-Liste

Standardmäßig aktualisiert Arch die Mirror-Liste nicht automatisch. Bei der Installation wird eine Mirror-Liste erstellt, aber wenn Sie nicht selbst aktiv werden, wird diese Liste nie geändert.

Das manuelle Aktualisieren der Liste funktioniert zwar, ist aber nicht sehr bequem. Eine Automatisierung des Prozesses ist die beste Lösung. Aber Sie können, wenn Sie wollen, Ihre Mirror-Liste von Hand aktualisieren.

Der Ort, an dem Sie beginnen sollten, ist der Arch Linux Pacman Mirrorlist Generator. Unser Ziel ist es, eine Liste der Spiegel in Ihrer Region und einige aus anderen Regionen für Redundanz zu erhalten.

The Arch Linux mirror list generator web page

Ich wähle "United Kingdom" aus der scrollenden Liste und "HTTPS" und "IPV4" aus den Checkboxen. Ich habe das Kontrollkästchen "Use Mirror Status" aktiviert, so dass nur aktive Mirrors in den Ergebnissen enthalten sind.

Um die Ergebnisse zu sehen, klicken Sie auf die Schaltfläche "Liste generieren".

Die passenden Mirrors werden aufgelistet. Kopieren Sie diesen Text und fügen Sie ihn in Ihren Editor ein. Beachten Sie, dass alle Zeilen mit einem Rautezeichen "#" beginnen, d.h. sie werden als Kommentare behandelt. Um einen Mirror zu aktivieren, entfernen Sie das Rautenzeichen am Anfang der entsprechenden Zeile.

A generated mirror list

Sie können diesen Vorgang für andere Regionen wiederholen, indem Sie die Ergebnisse jedes Mal in Ihren Editor einfügen. Ich habe auch Mirrors in Deutschland und Schweden ausgewählt. Auf diese Weise wird pacman versuchen, die Spiegel in Schweden und Deutschland zu benutzen, falls die britischen Spiegel nicht funktionieren oder nicht erreichbar sind.

pacman liest seine Spiegelserver aus einer Datei namens "/etc/pacman.d/mirrorlist" Sie müssen diese Datei bearbeiten und ihren Inhalt durch die neue Liste ersetzen.

sudo gedit /etc/pacman.d/mirrorlist

Editing the mirrolist file

Ersetzen Sie "gedit" durch Ihren Lieblingseditor. Kopieren Sie die soeben erstellte Liste und fügen Sie sie in die Datei mirrorlist ein, wobei Sie den ursprünglichen Inhalt ersetzen. Speichern Sie die Datei und schließen Sie Ihren Editor.

pacman wird nun unsere neue Liste verwenden.

Was ist Reflector, und was macht es?

Reflector ist ein Dienstprogramm zum Erstellen von Mirrorlisten und zum optionalen Aktualisieren der Mirrorlistendatei. Sie können es auf der Kommandozeile oder als Dienst verwenden.

Sie können ihm Parameter übergeben, um die Regionen auszuwählen, aus denen Sie Mirrors verwenden wollen, und Sie können die Ergebnisse z.B. nach der Download-Geschwindigkeit sortieren lassen.

In Arch Linux ist Reflector nicht standardmäßig installiert, aber in anderen Arch-basierten Distributionen könnte es das sein.

Installation von Reflector unter Arch Linux

Die Installation von Reflector ist einfach, solange Sie eine funktionierende Mirror-Liste haben. Wenn Sie keine haben, wird pacman nicht funktionieren. In diesem Fall müssen Sie die oben genannten Schritte durchführen, um manuell eine funktionierende Mirror-Liste zu erstellen.

Der pacman-Befehl lautet:

sudo pacman -S reflector

Installing Reflector on Arch Linux

Reflector auf der Kommandozeile verwenden

Die Verwendung von Reflector auf der Kommandozeile kann Ihre bestehende Mirror-Liste überschreiben. Wenn Sie also Ihre bestehende Mirror-Liste als Backup aufbewahren wollen, erstellen Sie eine Kopie davon, bevor Sie beginnen.

sudo cp /etc/pacman.d/mirrorlist /etc/pacman.d/old-mirrorlist

Making a copy of the mirrorlist file

Dieses Beispiel überschreibt Ihre Mirrorliste nicht.

reflector --verbose --ipv4 --protocol https --score 10 --sort rate

A mirror list generated by Reflector in a terminal window

Die von uns verwendeten Optionen waren:

  • verbose: Gibt eine detailliertere Ausgabe, wenn möglich.
  • ipv4: Wählt Mirrors aus, die das IPv4-Protokoll unterstützen.
  • protokoll: Wählt Mirrors aus, die das angegebene Protokoll unterstützen, z. B. HTTP, HTTPS oder FTP.
  • ergebnis: Wählen Sie eine Anzahl von Mirrors aus, die die beste Punktzahl haben. Jeder Mirror erhält eine Punktzahl, wobei niedrigere Punktzahlen besser sind als höhere Punktzahlen. Diese wird aus den Verzögerungszeiten der Verbindung, der durchschnittlichen Verbindungsdauer und dem Prozentsatz der erfolgreich abgeschlossenen Testverbindungen berechnet. Beachten Sie, dass sich die "10" in der Befehlszeile darauf bezieht, wie viele Spiegelserver mit der besten Punktzahl zurückgegeben werden sollen. Sie bezieht sich nicht auf die Punktzahl selbst.
  • sortieren: Sortiert die Ergebnisse. Wir haben uns für eine Sortierung nach der Download-Rate entschieden. pacman probiert die Spiegel in der Spiegel-Liste von oben nach unten aus, bis es einen funktionierenden Spiegel findet, daher ist es sinnvoll, den schnellsten Spiegel zuerst in der Liste zu haben.

Reflector unterstützt eine Menge Befehlszeilenoptionen. Sie finden diese jedoch nicht in der Reflector-Manualseite, sondern müssen die Hilfe-Option verwenden:

reflector --help

The Reflector help output in a terminal window

Wie wir gesehen haben, können Sie durch das Weglassen der Option --save Reflector-Befehle trocken ausführen, ohne Ihre bestehende Mirror-Liste zu gefährden. Lassen Sie uns die Option --save einfügen, damit wir unsere Mirrorlist-Datei aktualisieren können. Sie müssen sudo verwenden, wenn Sie diese Option benutzen.

sudo reflector --verbose --country DE,SE,GB --protocol https --sort rate --latest 20 --download-timeout 6 --save /etc/pacman.d/mirrorlist

Reflector generating a mirror list in a terminal window

Unsere neuen Optionen sind:

  • land: Wählen Sie die Regionen aus, aus denen wir Mirrors aufnehmen wollen. Sie können Ländercodes oder Ländernamen verwenden.
  • neueste: Wir wollen die 20 zuletzt aktualisierten Spiegelserver verwenden.
  • download-Zeitlimit: Legt die Dauer in Sekunden fest, bevor Reflector ein Repository als offline betrachtet.
  • speichern: Die Datei, in die die Ergebnisse geschrieben werden sollen. Der Standardspeicherort auf Arch ist "/etc/pacman.d/mirrorlist"

Sie können Ihre Mirrorliste mit den Befehlen cat oder less einsehen.

less /etc/pacman.d/mirrorlist

Using less to view the mirrorlist

Reflector schreibt einen Header mit Zeitstempel, so dass Sie sehen können, wann die letzte Aktualisierung stattgefunden hat.

The contents of the mirrorlist file

Verwendung des Reflector-Dienstes

Reflector bietet einen Dienst und einen Zeitgeber. Wenn Sie den Dienst reflector.service aktivieren und starten, wird Ihre Mirror-Liste bei jedem Start Ihres Computers aktualisiert. Der Nachteil ist eine langsamere Startzeit.

Eine bessere Lösung ist es, stattdessen den reflector.timer zu aktivieren und zu starten. Dieser lässt den reflector.service einmal pro Woche für Sie laufen.

sudo systemctl enable reflector.timer

sudo systemctl start reflector.timer

Enabling and starting the Reflector timer

Um die Reflector-Konfigurationsdatei zu bearbeiten, verwenden Sie Ihren bevorzugten Editor mit diesem Befehl:

sudo gedit /etc/xdg/reflector/reflector.conf

Editing the Reflector configuration file

Sie können sehen, dass die Kommandozeilenoptionen in separaten Zeilen aufgelistet sind.

The contents of the Reflector configuration file

Sie können die Werte ändern oder die Optionen hinzufügen, die Sie verwenden möchten.

Um die Konfigurationsdatei für den Timer zu bearbeiten, verwenden Sie:

sudo gedit /usr/lib/systemd/system/reflector.timer

Editing the Reflector timer configuration file

Wie man Timer konfiguriert, haben wir in einem anderen Artikel ausführlich beschrieben.

Verwenden Sie den Timer und aktualisieren Sie, wann Sie wollen

Sie können Ihre Mirror-Liste jederzeit manuell aktualisieren, indem Sie Reflector auf der Kommandozeile ausführen. Wenn Sie den Befehl in einen Alias oder eine Bash-Shell-Funktion umwandeln, müssen Sie sich nicht alle Parameter merken.