web-dev-qa-db-fra.com

Comment passer de APT miroir à partir de la ligne de commande?

Supposons que nous utilisons Ubuntu 18.04 LTS (Bionic Beaver).

Je connais les méthodes de l'interface graphique pour basculer le miroir APT actuellement utilisé.

L'utilisateur doit ouvrir logiciels et mises à jour (software-properties-gtk ou software-properties-kde) et accéder à logiciel Ubuntu () logiciel Kubuntu. ), puis sélectionnez miroir dans Télécharger depuis la liste:

picking mirror

Mais comment changer APT miroir à partir de la ligne de commande?

Notes/mises à jour:

  1. J'ai besoin d'une solution sans édition directe de /etc/apt/sources.list pour éviter les fautes de frappe et automatiser la sélection correcte des miroirs.
  2. J'ai besoin de changer de miroir avec une commande simple, ce qui équivaut à en choisir un à partir de Télécharger la liste dans software-properties-gtk (il est également intéressant de savoir où les adresses en miroir sont enregistrées dans le système).
    3. J'ai créé discussion et sondage intitulé "Ubuntu a-t-il besoin d'une alternative à la console pour software-properties-gtk/software-properties-kde?" Sur community.ubuntu.com .
5
N0rbert

La liste des serveurs miroir est récupérée par la bibliothèque Python (la procédure get_server_list est définie dans /usr/lib/python3/dist-packages/aptsources/distro.py et appelée à partir de /usr/lib/python3/dist-packages/softwareproperties/gtk/SoftwarePropertiesGtk.py).

La solution consiste à utiliser un outil nommé apt-mirror-updater . Il est installable à partir de pip/pip3:

Sudo pip3 install apt-mirror-updater

Fonctionnalité:

Utilisation: apt-mirror-updater [OPTIONS]

Le programme apt-mirror-updater automatise la sélection robuste de miroirs apt-get pour Debian et Ubuntu en permettant la découverte des miroirs disponibles, le classement des miroirs disponibles, la commutation automatique entre miroirs et la mise à jour robuste de la liste de paquets.

Options supportées:

-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 = MOTIF

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, --help

Show this message and exit.

Cela permet donc de trouver le meilleur miroir et de l’appliquer à /etc/apt/sources.list:

Sudo apt-mirror-updater --auto-change-mirror

En outre, cela permet de sélectionner miroir par URL et de l’appliquer à /etc/apt/sources.list:

$ 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      |
...

puis sélectionnez miroir à la main:

Sudo apt-mirror-updater -c "http://mirror.timeweb.ru/ubuntu"
2
N0rbert

Une solution (testée sur mon Ubuntu 18.04.1 LTS): https://github.com/jblakeman/apt-select.git

Installer:

pip install apt-select

ou:

pip3 install apt-select

Ajouter un script à PATH pour le lancer de partout ( le rendre permanent ):

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

Exemples d'utilisation:

Obtenez le premier miroir des États-Unis pour générer un nouveau fichier sources.list ::

apt-select --country US

Choisissez parmi les 3 premiers miroirs, y compris ceux mis à jour il y a une semaine:

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

Choisissez parmi 5 miroirs US avec la latence la plus faible pour votre machine:

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