写在前面
每次安装完 Ubuntu 的第一件事情就是给 apt 换源,而换源过程基本就是复制粘贴,今天突然发现自己复制粘贴这么久也不知道粘贴了什么,于是了解了一下并分享出来。总之就是一篇看了也没什么用的文章,了解一下而已。
正文
Linux 上有问题就先 man 一下,于是我 man apt,然后发现没有说关于 source.list 的格式,不过在手册的末尾最后发现有专门的文档讲解文件格式,于是 man source.list。
其实 apt 源文件并不只有 source.list,也有一个叫 source.sources。两者的区别是格式不同。前者使用的格式称为 ONE-LINE-STYLE,也就是网上常见的一行一个的那种。后者使用的格式叫做 DEB822-STYLE,这种格式在网上应该比较少见。
ONE-LINE-STYLE
这种格式是最常见的了,通常从网上复制粘贴来的就是这个格式。下面是 Ubuntu 20.04 LTS 的默认源。
# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to
# newer versions of the distribution.
deb http://archive.ubuntu.com/ubuntu/ focal main restricted
# deb-src http://archive.ubuntu.com/ubuntu/ focal main restricted
## Major bug fix updates produced after the final release of the
## distribution.
deb http://archive.ubuntu.com/ubuntu/ focal-updates main restricted
# deb-src http://archive.ubuntu.com/ubuntu/ focal-updates main restricted
## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team. Also, please note that software in universe WILL NOT receive any
## review or updates from the Ubuntu security team.
deb http://archive.ubuntu.com/ubuntu/ focal universe
# deb-src http://archive.ubuntu.com/ubuntu/ focal universe
deb http://archive.ubuntu.com/ubuntu/ focal-updates universe
# deb-src http://archive.ubuntu.com/ubuntu/ focal-updates universe
## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team, and may not be under a free licence. Please satisfy yourself as to
## your rights to use the software. Also, please note that software in
## multiverse WILL NOT receive any review or updates from the Ubuntu
## security team.
deb http://archive.ubuntu.com/ubuntu/ focal multiverse
# deb-src http://archive.ubuntu.com/ubuntu/ focal multiverse
deb http://archive.ubuntu.com/ubuntu/ focal-updates multiverse
# deb-src http://archive.ubuntu.com/ubuntu/ focal-updates multiverse
## N.B. software from this repository may not have been tested as
## extensively as that contained in the main release, although it includes
## newer versions of some applications which may provide useful features.
## Also, please note that software in backports WILL NOT receive any review
## or updates from the Ubuntu security team.
deb http://archive.ubuntu.com/ubuntu/ focal-backports main restricted universe multiverse
# deb-src http://archive.ubuntu.com/ubuntu/ focal-backports main restricted universe multiverse
## Uncomment the following two lines to add software from Canonical's
## 'partner' repository.
## This software is not part of Ubuntu, but is offered by Canonical and the
## respective vendors as a service to Ubuntu users.
# deb http://archive.canonical.com/ubuntu focal partner
# deb-src http://archive.canonical.com/ubuntu focal partner
deb http://security.ubuntu.com/ubuntu/ focal-security main restricted
# deb-src http://security.ubuntu.com/ubuntu/ focal-security main restricted
deb http://security.ubuntu.com/ubuntu/ focal-security universe
# deb-src http://security.ubuntu.com/ubuntu/ focal-security universe
deb http://security.ubuntu.com/ubuntu/ focal-security multiverse
# deb-src http://security.ubuntu.com/ubuntu/ focal-security multiverse
下面是此风格的基本格式。
deb option1=value1 option2=value2 ] uri suite [component1] [component2] [...]
deb-src option1=value1 option2=value2 ] uri suite [component1] [component2] [...]
- deb:表示从这里可以找到二进制程序,即包含已经编译好的程序。
- deb-src:表示从这里找到源码。
- option:表示额外的选项,比如
arch表示体系结构,amd64啥的。语法上不仅支持option=value1也支持option=value1,value2、option-=value和option+=value。+=和-=仅支持那些可能有多个值的选项。 - uri:就是源的网址,比如腾讯的 apt 源的网址就是 http://mirrors.cloud.tencent.com/ubuntu/ 。
- suite:代表发行版的类型如
stable。也可以代表发行版的代号比如 Ubutnu 20.24 LTS 的代号就是focal[3]。所以说如果你用的是 Ubutnu 18.04,那么你应该写bionic,因为这个版本的代号就叫bionic[3]。不过版本代号后面可能还会跟着如-backports这样的后缀,相关信息见 UbuntuUpdates - Community Help Wiki。 - component:表示软件包的分类,不同的 Linux 发行版有不同的分类。对于 Ubuntu 来说有下面的几种。
DEB822-STYLE
此格式从 apt 1.1 开始支持,文件必须以 .sources 结尾。下面是它的基本格式。
Types: deb deb-src
URIs: uri
Suites: suite
Components: [component1] [component2] [...]
option1: value1
option2: value2
Types: deb deb-src
URIs: uri
Suites: suite
Components: [component1] [component2] [...]
option1: value1
option2: value2
同一条目中的每个字段各占一行,不同的条目间用一行空行分隔。各个字段的含义与 ONE-LINE-STYLE 中的完全相同。你也可以通过添加一行 Enabled: no 来禁用某一个条目。如果一个字段有多个值则每个值之间用空格分隔。
例子
下面的两种格式的源配置是等效的。
deb http://us.archive.ubuntu.com/ubuntu focal main restricted
deb http://security.ubuntu.com/ubuntu focal-security main restricted
deb http://us.archive.ubuntu.com/ubuntu focal-updates main restricted
Types: deb
URIs: http://us.archive.ubuntu.com/ubuntu
Suites: focal focal-updates
Components: main restricted
Types: deb
URIs: http://security.ubuntu.com/ubuntu
Suites: focal-security
Components: main restricted