zoukankan      html  css  js  c++  java
  • apt系统中sources.list文件的解析


    为什么要分析 sources.list 的解析? 我不是APT的开发者, 仅仅是遇到了躲只是的问题,不分析就没法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


    这句话究竟怎么解释,相应着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!


  • 相关阅读:
    如何在iTerm2中配置oh my zsh?
    sublime中格式化jsx文件
    ES6 new syntax of Literal
    ES6 new syntax of Rest and Spread Operators
    How to preview html file in our browser at sublime text?
    ES6 new syntax of Default Function Parameters
    ES6 new syntax of Arrow Function
    七牛云2018春招笔试题
    Spring-使用注解开发(十二)
    Spring-声明式事物(十一)
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/4007229.html
Copyright © 2011-2022 走看看