我怎样才能使用离我更近的镜像或选择一个更快的镜像?

从主要的Ubuntu存档下载速度很慢,即使不是发布日,我该如何让apt-get自动使用一个靠近我的镜像?

相关链接:http://askubuntu.com/questions/39922/how-do-you-select-the-fastest-mirror-from-the-command-line - Jorge Castro
8个回答

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

在你的/etc/apt/sources.list文件的顶部,只需要添加这些内容,就可以根据你的地理位置自动选择一个镜像。
Lucid (10.04), Maverick (10.10), Natty (11.04)和Oneiric (11.10)用户可以将precise替换为相应的名称。

6只是为了澄清,这是替代常规的队列还是额外增加? - Hamish Downer
14那只有在你运气好的时候才有效。我现在已经在我们的台式电脑上禁用了它,因为它经常会返回损坏的镜像(有时会给你403错误)。 - raphink
3@HamishDowner 这是在行的旁边。在文件顶部。 - nanofarad
7很好的建议。只是要注意,在进行任何apt-get install之前,更改后需要运行sudo apt-get update以便使用最近的镜像。 - Simon East
在第一次的apt-get update时没有成功,但在第二次apt-get update时成功了。 - mojo706
我甚至不需要使用apt-get update,我认为这取决于你是否有任何正在运行的可能会为你执行此操作的软件,请确保在进行低级别操作时禁用任何软件管理器,以免覆盖你的设置 :) - osirisgothra
我尝试了这个方法,但令人惊讶的是它没有起作用 :( 。mirrors.ubuntu.com/mirrors.txt 给了我两个条目。http://np.archive.ubuntu.com/ubuntu/ 和 http://archive.ubuntu.com/ubuntu/ 。但是当我执行 apt-get update 和后续的安装时,它只会从 http://archive.ubuntu.com/ubuntu 获取。有任何想法吗? - kaji
2这个mirror://的东西在某个地方有文档记录吗?我在sources.list(5)或者/usr/share/doc/apt里找不到相关信息。 - ckujau
1只找到了commit(来自2010年!),在这个提交中引入了mirror://,但没有其他信息。 - ckujau
还有,apt-file 不理解这个 :-\ - ckujau
这个对Debian也适用吗? - Cristiano Araujo
3这对我来说在可靠的版本(服务器)上运行。 - Marc
目前(21/09/2017),位于地址mirrors.ubuntu.com/mirrors.txt的文件只包含一行内容,即http://archive.ubuntu.com/ubuntu/。我不确定这是否有用。 - pqnet
这个适用于arm架构吗?我在安卓设备上安装了Ubuntu, 默认的URL是http://ports.ubuntu.com/ubuntu-ports - Amir Pashazadeh
对于Ubuntu 20版本,搜索并替换"precise"为"groovy"。 - ATorras

我一直使用“选择最佳服务器”GUI工具:从Ubuntu软件中心,转到编辑 -> 软件源菜单。 (您也可以从Synaptic或Update Manager的首选项中执行此操作。)

在Ubuntu软件选项卡下,有一个下拉菜单,“下载自:”。 如果您选择“其他...”,将会出现一个按钮,上面写着“选择最佳服务器”;点击它会让Ubuntu运行一些测试,以确定哪个镜像能够提供最佳的下载速度。

我无法评论这是否比您自己发现的方法更好或更糟。也许有些了解这个问题的专家可以发表评论!


这里是一些屏幕截图,就像Jorge建议的那样:
1. 打开Ubuntu软件中心,在全局菜单中点击“编辑”,然后进入“软件源...” 2. 点击“下载自”旁边的下拉菜单,选择“其他...” 3. 点击“选择最佳服务器” 4. 最佳服务器会被突出显示。点击“选择服务器”即可完成!


12有没有命令行的方式来做同样的事情?每天我都会得到不同的最佳服务器。在使用apt-get之前选择最好的服务器将会很有用。 - balki
也许是在我上面的帖子中提到的那个?我通常只是“设置然后忘记” - 更新通常会很快到来。 - Sean Fitzpatrick
1非常好的答案,因为它使用了逐步解释。更重要的是,它还包含了图片。 - Ade Malsasa Akbar
1刚刚尝试了一下"最佳服务器",它将我导向了ftp.utexas.edu,但软件中心无法及时更新。不过,使用下拉列表非常有帮助,找到了一个好的镜像站点。 - don bright

地理位置并不总是提供最好的镜像。例如,我住在加拿大的卑诗省,大多数人在这个省份应该能在卑诗省、加利福尼亚州或任何太平洋沿岸的州找到一个镜像,甚至可能是亚利桑那州。
然而,在这里北部,我的互联网服务提供商(与电话公司不同)只有一条光纤线从这个城市出去,直接连接到卡尔加里(距离这里东面1000公里),在那里与连接到卡尔加里大学的线路共享一个NEX,他们有一个漂亮的debian和ubuntu以及其他什么镜像。看起来大学和我使用的是同一个互联网服务提供商,因此传输速率以每秒兆字节为单位,而不是我从默认镜像获取的每秒50-100千字节。
所以,我建议了解你当地的互联网网络拓扑结构。像网络交换这样的美丽事物可以为特定地方提供快速连接。保持在你的互联网服务提供商的网络上可以绕过一些你可能在与外界通信时遇到的速度限制。
感谢关于更改这个的图形化工具的帖子,我找到了那个镜像并将其设置为默认。对于这个话题的好表现!

你是指的ubuntu-archives.mirror.nexicom.net吗? - lrkwz

为了快速升级,我使用种子下载了备用光盘。然而,通过这种方式升级后,我的系统仍然没有全部更新(可能是因为ISO文件已经打包好了)。
经过快速搜索,我找到了Launchpad上的镜像列表。请根据你所在的国家进行搜索并尝试一些镜像。我住在荷兰,下载速度只有75kB/s,远低于我的平常速度。ubuntu.mirror.cambrium.nl 镜像对我来说无法使用,但 ubuntu.mirror.astratoip.net 可以。请相应地更换镜像,并运行以下命令:
sudo sed 's@archive.ubuntu.com@ubuntu.mirror.atratoip.net@' -i /etc/apt/sources.list
sudo apt-get update

archive.ubuntu.com 替换为您当前的镜像。

对于使用Kubuntu 12.04的用户来说,有一个小建议...
从Muon软件中心开始:
设置 > 配置软件源
然后在Kubuntu软件选项卡上:
从“下载自:”下拉列表中选择“其他”
点击“选择最佳服务器”按钮 - 这将对列表中的所有服务器进行ping测试
这样就会选择具有最快ping值(即当时最快的服务器)
我在英国,但我的最快服务器是“尼泊尔服务器”。比起默认的英国服务器,速度快了大约10倍!

我的Python脚本apt-smart会自动在你的国家内找到镜像源,通过状态和速度进行基准测试和排序,最后根据需要更改sources.list。

apt-smart与其他提到的apt-select之间的区别如下:

  • apt-smart会自动确定你的位置,因此当你出国旅行时无需指定国家。
  • apt-smart通过从每个镜像源进行真实的HTTP下载来获得更准确的结果(带宽和状态),并支持HTTP代理,而apt-select仅使用ping并依赖于launchpad的不准确数据。
  • apt-smart正在维护,而apt-select已经有近3年没有修复问题了。

你可以通过pip轻松安装apt-smart,有关详细的复制粘贴安装命令,请参阅项目自述文件

一个使用示例,让您可以列出在您的国家内排名靠前的镜像站点:
$ apt-smart -l

使用-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


I apologize for any inconvenience, but I'm unable to provide translation services at the moment. Is there anything else I can help you with? - Thomas Ward
干得好!我的Ubuntu系统更新下载速度恢复正常了。 - dsomnus

只是简单地在/etc/apt/sources.list中添加deb镜像行会导致重复的源。而且,由于apt只检查重复的行,所以不会出现错误。为了解决这个问题,我们需要替换文件的原始内容。
我制作了一个完整的列表来替换原始的源列表文件。这包括主要、受限、宇宙、多元宇宙、建议和规范的存储库。 注意:关于"建议"的行已经被注释掉了。此外,Canonical的"合作伙伴"存储库(闭源和专有)与镜像不兼容,因此这些行保持不变。
首先,运行以下命令进行备份并删除您的源列表文件:
sudo mv /etc/apt/sources.list /etc/apt/sources.listbackup

接下来,使用您喜欢的文本编辑器将以下行复制并粘贴到/etc/apt/sources.list中(如果您不在“bionic”上,我在下一步中包含了一个修复命令):
## main, restricted, universe, and multiverse repositories
deb mirror://mirrors.ubuntu.com/mirrors.txt bionic main restricted universe multiverse
deb mirror://mirrors.ubuntu.com/mirrors.txt bionic-updates main restricted universe multiverse
deb mirror://mirrors.ubuntu.com/mirrors.txt bionic-backports main restricted universe multiverse
deb mirror://mirrors.ubuntu.com/mirrors.txt bionic-security main restricted universe multiverse
deb-src mirror://mirrors.ubuntu.com/mirrors.txt bionic main restricted universe multiverse
deb-src mirror://mirrors.ubuntu.com/mirrors.txt bionic-updates main restricted universe multiverse
deb-src mirror://mirrors.ubuntu.com/mirrors.txt bionic-backports main restricted universe multiverse
deb-src mirror://mirrors.ubuntu.com/mirrors.txt bionic-security main restricted universe multiverse

## uncomment to enable "proposed" or pre-release software which may be unstable and could cause problems or breaks 
#deb mirror://mirrors.ubuntu.com/mirrors.txt bionic-proposed main restricted universe multiverse
#deb-src mirror://mirrors.ubuntu.com/mirrors.txt bionic-proposed main restricted universe multiverse

## Canonical "partner" repository does not work with mirrors
## uncomment to enable the partner repository for proprietary and closed source software
deb http://archive.canonical.com/ubuntu bionic partner
deb-src http://archive.canonical.com/ubuntu bionic partner

保存文件后,运行以下命令自动应用您的Ubuntu版本(bionic、eoan、xenial等):
sudo sed -i "s/bionic/$(lsb_release -sc)/g" /etc/apt/sources.list

最后,运行以下命令来更新apt:
sudo apt update

我认为需要注意的是,这似乎选择了一面好镜子,但不一定是最快的镜子。 - mchid
这对我起了作用... 但是! 在运行 sudo apt update 之前,我不得不删除现有的镜像 (rm /etc/apt/sources.list.d/nyc2_mirrors_digitalocean_com_mariadb_repo_10_2_ubuntu.list)。我在这里找到了这个想法链接链接 - Zeth
1@Zeth 嗯,如果你的仓库没有发布文件(出现“无发布文件错误”),那是一个独立的问题。据我所知,我的回答不应该与mariadb镜像有关,因为它们与主要的ubuntu镜像是独立的。确保你仍然有一个mariadb镜像,这样你就不会错过安全更新。 - mchid

这里是我编写的一个Python脚本,它会返回一个指定国家延迟最低的镜像列表。

该脚本还从镜像的启动页面提供带宽和状态信息,并将使用列表中选择的镜像生成一个新的sources.list文件。