如何从命令行中选择最快的镜像?

Eva*_*van 154 command-line apt repository

我想sources.list在全新的 Ubuntu Server 安装中从命令行使用最快的服务器更新我的文件。我知道这对于 GUI 来说非常简单,但似乎没有一种简单的方法可以从命令行执行此操作?

bad*_*adp 159

您不必再进行任何搜索 - 正如ajmitch解释的那样,您可以使用deb mirror自动为您挑选最好的镜子。

apt-get现在支持“镜像”方法,该方法将根据您的位置自动选择一个好的镜像。推杆:

deb mirror://mirrors.ubuntu.com/mirrors.txt precise main restricted universe multiverse
deb mirror://mirrors.ubuntu.com/mirrors.txt precise-updates main restricted universe multiverse
deb mirror://mirrors.ubuntu.com/mirrors.txt precise-backports main restricted universe multiverse
deb mirror://mirrors.ubuntu.com/mirrors.txt precise-security main restricted universe multiverse
Run Code Online (Sandbox Code Playgroud)

/etc/apt/sources.list文件的顶部应该是使其根据您的地理位置自动为您选择镜像所需的全部内容。

Lucid (10.04)、Maverick (10.10)、Natty (11.04) 和 Oneiric (11.10) 用户可以替换precise为适当的名称。

  • 不错的提示,但对我来说没有帮助。它适用于地理定位,为我提供本地服务器,这在我所在的位置要慢一些。网络时间距离是这里的重要因素,而不是空间距离。 (25认同)
  • 相关:http://askubuntu.com/q/319433/11244 (2认同)
  • 目前已损坏:https://bugs.launchpad.net/ubuntu/+source/apt/+bug/1613184 (2认同)

ish*_*ish 54

这是一种始终有效的方法,使用古老的魔法netselect和一些grep魔法:

##终端瘾君子的“寻找最佳服务器”技巧!##

  • 从 Debian 网站下载并dpkg -i netselect用于您的架构(大约 125 KB,没有依赖项)

  • 从你的位置找到最快的 Ubuntu 镜像,要么是最新的,要么最多落后 6 小时(我将在下面解释,抱歉它在 Markdown 中没有很好地拆分)

    sudo netselect -v -s10 -t20 `wget -q -O- https://launchpad.net/ubuntu/+archivemirrors | grep -P -B8 "statusUP|statusSIX" | grep -o -P "(f|ht)tp://[^\"]*"`
    
    Run Code Online (Sandbox Code Playgroud)
  • netselect

    1. -v 让它有点冗长——你想看到进度点和消息告诉你映射到同一 IP 的不同镜像被合并了:)
    2. -sN 控制你最后想要多少镜子(例如前 10 个镜子)
    3. -tN 是每个镜像的速度测试时间(默认为 10;数字越大,花费的时间越长,但结果越可靠。)
  • 这是反引号的东西(不要粘贴,只是为了解释)

    wget -q -O- https://launchpad.net/ubuntu/+archivemirrors \
    | grep -P -B8 "status(UP|SIX)" \
    | grep -o -P "(f|ht)tp://[^\"]*"
    
    Run Code Online (Sandbox Code Playgroud)
  1. wgethttps://launchpad.net/ubuntu/+archivemirrors获取最新的镜像状态。
  2. 第一个grep提取最新或滞后 6 小时的镜像,以及包含实际 ftp/http URL 的 8 行先前上下文
  3. 第二个grep提取这些 ftp/http URL
  • 这是来自美国加利福尼亚的示例输出:
   60 ftp://mirrors.se.eu.kernel.org/ubuntu/
   70 http://ubuntu.alex-vichev.info/
   77 http://ftp.citylink.co.nz/ubuntu/
  279 http://ubuntu.mirrors.tds.net/pub/ubuntu/
  294 http://mirror.umd.edu/ubuntu/
  332 http://mirrors.rit.edu/ubuntu/
  364 ftp://pf.archive.ubuntu.com/ubuntu/
  378 http://mirror.csclub.uwaterloo.ca/ubuntu/
  第399话
  455 http://ubuntu.mirror.root.lu/ubuntu/
  
  • “等级”是一个任意的指标;通常越低越好。
  • 如果您想知道为什么 kernel.org 瑞典-欧盟镜像和 NZ 镜像是来自加利福尼亚的前三名,好吧,我也是 ;-) 事实是,netselect并不总是选择最合适的 URL 来显示时多个镜像映射到单个 IP;数字 3 也称为nz.archive.ubuntu.com!

  • netselect 选择具有低 udp 或 icmp 延迟的镜像。它不一定选择可以提供更多带宽的镜像。 (9认同)

小智 32

Oneliner 根据您的 ip 的 mirrors.ubuntu.com 选择最佳镜像(按下载速度):

curl -s http://mirrors.ubuntu.com/mirrors.txt | xargs -n1 -I {} sh -c 'echo `curl -r 0-102400 -s -w %{speed_download} -o /dev/null {}/ls-lR.gz` {}' |sort -g -r |head -1| awk '{ print $2  }'
Run Code Online (Sandbox Code Playgroud)

  • 要在末尾替换更多选项:`sort -gr | 头-3`。 (3认同)

Rin*_*ind 26

包 netselect-apt

    dapper (net):使用 netselect 选择最快的 Debian 镜像 
    [宇宙]
    0.3.ds1-5:全部
    hardy (net):使用 netselect 选择最快的 Debian 镜像 
    [宇宙]
    0.3.ds1-11:全部
Pakket apt-spy

    dapper (admin):根据带宽测试写一个sources.list文件 
    [宇宙]
    3.1-14: amd64 i386 powerpc

