apt系统中sources.list文件的解析

/etc/apt/sources.list

一般源信息都存在这个文件中。但众多软件源都放在一个文件中实在有点乱,于是新版ubuntu也有了分类的方法:

文件夹  /etc/apt/sources.list.d/  

在这个文件夹下,随便起名字, 仅仅要以 list 为扩展名就可以。比方google chrome 的源就放在了

/etc/apt/sources.list.d/google-chrome.list   文件里。

>> cat google-chrome.list

deb http://dl.google.com/linux/chrome/deb/ stable main

很多其它的背景信息就不说了,随便google一下就有比我具体得多的介绍, 仅仅说说我google了半天也没找到,浪费了不少时间才分析出来的东西: sources.list 文件的解析:

deb http://cn.archive.ubuntu.com/ubuntu/ precise main restricted

这句话究竟怎么解释,相应着server上的什么文件夹呢?  相应的是:

http://cn.archive.ubuntu.com/ubuntu/dists/precise/main

http://cn.archive.ubuntu.com/ubuntu/dists/precise/restricted

也就是说,解析规则是这种 :

uri + "dists" + 版本号信息 + 若干个分类

http://cn.archive.ubuntu.com/ubuntu/dists   这个文件夹下有若干文件夹,里面有 ubuntu 的全部版本号

http://cn.archive.ubuntu.com/ubuntu/dists/precise/  这个文件夹下有若干文件夹,里面有

binary-amd64/                                      26-Apr-2012 06:49       -
binary-i386/                                       26-Apr-2012 06:49       -
debian-installer/                                  14-Oct-2011 08:29       -
dist-upgrader-all/                                 21-Apr-2012 01:33       -
i18n/                                              26-Apr-2012 06:49       -
installer-amd64/                                   24-Apr-2012 03:35       -
installer-i386/                                    24-Apr-2012 04:05       -
source/

deb-src 会相应 source,deb 会相应 binary-xxx  ,xxx就是arch,比方i386(32位)或是amd64(64位)。(其它的未深究)

默认会 If this option is not set all architectures defined by the APT::Architectures option will be downloaded.

option 是啥?比方想自己指定 arch,那就这么写:

deb [arch=amd64] http://cn.archive.ubuntu.com/ubuntu/ precise main restricted

则相应:

http://cn.archive.ubuntu.com/ubuntu/dists/precise/main/binary-amd64/

解析时会自己主动加上 "binary-"。另外这里坑爹的是,必需要加 [] ,不然就报错。man 里是这么写的:

deb [ options ] uri distribution [component1] [component2] [...]

尼玛这样的写法谁知道是一定要加[]啊! 我開始就直接无视,结果浪费非常多时间。。

最后再罗嗦几句:

还是看 deb http://cn.archive.ubuntu.com/ubuntu/ precise main restricted

在 http://cn.archive.ubuntu.com/ubuntu/dists/precise 下应该存在 Release 文件,在这个文件里会有文件夹的具体信息

也就是说,你自己拼地址的时候,uri + version 要拼到一个有 Release 的文件夹,不然就会报错。

还有,Release文件假设和实际的文件夹结构不符(怪事年年有),那就要用前面说的 option 了,good lucky!

原文地址:https://www.cnblogs.com/kex1n/p/5845810.html