当我使用 Linux 时,有一个程序可以根据您的位置为您找到最快的 Debian 软件包存储库。CTAN 有类似的程序吗?我一直在手动选择我认为物理上离我很近的存储库,并根据 ping 时间来查找,但这并不是非常可靠。只是问一下,因为我的下载连接速度超过 100 MBit/s,但我仍然需要几个小时才能安装 LaTeX,并且更新软件包需要很长时间。
答案1
假设您使用的是 Linux,您可以使用此命令来查找最快的镜像:
netselect -vv -t40 -s20 $(\
curl -sSL http://dante.ctan.org/mirmon/ | \
grep -oE '<TD ALIGN=RIGHT><A HREF="[^"]*' | \
cut -d\" -f2 \
) | \
cut -c7- | \
LC_ALL=C xargs -tn1 -i curl -sSL -w "%{time_total} %{speed_download} {}\n" -o /dev/null {}FILES.byname | \
sort -n
这将为您提供 20 个最快的镜像(实际测量的下载速度)。它会按速度对它们进行排序(最快的排在最上面),并告诉您下载文件列表(/FILES.byname
)所需的时间以及平均下载速度。
它还相当冗长,会告诉您它在此过程中做了什么。您可以通过删除命令-t
中的标志xargs
以及从命令中删除 1 个或两个-v
标志来减少冗长netselect
。使用参数调整要检查下载速度的服务器总数-s20
。
下面是一个可以在 shell 脚本中使用的版本,它只会输出最快的镜像,而不会输出其他内容。对于 shell 脚本非常有用。
netselect -t40 -s20 $(\
curl -sSL http://dante.ctan.org/mirmon/ | \
grep -oE '<TD ALIGN=RIGHT><A HREF="[^"]*' | \
cut -d\" -f2 \
) | \
cut -c7- | \
LC_ALL=C xargs -n1 -i curl -sSL -w "%{time_total} {}\n" -o /dev/null {}FILES.byname | \
sort -n | \
head -n1 | \
cut -d\ -f2
答案2
netselect
在 Ubuntu 上不再可用,因此我提供了一个不依赖于它的更通用(如果速度慢得多)的答案版本:
curl -sSL http://dante.ctan.org/mirmon/ | grep -oE '<TD ALIGN=RIGHT><A HREF="[^"]*' | cut -d\" -f2 | LC_ALL=C xargs -n1 -i curl -sSL -w "%{time_total} %{speed_download} {}\n" -o /dev/null {}FILES.byname | sort -n
由于某种原因,今天这对我来说不起作用,因此我使用了:
#!/bin/bash
if [ -z "$1" ]
then
for mirror in `curl -sSL http://dante.ctan.org/mirmon/ | grep -oE '<TD ALIGN=RIGHT><A HREF="[^"]*' | cut -d\" -f2`
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
然后将其通过管道传输到 sort -n