「APT」- 临时禁用仓库

  CREATE BY JENKINSBOT

问题描述

在执行 apt-get update 命令时,某些仓库的下载速度比较慢,并且也没有必要更新。

因此我们希望可以临时禁用这些仓库,在需要时再次打开。

该笔记将记录:如何临时禁用 APT 仓库(源),以及需要注意的一些问题。

解决方案

有以下几种方法可以临时禁用仓库:
1)修改 .list 文件,使用井号注释仓库;
2)重命名 .list 文件(仓库源配置文件);

目前(07/10/2019),只能这样做,毕竟 APT 没有像 YUM 那种启动和禁用源的功能。

方法一、修改 .list 文件

1)使用 vim 打开 /etc/apt/source.list 文件;
2)在仓库地址前,添加井号(#)注释仓库即可;

如果每个源文件单独保存在 /etc/apt/source.list.d/ 中,则修改对应的文件即可。

方法二、重命名 .list 文件

该方法相对于前者,更加便捷。但是仅适用于每个仓库当读配置的场景(使用 /etc/apt/source.list.d/ 保存)

不同仓库的配置都保存在 /etc/apt/source.list.d/ 中单独存放的,并且 APT 只能识别以 .list 结尾的仓库源配置文件。因此,可以通过重命名源文件实现:

mv /etc/apt/sources.list.d/foo.list{,.delete}

关于重命名的问题

通过重命名方法存在问题,由于 APT 无法识别 .delete 后缀,因此会产生如下错误:

N: Ignoring file 'foo.list.delete' in directory '/etc/apt/sources.list.d/' as it has an invalid filename extension

解决方法是,创建如下配置文件,忽略 .delete 后缀的文件:

#!/bin/sh

cat >> /etc/apt/apt.conf.d/98ignore-extensions << EOF
Dir::Ignore-Files-Silently:: "\.delete$";
EOF

# 默认值为:.disabled, ~, .bak or .dpkg-[a-z]+
# 即,可以将文件重命名为这些后缀以禁用文件。

参考文献

How to temporarily disable and permanently disable repos in Debian based systems?
How to name files in /etc/apt/sources.list.d/ to be ignored without warnings?
Project structure for python projects
How to choose a PHP project directory structure?