列出 sources.list.d 下的多个存储库?

列出 sources.list.d 下的多个存储库?

我可以向*.list中的一个文件添加多个备用存储库/etc/apt/sources.list.d吗?这样,对于指定的包,如果第一个存储库不可用,apt-get则会尝试从列表中的下一个存储库下载相同的包?

例如,我可以创建一个名为/etc/apt/sources.list.d/games.list以下内​​容的文件吗?...

deb http://archive.getdeb.net/ubuntu trusty-getdeb apps
deb http://mirrors.dotsrc.org/getdeb/ubuntu trusty-getdeb games

...这样,如果http://archive.getdeb.net/ubuntu发生故障,将apt-get自动尝试http://mirrors.dotsrc.org/getdeb/ubuntu

答案1

我相信我已经回答了我自己的问题:

apt-get 与 sources.list.d 的行为是从给定*.list文件中列出的第一个可用存储库中检索包。

今天存储库archive.getdeb.net/ubuntu恰好关闭了,因此我能够执行以下实验来验证这一点:

  1. 我创建了一个名为的文件,/etc/apt/sources.list.d/games.list其内容如下:

    deb http://archive.getdeb.net/ubuntu trusty-getdeb apps
    
  2. 然后我从源重新同步了包索引文件:

    $ sudo apt-get update | grep getdeb
    Hit http://archive.getdeb.net trusty-getdeb InRelease
    Hit http://archive.getdeb.net trusty-getdeb/apps amd64 Packages
    Hit http://archive.getdeb.net trusty-getdeb/apps i386 Packages
    Ign http://archive.getdeb.net trusty-getdeb/apps Translation-en_US
    Ign http://archive.getdeb.net trusty-getdeb/apps Translation-en
    

    我注意到 apt-get 警告说它正在忽略 ( Ign) 存储库。这是因为 apt-get 收到 404 消息,表示 URL 不可用。

  3. 尝试模拟从该存储库安装包表明该存储库确实不可用。

    $ sudo apt-get -s install warsow
    Reading package lists... Done
    Building dependency tree       
    Reading state information... Done
    E: Unable to locate package warsow
    
  4. 然后我编辑/etc/apt/sources.list.d/games.list,添加一个包含的镜像存储库相同的包装:

    deb http://archive.getdeb.net/ubuntu trusty-getdeb apps
    deb http://mirrors.dotsrc.org/getdeb/ubuntu trusty-getdeb games
    
  5. 和以前一样,我从源重新同步了包索引文件:

    $ sudo apt-get update | grep getdeb
    Get:1 http://mirrors.dotsrc.org trusty-getdeb InRelease [8,131 B]
    Hit http://archive.getdeb.net trusty-getdeb InRelease
    Get:2 http://mirrors.dotsrc.org trusty-getdeb/games amd64 Packages [69.8 kB]
    Hit http://archive.getdeb.net trusty-getdeb/apps amd64 Packages
    Hit http://archive.getdeb.net trusty-getdeb/apps i386 Packages
    Get:3 http://mirrors.dotsrc.org trusty-getdeb/games i386 Packages [71.5 kB]
    Ign http://archive.getdeb.net trusty-getdeb/apps Translation-en_US
    Ign http://archive.getdeb.net trusty-getdeb/apps Translation-en
    Ign http://mirrors.dotsrc.org trusty-getdeb/games Translation-en_US
    Ign http://mirrors.dotsrc.org trusty-getdeb/games Translation-en
    

    令人惊讶的是,apt-get 警告说它忽略了这两个存储库!

    网上搜索后发现,Ign如果存储库不可用,apt-get 会显示警告或者如果没有可用的软件包翻译。在 的情况下mirrors.dotsrc.org,存储库已启动,但 apt-get 请求从英语翻译成英语,而这显然不存在。因此,Ign新存储库的消息毕竟不是错误。

  6. 当我尝试模拟安装与之前相同的软件包时,两个都中的存储库/etc/apt/sources.list.d/games.list,apt-get 确实找到了该包。

    $ sudo apt-get -s install warsow
    Reading package lists... Done
    Building dependency tree       
    Reading state information... Done
    The following extra packages will be installed:
      warsow-data
    The following NEW packages will be installed:
      warsow warsow-data
    0 upgraded, 2 newly installed, 0 to remove and 24 not upgraded.
    Inst warsow-data (1.51-1~getdeb2 GetDeb:14.04/trusty-getdeb [all])
    Inst warsow (1.51-1~getdeb1 GetDeb:14.04/trusty-getdeb [amd64])
    Conf warsow-data (1.51-1~getdeb2 GetDeb:14.04/trusty-getdeb [all])
    Conf warsow (1.51-1~getdeb1 GetDeb:14.04/trusty-getdeb [amd64])
    
  7. 因此,apt-get 使用 sources.list.d 的行为是从给定*.list文件中列出的第一个可用存储库中检索包。

相关内容