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

评论

在正则表达式中,。字符表示任何字符。如果希望它与。匹配,则需要用\对其进行转义,因此us.archive [..]应该是us \ .archive [..]

相关:askubuntu.com/questions/37753/…

就我而言,我必须用斜杠(/)代替#号。否则我会被sed:-e expression#1,char 53:unterminated s'command`。

@EthanLeroy与Ubuntu 12.04.3相同

应该用斜线而不是散列。

#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 楼

获得最快镜像的最简单有效的方法是使用apt mirror://来源,请参见

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-aptapt-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.pypython3-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