it-swarm.com.de

Wie kann ich APT mirror von der Kommandozeile aus umschalten?

Nehmen wir an, wir verwenden Ubuntu 18.04 LTS (Bionic Beaver).

Ich kenne GUI-Möglichkeiten, um den aktuell verwendeten APT - Spiegel zu wechseln.

Der Benutzer sollte Software & Updates (software-properties-gtk oder software-properties-kde) öffnen und zu Ubuntu Software ( Registerkarte Kubuntu Software ) und wählen Sie dann in der Liste Herunterladen von die Option Spiegeln aus:

picking mirror

Aber wie kann man den APT - Spiegel von der Kommandozeile aus umschalten?

Hinweise/Updates:

  1. Ich benötige eine Lösung ohne direkte Bearbeitung von /etc/apt/sources.list, um Tippfehler zu vermeiden und die korrekte Spiegelauswahl zu automatisieren.
  2. Ich muss den Spiegel mit einem einfachen Befehl umschalten, als würde ich einen aus der Download-Liste in software-properties-gtk auswählen (es ist auch interessant, wo die Spiegeladressen im System gespeichert sind) .
    3. Ich habe Diskussion und Umfrage mit dem Namen "Braucht Ubuntu eine Konsolenalternative für Software-Eigenschaften-gtk/Software-Eigenschaften-kde?" Auf community.ubuntu.com erstellt.
6
N0rbert

Die Liste der Spiegelserver wird von der Bibliothek Python abgerufen (die Prozedur _get_server_list_ ist in _/usr/lib/python3/dist-packages/aptsources/distro.py_ definiert und wird von _/usr/lib/python3/dist-packages/softwareproperties/gtk/SoftwarePropertiesGtk.py_ aufgerufen).

Die Lösung besteht darin, das Tool apt-mirror-updater zu verwenden. Es kann von pip/_pip3_ installiert werden:

_Sudo pip3 install apt-mirror-updater
_

Funktionalität:

Verwendung: apt-mirror-updater [OPTIONEN]

Das Programm apt-mirror-updater automatisiert die robuste Auswahl von apt-get-Spiegeln für Debian und Ubuntu, indem es die Erkennung verfügbarer Spiegel, die Rangfolge verfügbarer Spiegel, das automatische Umschalten zwischen Spiegeln und die Aktualisierung der robusten Paketliste ermöglicht.

Unterstützte Optionen:

-r, --remote-Host = SSH_ALIAS

_Operate on a remote system instead of the local system. The SSH_ALIAS
argument gives the SSH alias of the remote Host. It is assumed that the
remote account has root privileges or password-less Sudo access.
_

-f, --find-current-mirror

_Determine the main mirror that is currently configured in
/etc/apt/sources.list and report its URL on standard output.
_

-b, --find-best-mirror

_Discover available mirrors, rank them, select the best one and report its
URL on standard output.
_

-l, --list-mirrors

_List available (ranked) mirrors on the terminal in a human readable format.
_

-c, --change-mirror = MIRROR_URL

_Update /etc/apt/sources.list to use the given MIRROR_URL.
_

-a, --auto-change-mirror

_Discover available mirrors, rank the mirrors by connection speed and update
status and update /etc/apt/sources.list to use the best available mirror.
_

-u, --update, --update-package-lists

_Update the package lists using `apt-get update', retrying on failure and
automatically switch to a different mirror when it looks like the current
mirror is being updated.
_

-x, --exclude = PATTERN

_Add a pattern to the mirror selection blacklist. PATTERN is expected to be
a Shell pattern (containing wild cards like `?' and `*') that is matched
against the full URL of each mirror.
_

-m, --max = COUNT

_Don't query more than COUNT mirrors for their connection status
(defaults to 50). If you give the number 0 no limit will be applied.

Because Ubuntu mirror discovery can report more than 300 mirrors it's
useful to limit the number of mirrors that are queried, otherwise the
ranking of mirrors will take a long time (because over 300 connections
need to be established).
_

-v, --verbose

_Increase logging verbosity (can be repeated).
_

-q, --quiet

_Decrease logging verbosity (can be repeated).
_

-h, --hilfe

_Show this message and exit.
_

So können Sie den besten Spiegel finden und auf _/etc/apt/sources.list_ anwenden:

_Sudo apt-mirror-updater --auto-change-mirror
_

Außerdem können Sie die Spiegelung nach URL auswählen und auf _/etc/apt/sources.list_ anwenden:

_$ apt-mirror-updater --list-mirrors
-----------------------------------------------------------------------------------------------------------------------
| Rank | Mirror URL                                        | Available? | Updating? | Last updated   | Bandwidth      |
-----------------------------------------------------------------------------------------------------------------------
|    1 | http://mirror.timeweb.ru/ubuntu                   | Yes        | No        | Up to date     | 6.49 KB/s      |
|    2 | http://no.archive.ubuntu.com/ubuntu               | Yes        | No        | Up to date     | 6.38 KB/s      |
|    3 | http://ftp.aso.ee/ubuntu                          | Yes        | No        | Up to date     | 5.62 KB/s      |
|    4 | http://mirror.plusserver.com/ubuntu/ubuntu        | Yes        | No        | Up to date     | 4.77 KB/s      |
|    5 | http://nl.archive.ubuntu.com/ubuntu               | Yes        | No        | Up to date     | 4.68 KB/s      |
...
_

und dann Spiegel von Hand auswählen:

_Sudo apt-mirror-updater -c "http://mirror.timeweb.ru/ubuntu"
_
3
N0rbert

Eine Lösung (getestet auf meinem Ubuntu 18.04.1 LTS): https://github.com/jblakeman/apt-select.git

Installieren:

pip install apt-select

oder:

pip3 install apt-select

Hinzufügen eines Skripts zu PATH, um es von überall aus auszuführen ( permanent machen ):

export PATH=$PATH:~/.local/bin/apt-select

Anwendungsbeispiele:

Holen Sie sich den Top Mirror aus den USA, um eine neue sources.list zu generieren:

apt-select --country US

Wählen Sie aus den drei besten Spiegeln aus, einschließlich derjenigen, die vor einer Woche zuletzt aktualisiert wurden:

apt-select -c -t 3 -m one-week-behind

Wählen Sie aus 5 US-Spiegeln mit der geringsten Latenz für Ihren Computer:

$ apt-select --country US -t 5 --choose
6
mature