我想sources.list
在全新的Ubuntu Server安装中使用最快的服务器从命令行更新我的文件。我知道使用GUI可以很容易地做到这一点,但是似乎没有从命令行执行此操作的简单方法吗?
#
用斜杠(/
)代替标牌。否则我会得到sed: -e expression #1, char 53: unterminated
命令。
我想sources.list
在全新的Ubuntu Server安装中使用最快的服务器从命令行更新我的文件。我知道使用GUI可以很容易地做到这一点,但是似乎没有从命令行执行此操作的简单方法吗?
#
用斜杠(/
)代替标牌。否则我会得到sed: -e expression #1, char 53: unterminated
命令。
Answers:
包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来找出到某个位置的连接速度。跳数和延迟时间。
您不再需要进行任何搜索-正如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
/etc/apt/sources.list
文件顶部的所有内容都将使该文件根据您的地理位置自动为您选择一个镜像。用户(Lucid(10.04),Maverick(10.10),Natty(11.04)和Oneiric(11.10))的用户可以替换
precise
为适当的名称。
sudo apt-get update
才能apt-get install
使用最近的镜像。
这是永远有效的一种方法,它使用了古老netselect
而又grep
神奇的方法:
dpkg -i
netselect
为您的体系结构。(大约125 KB,无依赖项)使用此工具从您所在的位置查找最快的Ubuntu镜像,无论是最新的镜像还是最多延迟六个小时的镜像(我将在下面进行解释,对不起,它在Markdown中无法很好地分解)
须藤netselect -v -s10 -t20`wget -q -O- https://launchpad.net/ubuntu/+archivemirrors | grep -P -B8“ statusUP | statusSIX” | grep -o -P“(f | ht)tp:// [^ \”] *“`
netselect
:
-v
使它有点冗长-您希望看到进度点和消息,它们告诉您映射到同一IP的不同镜像已合并:)-sN
控制最后需要多少个镜像(例如,前10个镜像)-tN
是每个反射镜进行速度测试的时间(默认值为10;数字越大,花费的时间越长,但结果越可靠。)这是反引号内容(请勿粘贴,仅用于解释)
wget -q -O- https://launchpad.net/ubuntu/+archivemirrors | grep -P -B8“ status(UP | SIX)” | grep -o -P“(f | ht)tp:// [^ \”] *“
wget
从https://launchpad.net/ubuntu/+archivemirrors中获取最新的镜像状态。grep
提取最新的镜像或落后六个小时的镜像,以及先前上下文的8行,其中包括实际的ftp / http URLgrep
提取这些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/
netselect
并非总是选择最合适的URL来显示多个镜像映射到单个IP;3号也被称为nz.archive.ubuntu.com
!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 $2 }'
sort -gr | head -3
。
curl -s http://mirrors.ubuntu.com/mirrors.txt
仅返回一行:http://archive.ubuntu.com/ubuntu/
这违背了在几行中进行选择的目的。: - /
curl
此答案的部分很有帮助,因为curl -r 0-102400 -o /dev/null [server_url]/ls-lR.gz
在[server_url]
中列出的基本镜像URL在哪里mirrors.txt
,它可以比较镜像中索引文件的前100K。
这是我编写的Python脚本,该脚本查找具有最低TCP延迟的镜像。
该脚本还提供从启动板获取的带宽和状态数据,并将sources.list
自动或使用从列表中选择的镜像生成新文件。
一个使用示例,使您可以从5个美国镜像中选择对机器的延迟最少的镜像:
$ apt-select --country US -t 5 --choose
netselect
在较新版本的Ubuntu中不可用
README
在第一个链接中。
我知道这并不能直接回答OP的问题,但是Ubuntu /台式机/ GUI版本中有一个按钮可以为您找到最佳镜像。它似乎运行得很好,所以我简要地研究了一下,但是没有时间跟进。
之所以提出它,是因为我认为将其制作为命令行实用程序非常简单并且可以使用。
如果有人感兴趣,该测试似乎位于:
/usr/lib/python3/dist-packages/softwareproperties/MirrorTest.py
再说一次,就我所知,但我想我会把它留在这里,以防有人要。等我多一点时间后,我可能会再考虑一下。
$ python3 /usr/lib/python3/dist-packages/softwareproperties/MirrorTest.py
>>[top 5 omitted] and the winner is: ny-mirrors.evowise.com
在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
对于命令行,您可以使用称为apt-smart的Python工具
一个使用示例,让您列出您所在国家/地区中排名最高的镜像(自动检测):
$ apt-smart -l
使用-l
或--list-mirrors
,您将获得(来自Travis CI US服务器的示例输出):
---------------------------------------------------------------------------------------------------------
| 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
如果您要执行以下操作,也可以更改您的sources.list:
$ apt-smart -a
使用-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
,有关复制粘贴安装命令和用法的详细信息,请参阅Project Readme。
如果您希望某个实用程序执行此操作,则可以将此类实用程序实现为简单的bash脚本,如下所示。如果您想使用该实用程序而不需要pip / nodejs,这可能会很有用。
#!/bin/bash
if [ -z "$1" ]
then
echo Usage: sudo $0 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,$1," < /etc/apt/sources.list.tmp > /etc/apt/sources.list
其他答案(包括已接受的答案)不再有效(对于Ubuntu 11.04及更高版本),因为它们推荐了Debian软件包,例如netselect-apt
和apt-spy
,它们不适用于Ubuntu。
以下是此问题的两个不同的工作答案:
mirror:
方法
该方法根据您的IP向Ubuntu服务器询问您附近的镜像列表,然后选择其中一个。最简单的选择,但缺点是有时最近的镜像可能不是最快的镜像。
sed
中更换镜sources.list
。sed
来代替镜子sources.list
由于某些源使用附加文件夹作为其路径的一部分,因此最好使用备用分隔符语法。
sudo sed -i 's%us.archive.ubuntu.com%mirrors.gigenet.com/ubuntuarchive/%' /etc/apt/sources.list
获得最快镜像的最简单有效的方法是使用apt mirror://
源,请参见
https://mvogt.wordpress.com/2011/03/21/the-apt-mirror-method/