使用 Mirror 协议实现 Ubuntu 访问多软件源

Posted by Mike on 2020-05-16

众所周知 Ubuntu 官方软件源访问速度一直都是比较慢的,通常情况下我们为了高效的通过软件源安装软件会使用国内的镜像源。国内虽然有很多可用的镜像源,但有时某些源偶尔也会出现访问故障(比如:清华、北大等镜像源)。出现这样情况的时候通常的解决方法就是更换一个可用的镜像源,但是如果涉及的机器特别多的时候就会非常的麻烦。

难道这是一个无解的问题?当然不是,只能说你运气真好,来对了地方。你一定是上辈子拯救了银河系才有这样的好运,哈哈哈。其实 Apt 源是支持 Mirror 协议的,可以从多个镜像源中自动选择可用的一个。本文将介绍如何利用 Mirror 协议来解决类似问题。

什么是 Mirror 协议

Mirror 协议的实现方法非常的简单,它通过一个 mirrors.txt 的文件对提供的多个源地址进行封装,Apt 会根据 mirror.txt 文件中自动解析并确定最合理的源地址。 以下为官方提供的 mirrors.txt 文件内容示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
http://mirrors.aliyun.com/ubuntu/
http://mirror.lzu.edu.cn/ubuntu/
http://mirrors.cqu.edu.cn/ubuntu/
http://mirrors.cn99.com/ubuntu/
http://mirrors.yun-idc.com/ubuntu/
http://mirrors.njupt.edu.cn/ubuntu/
http://ftp.sjtu.edu.cn/ubuntu/
http://mirrors.nwafu.edu.cn/ubuntu/
http://mirrors.sohu.com/ubuntu/
http://mirrors.huaweicloud.com/repository/ubuntu/
http://mirrors.ustc.edu.cn/ubuntu/
http://mirrors.nju.edu.cn/ubuntu/
http://mirrors.tuna.tsinghua.edu.cn/ubuntu/
http://mirrors.shu.edu.cn/ubuntu/
http://archive.ubuntu.com/ubuntu/

使用 Mirror 协议

要使用 Mirror 协议来进行多源更新的方法其实很简单,只需将 /etc/apt/sources.list 文件中的指定的软件源地址修改为使用 Mirror 协议的地址就可以了。这里以 Ubuntu 18.04 为例:

将如下软件源地址

1
deb http://cn.archive.ubuntu.com/ubuntu/ bionic main restricted universe multiverse

修改为以下类似即可:

1
deb mirror://mirrors.ubuntu.com/mirrors.txt bionic main restricted universe multiverse

这里提供一个完整的使用 Mirror 协议的 Ubuntu 18.04 的软件源配置文件,有需要的同学可以直接拿去用哟~

1
2
3
4
5
6
7
8
9
10
11
###### Ubuntu Main Repos
deb mirror://mirrors.ubuntu.com/mirrors.txt bionic main restricted universe multiverse
deb-src mirror://mirrors.ubuntu.com/mirrors.txt bionic main restricted universe multiverse

###### Ubuntu Update Repos
deb mirror://mirrors.ubuntu.com/mirrors.txt bionic-security 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-src mirror://mirrors.ubuntu.com/mirrors.txt bionic-security 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

当使用 Mirror 协议后,执行 Apt 相关操作时会首先访问 mirrors.ubuntu.com/mirrors.txt 文本中所有的可用镜像地址,得到列表后 Apt 会自动选择一个速度最快的进行下载。官方还根据所在地区不同,提供指定国家的 mirror.txt。比如:中国可以设置为 mirrors.ubuntu.com/CN.txt,这样使用的都是国内的镜像源,就可以保证镜像源的访问速度。

使用 Mirror 协议后由于同时存在多个可用的镜像源地址,这样就可以很好的避免某个单一镜像源临时不可用的问题。

自定义 Mirror 地址

由于官方提供的 mirrors.txt 中的镜像源地址包含了很多教育站点地址,这些地址可能有时访问速度并不是很快。这时我们可以根据需要自定义 mirror.txt 这个源列表,自定义可用的源列表的方法非常的简单,只需要开启一个标准的 HTTP Server 能返回 mirror.txt 这个文本即可。

mirrors.txt 中推荐优先选阿里云、网易、华为、清华大学等比较知名的镜像源地址,比如下面这些:

1
2
3
4
5
6
7
http://mirrors.aliyun.com/ubuntu/
http://mirrors.huaweicloud.com/repository/ubuntu/
http://mirrors.yun-idc.com/ubuntu/
http://mirrors.cn99.com/ubuntu/
http://mirrors.tuna.tsinghua.edu.cn/ubuntu/
http://mirrors.ustc.edu.cn/ubuntu/
http://mirrors.sohu.com/ubuntu/

参考文档

  1. https://www.google.com
  2. http://t.cn/ExNkmSY
  3. http://t.cn/ExpvuQ6