我可以向*.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
恰好关闭了,因此我能够执行以下实验来验证这一点:
我创建了一个名为的文件,
/etc/apt/sources.list.d/games.list
其内容如下:deb http://archive.getdeb.net/ubuntu trusty-getdeb apps
然后我从源重新同步了包索引文件:
$ 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 不可用。尝试模拟从该存储库安装包表明该存储库确实不可用。
$ sudo apt-get -s install warsow Reading package lists... Done Building dependency tree Reading state information... Done E: Unable to locate package warsow
然后我编辑
/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
和以前一样,我从源重新同步了包索引文件:
$ 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
新存储库的消息毕竟不是错误。当我尝试模拟安装与之前相同的软件包时,两个都中的存储库
/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])
因此,apt-get 使用 sources.list.d 的行为是从给定
*.list
文件中列出的第一个可用存储库中检索包。