1. 客户端 /etc/apt/sources.list 配置文件
/etc/apt/sources.list
是 debian/ubuntu 系统用来指定软件源的文件,它的基本格式为:
deb uri distribution [component1] [component2] […]
deb-src uri distribution [component1] [component2] […]
1.1. deb/deb-src
deb 关键词指明二进制包的位置,deb-src 则是源码包。
每个档案可以有 deb 或者 deb-src,或者兼而有之,但是两者必须分开声明。
1.2. uri
软件包的根目录 $ARCHIVE_ROOT
(root of the archive),由 协议://URL/PATH
组成,比如 http://mirrors.163.com/debian/
。
debian/
这个目录没有特殊规定,可以是任意的文件夹,也取决于构建软件源时执行命令位置和参数。
常用的 uri 类型:
- cdrom:
cdrom:[description_of_cd]/
- ftp:
ftp://ftp.domain.ext/path/to/repository
- http:
http://www.domain.ext/path/to/repository
- smb:
smb://path/to/repository
- nfs:
file://path/to/local/directory
1.3. distribution
系统的发行版。
一般 $ARCHIVE_ROOT/dists
下面的子文件夹,可以使用嵌套的文件夹,比如 other/ubuntu
。发行版对应 Release 文件里的套件 (suite) 或者代号 (codename)。
debian 体系的发行版本:
- Debian13-Trixie
- Debian12-Bookworm
- Debian11-Bullseye
- Debian10-Buster
- Debian9-Stretch
- Debian8-Jessie
- Debian7-Wheezy
- Debian6.0-Squeeze
- Debian5.0-Lenny
- Debian4.0-Etch
- Debian3.1-Sarge
- Debian3.0-Woody
- Debian2.2-Potato
- Debian2.1-Slink
- Debian2.0-Hamm
- Debian1.3-Bo
- Debian1.2-Rex
- Debian1.1-Buzz
Ubuntu 系统的发行版本:
- Ubuntu20.10-Groovy
- Ubuntu20.04-Focal
- Ubuntu19.10-Eoan
- Ubuntu19.04-Disco
- Ubuntu18.10-Cosmic
- Ubuntu18.04-Bionic
- Ubuntu17.10-Artful
- Ubuntu17.04-Zesty
- Ubuntu16.10-Yakkety
- Ubuntu16.04-Xenial
- Ubuntu15.10-Wily
- Ubuntu15.04-Vivid
- Ubuntu14.10-Utopic
- Ubuntu14.04-Trusty
- Ubuntu13.10-Saucy
- Ubuntu13.04-Raring
- Ubuntu12.04-Precise
- Ubuntu11.10-Oneiric
- Ubuntu11.04-Natty
- Ubuntu10.10-Maverick
- Ubuntu10.04-Lucid
每个版本有 stable、testing、unstable、oldstable 表示软件包稳定程度:
oldstable
: 顾名思义,就是以前的稳定发行版了,如 oldstable 中 Debian6.0.8 目录的一个链接,两者内容完全一致。stable
: 是指现在的稳定发行版,对于每个 debian 来说,每个稳定发行版都会有一个代号,如 debian 6 叫做 squeeze,debian 7 叫做 wheezy。testing
: 指目前还暂时处于测试阶段的 debian 发行版,如 wheezy 往下发展就是 jessie 了,所以 testing 代指的就是 jessie 目录,它是 jessie 的一个链接。unstable
: 那就是不稳定版本了,其实它还有一个代号:sid,我们知道 debian 的发行版本名称大都来自玩具总动员中的角色名称,而 sid 就是那个专门破坏玩具的邻居家坏小孩,所以就把 unstable 这个不稳定的软件目录起名为 sid 了,这里面的软件一般都是最新的,稳定性、安全稳定值得商榷,如果你想做试验小白鼠,大可使用这里的软件。经过一段时间的测试,这里面的软件可能会进入下一个阶段 testing 目录从而出现在下一个 debian 发行版中,要么就夭折被直接抛弃了。
1.4. component
表示软件包的开放程度,可以指定多个
标准的 debian 组件包括:
main
: Debian 里最基本及主要且符合自由软件规范的软件 ( packages )。contrib
: 这里头软件虽然可以在 Debian 里头运作,即使本身属于自由软件但多半却是相依于非自由 ( non-free ) 软件。non-free
: 不属于自由软件范畴的软件。non-us
: 这个分类里头的软件都来自非美国地区,当中可能有牵扯到专利、加密..等等问题。marillat
: 对应 Christian Marillat 的软件仓库,包括mplayer, transcode等。rareware
: 对应 rarewares.org 的软件仓库, 包括很多音效程序,如lame, musepack, beep media player等。ustc
: 对应 debian@ustc 维护的一些软件包,如 mule-gbk, gaim-openq, scim, stardict dicts, patched xpdf, irssi, xmms。java
: 对应 Blackdown java。包括 j2re, j2sdk ,mozilla java plugin。firefly
: 对应打过 firefly 补丁的包,包括 fontconfig mozilla mozilla-firefox pango1.0 qt-x11-free xftmisc
: 对应其它无分类的包,包括 nvidia-kernel, winex3, rox, chmsee 等
而 ubuntu 的组件与之不同:
main
: ubuntu 支持的免费软件包restricted
: 不免费,但是正规支持的universe
:免费,但不是正规支持的multiverse
:不免费,不支持
1.5. 示例描述
我们使用国内的 163 源来说明每一行的具体含义,下面是来自163源 ubuntu 帮助页面的条目:
deb http://mirrors.163.com/ubuntu/ precise main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ precise main restricted universe multiverse
deb/deb-src
: 关键字,deb 指定二进制包, deb-src 指定源码包http://mirrors.163.com/ubuntu/
: 软件包的根目录$ARCHIVE_ROOT
precise
: Ubuntu12.04-Precise 发行版本main restricted universe multiverse
: 表示使用软件包的开放程度列举