sources.list
文件。我知道使用GUI非常简单,但是似乎没有从命令行执行此操作的简单方法?#1 楼
Pakket netselect-apt dapper (net): Choose the fastest Debian mirror with netselect [universe] 0.3.ds1-5: all hardy (net): Choose the fastest Debian mirror with netselect [universe] 0.3.ds1-11: all
Pakket apt-spy dapper (admin): writes a sources.list file based on bandwidth tests [universe] 3.1-14: amd64 i386 powerpc
由于安全性问题似乎不包括在较新的Ubuntu中:参见:错误报告
找出到某个位置的连接速度。跳数和延迟时间。
评论
netselect-apt在Ubuntu 12.04中似乎不可用
–offby1
13年11月6日23:22
正确:请参见此处bugs.launchpad.net/ubuntu/+source/netselect/+bug/337377
–灵风
13年7月7日在7:41
这不是最受好评的,也不是最佳答案,请检查下一个
–ntg
2015年6月10日7:54
哪个答案是“下一个”可能已更改。
– gmatht
17年1月24日在4:46
apt-spy在debian 9上消失了,但是netselect-apt没问题
– netawater
17年11月21日在16:05
#2 楼
您不再需要进行任何搜索-正如ajmitch解释的那样,您可以使用deb mirror
自动为您选择最佳的镜像。apt-get现在支持'mirror的方法,该方法会根据您的位置自动选择一个好的镜子。将
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
。评论
大提示。只需注意,进行更改后,您需要先运行sudo apt-get update,然后再进行任何apt-get安装,才能使用最近的镜像。
–西蒙东
13年6月29日在17:03
相关:askubuntu.com/q/319433/11244
–直到
13年7月18日在15:45
不错的提示,但对我而言无济于事。它可以在地理位置上工作,从而为我提供了本地服务器,这比我所在的位置慢很多。在此,网络时间距离是重要的因素,而不是空间距离。
– jarondl
13年7月31日在8:24
当前已损坏:bugs.launchpad.net/ubuntu/+source/apt/+bug/1613184
–马拉松
17年8月31日在18:34
@marathon至少固定在18.04+
–巴勃罗·比安奇(Pablo Bianchi)
19 Mar 25 '19在19:06
#3 楼
这是永远有效的一种方法,使用良好的旧版netselect
和一些grep
魔术:##终端瘾君子的“查找最佳服务器”黑客!##
下载并从Debian网站上获得适用于您的体系结构的信息。 (大约125 KB,没有依赖项)
从您所在的位置查找最快的Ubuntu镜像,无论是最新的还是最多不超过六个小时(我将对此进行解释)下面,对不起它在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://[^\"]*"`
dpkg -i
:netselect
有点冗长-您希望看到进度点和消息,告诉您已将映射到同一IP的不同镜像合并:) netselect
控制最后需要多少个镜像(例如前10个镜像)-v
是每个反射镜进行速度测试的时间(默认值为10;数字越大,花费的时间越长,但结果越可靠。)这是反引号(不要粘贴,仅用于解释)
wget -q -O- https://launchpad.net/ubuntu/+archivemirrors \
| grep -P -B8 "status(UP|SIX)" \
| grep -o -P "(f|ht)tp://[^\"]*"
-sN
从https://launchpad.net/ubuntu/+archivemirrors。第一个
-tN
提取最新或六个小时的镜像后面紧跟着8行内容,其中包括实际的ftp / http URL 第二个
wget
提取了这些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 ftp://ubuntu.mirror.frontiernet.net/ubuntu/ 455 http://ubuntu.mirror.root.lu/ubuntu/
“排名”是任意指标;
如果您想知道为什么kernel.org瑞典-EU镜像和NZ镜像在加利福尼亚州中排名前三,那么我也是;-)事实是
grep
不当多个镜像映射到单个IP时,始终选择最合适的URL来显示; 3号也称为grep
!评论
netselect选择具有低udp或icmp延迟的镜像。它不一定选择可以提供更多带宽的镜像。
–东武
13年10月13日在19:40
@pix我批准了您的编辑,但不是命令替换会导致换行符被替换。后来的字段拆分删除了换行符。命令替换仅删除尾随的换行符。
–muru
17年2月21日在9:23
#4 楼
Oneliner根据mirrors.ubuntu.com为您的IP选择最佳的镜像(按下载速度):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 }'
评论
要在末尾替换更多选项:sort -gr |头-3。
–巴勃罗·比安奇(Pablo Bianchi)
17 Mar 4 '17 at 1:55
我发现此答案的curl部分很有用,因为curl -r 0-102400 -o / dev / null [server_url] /ls-lR.gz其中[server_url]是mirrors.txt中列出的基本镜像URL,可以进行速度比较镜像中索引文件的前100K个字节。
–詹姆斯
18年3月12日在12:57
这将测试传输速度,这绝对是对netselect的改进。从每个服务器仅下载10k,但这可能不能很好地表示连接速度更快时的稳定传输速度。增加102400以进行较大的下载测试
–菲尔·米勒(Phil Miller)
18年6月8日在21:41
#5 楼
这是我编写的Python脚本,用于查找具有最低TCP延迟的镜像。该脚本还提供从启动板获取的带宽和状态数据,并将自动生成新的
sources.list
文件或使用从中选择的镜像一个列表。一个使用示例,让您从5个美国延迟时间最长的计算机镜像中进行选择:
$ apt-select --country US -t 5 --choose
评论
我想告诉您,我已经用您的脚本制作了一个debian软件包,准备以非常简单直接的方式使用它:github.com/brodock/apt-select/releases/tag/0.1.0
–加布里埃尔·马泽托(Gabriel Mazetto)
2015年11月3日,下午4:25
这是一个完美的解决方案,因为我尝试了其他方法。为了使菜鸟友好,我写了一篇详细介绍此方法的文章: blog.kmonsoor.com/…
– kmonsoor
16-10-11在19:14
很好,因为netselect在较新的Ubuntu版本中不可用
– Tek
18年2月18日在7:23
请在您的帖子中显示如何使用它
–乔纳森
18-10-31在6:21
@乔纳森完成了。完整用法在第一个链接的README中。
–约翰B
18年11月1日,0:07
#6 楼
我开发了一个简单的基于ping的nodejs脚本,该脚本可测试mirrors.ubuntu.com/mirrors.txt上列出的服务器并返回最快的服务器:sudo npm install -g ffum
ffum
请让我知道您是否认为它有用或有任何建议(=
评论
ffum不起作用:连接错误。
–詹姆斯·傅(James Fu)
13年7月10日在8:48
它不起作用:空输出。
–胡安·西蒙(JuanSimón)
13年8月27日在1:06
git克隆仓库并运行节点ffum
–迈克尔
2014年8月7日,下午3:58
太好了,为我工作!我有一个错误,它正在寻找节点而不是nodejs ...对每个经过测试的存档速度都有一些冗长的描述也很酷。
–tweak2
2014年8月27日在16:57
#7 楼
我知道这不能直接回答OP的问题,但是Ubuntu / Ubuntu的桌面/ GUI版本中有一个按钮可以为您找到最佳镜像。它似乎工作得很好,所以我简要地研究了一下,但是没有时间跟进。之所以提出它,是因为我认为它非常简单易用使其成为命令行实用程序。
如果有人感兴趣,那么该测试似乎位于:
/usr/lib/python3/dist-packages/softwareproperties/MirrorTest.py
再次据我了解,但我想我会把它留在这里,以防有人要。等我多一点时间后,我可能会再找回来。
评论
在18.04上,此脚本检测何时从终端将其作为应用程序(作为主程序)调用.....并将其结果打印到终端。确保给它足够的时间来完成。 $ python3 /usr/lib/python3/dist-packages/softwareproperties/MirrorTest.py >> [省略前5个],优胜者是:ny-mirrors.evowise.com
–PatKilg
18年6月9日在18:07
遗憾的是,它无法正常工作。该脚本使用5个ping最低的服务器,然后通过下载〜1M文件(来自dist的main中的Packages.gz)按带宽对它们进行评分。如果您修改脚本以将其增加到25个服务器并下载500M文件,则会得到完全不同的结果,这次是正确的。
–乔斯林
19年2月16日在11:20
#8 楼
对于命令行,您可以使用称为apt-smart的Python工具一个使用示例,该示例可让您列出您所在国家/地区中的排名后的镜像(自动检测):
$ apt-smart -l
使用
-l
或--list-mirrors
,您将获得(Travis CI US服务器的示例输出):您的sources.list,如果要:---------------------------------------------------------------------------------------------------------
| 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
使用
apt-smart
或-a
查找可用的镜像,按连接速度对镜像进行排名并更新状态并更新/ etc / apt / sources.list使用最佳的镜像。通过
--auto-change-mirror
或-c
更新/etc/apt/sources.list以使用给定的MIRROR_URL。比较其他工具:
--change-mirror MIRROR_URL
自动查找您的位置,因此您出国旅行时无需指定国家。apt-smart
从每个镜像真正下载HTTP以获得更准确的结果(带宽和状态),并支持HTTP代理,而不是使用apt-smart
并依赖启动板的不准确数据。ping
得以维护,而大多数其他工具将使问题长期存在。您可以通过
apt-smart
轻松安装apt-smart
,有关详细的复制粘贴安装命令和用法,请参阅Project Readme。评论
这很棒! “ pip install apt-smart”进行安装。
–安迪·弗雷利(Andy Fraley)
19年11月1日在1:57
@Andy Fraley谢谢您的评论。如果足够幸运的话,只需通过pip install apt-smart即可安装apt-smart并运行apt-smart而不会出现任何错误。但是有时在某些环境中,它可能会说未找到“ apt-smart”命令或其他任何错误。这不是apt-smart的bug,而是pip或Ubuntu系统环境,谈论它将是一个漫长的故事。因此,推荐的安装方法是遵循Project Readme中的install命令,该命令很清楚,可以整体复制并粘贴到终端中。
–马丁X
19年11月3日在4:03
#9 楼
查找快速镜像的命令在Ubuntu 18.04上,通过运行
python /usr/lib/python3/dist-packages/softwareproperties/MirrorTest.py
,我得到了很好的结果,该命令打印出按“时间”组织的镜像列表(未解释),然后我使用了排名最高的镜子之一。
更多详细信息
对我来说,测试一些最佳结果输出很有用通过将该命令设置为
/etc/apt/sources.list
中的我的镜像,然后执行time sudo apt update
,以查看从该镜像下载软件包列表花费了多长时间。我测试了前三个建议,它们都很快速,但是其中一个是
time sudo apt update
测试中其他两个建议的两倍。这是
python /usr/lib/python3/dist-packages/softwareproperties/MirrorTest.py
的示例输出:mirror: es-mirrors.evowise.com - time: 0.183778047562
mirror: it-mirrors.evowise.com - time: 0.18604683876
mirror: la-mirrors.evowise.com - time: 0.192630052567
mirror: ny-mirrors.evowise.com - time: 0.208723068237
mirror: mirrors.accretive-networks.net - time: 0.385910987854
mirror: mirror.team-cymru.org - time: 0.46785402298
mirror: mirrors.psu.ac.th - time: 1.64231991768
and the winner is: es-mirrors.evowise.com
评论
遗憾的是,它无法正常工作。该脚本使用5个ping最低的服务器,然后通过下载〜1M文件(来自dist的main中的Packages.gz)按带宽对它们进行评分。如果您修改脚本以将其增加到25个服务器并下载500M文件,则会得到完全不同的结果,这次是正确的。
–乔斯林
19年2月16日在11:14
确实是@Jocelyn!我制作了一个易于使用的补丁并做了一些改进:gist.github.com/shvchk/b81e4579bff13486871f99404c497759
– Shevchuk
20-11-26在19:38
#10 楼
获得最快镜像的最简单有效的方法是使用aptmirror://
来源,请参见https://mvogt.wordpress.com/2011/03/21/the-apt-mirror-method /
#11 楼
我使用以下命令自动选择镜像(并禁用deb-src)sudo sed -i -e 's%http://archive.ubuntu.com/ubuntu%mirror://mirrors.ubuntu.com/mirrors.txt%' -e 's/^deb-src/#deb-src/' /etc/apt/sources.list
#12 楼
如果您希望某个实用程序执行此操作,则可以将此类实用程序实现为简单的bash脚本,如下所示。如果您想使用该实用程序而不需要pip / nodejs,这可能会很有用。 #!/bin/bash
if [ -z "" ]
then
echo Usage: sudo q4312079q http://mirrors.ubuntu.com/mirrors.txt
echo OR consider one of...
for mirror in `wget http://mirrors.ubuntu.com/mirrors.txt -O - 2> /dev/null`
do
(
host=`echo $mirror |sed s,.*//,,|sed s,/.*,,`
echo -e `ping $host -c1 | grep time=|sed s,.*time=,,`:' \t\t'$mirror
) &
done
wait
exit 1
fi
OLD_SOURCE=`cat /etc/apt/sources.list | grep ^deb\ | head -n1 | cut -d\ -f2`
[ -e /etc/apt/sources.list.orig ] || cp /etc/apt/sources.list /etc/apt/sources.list.orig
cp /etc/apt/sources.list /etc/apt/sources.list.tmp
sed "s,$OLD_SOURCE,," < /etc/apt/sources.list.tmp > /etc/apt/sources.list
#13 楼
其他答案(包括已接受的答案)不再有效(对于Ubuntu 11.04及更高版本),因为它们推荐了Debian软件包,例如netselect-apt
和apt-spy
,它们不适用于Ubuntu。有两种不同的工作方式以下是对该问题的答案:
使用apt-get的
mirror:
方法此方法向Ubuntu服务器询问以下列表:根据您的IP镜像您附近的位置,然后选择其中之一。最简单的选择,但缺点是有时最近的镜像可能不是最快的镜像。
使用netselect的命令行foo
向您展示如何使用使用netselect工具从网络上而不是地理位置上查找您最近更新最快的服务器。使用
sed
替换sources.list
中的镜像。使用
sed
替换sources.list
中的镜像由于某些来源使用附加文件夹作为其路径的一部分,所以可能更好使用备用分隔符语法。
sudo sed -i 's%us.archive.ubuntu.com%mirrors.gigenet.com/ubuntuarchive/%' /etc/apt/sources.list
#14 楼
默认软件属性GTK和Qt应用程序具有“选择最佳服务器”实用程序,该实用程序使用来自MirrorTest.py
的python3-software-properties
。也可以在CLI中使用。安装镜像测试实用程序:
sudo apt install python3-software-properties --no-install-recommends
使用它:
LC_ALL=C python3 /usr/lib/python3/dist-packages/softwareproperties/MirrorTest.py
但是,它只测试了5台服务器,下载的文件只有100KB,因此结果不太准确。
为了获得更好的结果,我制作了一个补丁程序,可以使用20台服务器,30MB文件和更多信息:
下载并应用补丁:
wget -qO- https://gist.githubusercontent.com/shvchk/b81e4579bff13486871f99404c497759/raw/MirrorTest.py.patch | sudo patch -d/ -p0
照常使用:
LC_ALL=C python3 /usr/lib/python3/dist-packages/softwareproperties/MirrorTest.py
示例输出:
> LC_ALL=C python3 /usr/lib/python3/dist-packages/softwareproperties/MirrorTest.py
Running ping tests
Running download tests
Testing mirror.wff-gaming.de
Testing ubuntu.melbourneitmirror.net
Testing linux.xjtuns.cn
Testing mirrors.avalonhosting.services
Testing mirrors.codec-cluster.org
Testing ftp.utexas.edu
Testing mirror.plustech.de
Testing mirror.ratiokontakt.de
Testing mirror2.tuxinator.org
Testing mirror.kumi.systems
Testing ubuntu.cybertips.info
Testing files.tux-users.net
Testing linux.darkpenguin.net
Testing mirrors.aliyun.com
Testing mirror.eu-fr.kamatera.com
Testing ny-mirrors.evowise.com
Testing la-mirrors.evowise.com
Testing mirror.de.leaseweb.net
Testing es-mirrors.evowise.com
Testing uk-mirrors.evowise.com
Testing mirrors.ukfast.co.uk
Testing mirrors.advancedhosters.com
mirror: uk-mirrors.evowise.com - time: 0.48804259300231934
mirror: es-mirrors.evowise.com - time: 0.5114705562591553
mirror: mirror.eu-fr.kamatera.com - time: 0.5532209873199463
mirror: ny-mirrors.evowise.com - time: 0.567798376083374
mirror: linux.darkpenguin.net - time: 0.6391427516937256
mirror: mirror.de.leaseweb.net - time: 0.7773537635803223
mirror: files.tux-users.net - time: 0.957298755645752
mirror: mirror2.tuxinator.org - time: 0.9695150852203369
mirror: la-mirrors.evowise.com - time: 1.1493926048278809
mirror: ubuntu.cybertips.info - time: 1.1670680046081543
mirror: mirrors.aliyun.com - time: 1.2511329650878906
mirror: mirror.ratiokontakt.de - time: 1.2832701206207275
mirror: mirrors.advancedhosters.com - time: 1.8812928199768066
mirror: mirrors.ukfast.co.uk - time: 2.537770986557007
mirror: mirror.plustech.de - time: 11.090754270553589
and the winner is: uk-mirrors.evowise.com
评论
在正则表达式中,。字符表示任何字符。如果希望它与。匹配,则需要用\对其进行转义,因此us.archive [..]应该是us \ .archive [..]相关:askubuntu.com/questions/37753/…
就我而言,我必须用斜杠(/)代替#号。否则我会被sed:-e expression#1,char 53:unterminated s'command`。
@EthanLeroy与Ubuntu 12.04.3相同
应该用斜线而不是散列。