加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

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

(2013-08-11 23:35:14)

为什么要分析 sources.list 的解析? 反正我是遇到了恶心的问题,不分析就没法update,具体原因就不解释了,反正搜索到这篇文章的人,肯定也是碰到了类似问题。什么?你没有问题? 那还浪费时间看这个干嘛? 有这功夫去看点有意义的东西吧!

 

为啥这么说呢? 因为我花了很多时间,搞明白了 apt sources.list 的格式,问题解决了,可是这些知识又有什么意义呢? 和我真正想干的事完全不相干啊,纯属浪费时间而已。这属于被逼无奈,不搞明白了就没法干正事的被动无用功!

所以,读了王垠最新的吐槽:《谈 Linux,Windows 和 Mac》后( http://www.yinwang.org/blog-cn/2013/03/07/linux-windows-mac/),我是真心赞同他的某些观点:在易用性方面,linux和windows还差得很远。

可是话又说回来了,我们对大牛也不能一味盲从~ 苹果同样是 unix 内核,现在大家公认的,苹果在易用性方面做到了最好(也不完美,但好歹比其他的都强);android 用的 linux内核,易用性也相当不错。所以我觉得,这个易用性和*nix还是windows没啥必然的联系,易用性是个水磨功夫,不管是方便的各种GUI界面,还是整个系统级的统一接口风格,都要有强大的利益驱动,才会有人去做。不然我只是自己写着玩的,激情过后,谁还有心情再翻来覆去的为别人怎么用操心,反正我自己用着没任何问题,你觉得不好用?  那只能说明你笨。。。

吐槽结束,下面是详细内容:

-----------------------------------

/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


这句话到底怎么解释,对应着服务器上的什么目录呢?  对应的是:


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!

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有