由于安全问题似乎未包含在较新的 Ubuntu 中:请参阅:错误报告

但是 .. 我通常只是使用ping来找出连接到某个位置的速度。跳数和延迟。

  • 这不是最高票,也不是最佳答案,请查看下一个 (12认同)
  • netselect-apt 在 Ubuntu 12.04 中似乎不可用 (5认同)

Joh*_*n B 22

这是我编写的Python 脚本,用于查找 TCP 延迟最低的镜像。

该脚本还提供从launchpad获取的带宽和状态数据,并将自动生成一个新sources.list文件或使用从列表中选择的镜像。

一个使用示例,让您可以从 5 个对您的机器具有最低延迟的美国镜像中进行选择:

$ apt-select --country US -t 5 --choose
Run Code Online (Sandbox Code Playgroud)

  • 我想让你知道我已经用你的脚本制作了一个 debian 包,可以以非常简单直接的方式使用:https://github.com/brodock/apt-select/releases/tag/0.1 .0 (5认同)

小智 5

我开发了一个简单的基于 ping 的 nodejs 脚本,它测试 mirrors.ubuntu.com/mirrors.txt 上列出的服务器并返回最快的:

sudo npm install -g ffum
ffum
Run Code Online (Sandbox Code Playgroud)

如果您觉得它有用或有任何建议,请告诉我(=


小智 5

我知道这并不能直接回答 OP 的问题,但是 Ubuntu 的桌面/GUI 版本中有一个按钮可以为您找到最佳镜像。它似乎工作得很好,所以我简要地研究了一下,但没有时间跟进。

我提出它的原因是因为我认为将它变成命令行实用程序非常简单且可用。

如果有人感兴趣,测试似乎位于:

/usr/lib/python3/dist-packages/softwareproperties/MirrorTest.py
Run Code Online (Sandbox Code Playgroud)

再一次,这大概是我得到的,但我想我会把它留在这里以防万一有人想要它。当我有更多时间时,我可能会重新考虑它。


小智 5

对于命令行,您可以使用名为apt-smart的 Python 工具

一个使用示例,可​​让您列出您所在国家/地区的排名镜像(自动检测):

$ apt-smart -l
Run Code Online (Sandbox Code Playgroud)

使用-l, 或--list-mirrors,您将获得(来自 Travis CI 美国服务器的示例输出):

---------------------------------------------------------------------------------------------------------
| Rank | Mirror URL                            | Available? | Updating? | Last updated    | Bandwidth   |
---------------------------------------------------------------------------------------------------------
|    1 | http://mirrors.gigenet.com/ubuntua... | Yes        | No        | Up to date      | 1.73 MB/s   |
|    2 | http://mirror.genesisadaptive.com/... | Yes        | No        | Up to date      | 1.68 MB/s   |
|    3 | http://ubuntu.mirrors.tds.net/pub/... | Yes        | No        | Up to date      | 1.4 MB/s    |
|    4 | http://repos.forethought.net/ubuntu   | Yes        | No        | Up to date      | 1.35 MB/s   |
|    5 | http://repo.miserver.it.umich.edu/... | Yes        | No        | Up to date      | 937.62 KB/s |
...
|   75 | http://mirror.cc.vt.edu/pub2/ubuntu   | Yes        | No        | 1 day behind    | 659.67 KB/s |
|   76 | http://mirror.atlantic.net/ubuntu     | Yes        | No        | 2 days behind   | 351.26 KB/s |
|   77 | http://mirror.lstn.net/ubuntu         | Yes        | No        | 4 days behind   | 806.81 KB/s |
|   78 | http://mirrors.usinternet.com/ubun... | Yes        | No        | 4 weeks behind  | 514.31 KB/s |
|   79 | http://mirrors.arpnetworks.com/Ubuntu | Yes        | No        | 19 weeks behind | 418.94 KB/s |
|   80 | http://mirrors.ocf.berkeley.edu/ub... | Yes        | Yes       | Up to date      | 446.07 KB/s |
---------------------------------------------------------------------------------------------------------
Full URLs which are too long to be shown in above table:
1: http://mirrors.gigenet.com/ubuntuarchive
2: http://mirror.genesisadaptive.com/ubuntu
3: http://ubuntu.mirrors.tds.net/pub/ubuntu
5: http://repo.miserver.it.umich.edu/ubuntu
...
78: http://mirrors.usinternet.com/ubuntu/archive
80: http://mirrors.ocf.berkeley.edu/ubuntu

Run Code Online (Sandbox Code Playgroud)

当然,apt-smart如果您想,也可以更改您的 sources.list:

$ apt-smart -a
Run Code Online (Sandbox Code Playgroud)

使用-a, 或--auto-change-mirror要发现可用镜像,请按连接速度和更新状态对镜像进行排名,然后更新 /etc/apt/sources.list 以使用最佳可用镜像。

使用-c, 或--change-mirror MIRROR_URL更新 /etc/apt/sources.list 以使用给定的 MIRROR_URL。

与其他工具相比:

  • apt-smart 自动查找您所在的位置,因此您出国旅行时无需指定国家/地区。
  • apt-smart从每个镜像进行真正的 HTTP 下载以获得更准确的结果(带宽和状态)并支持 HTTP 代理,而不是使用ping和依赖 launchpad 的不准确数据。
  • apt-smart 正在维护,而大多数其他工具长时间未解决问题。

您可以apt-smart通过轻松安装pip,有关详细的 copy'n'paste 安装命令和用法,请参阅项目自述文件

  • 这太棒了!“pip install apt-smart”来安装它。 (2认同)