如何在基于 Debian 的系统中临时禁用和永久禁用存储库?

alk*_*ary 7 rpm packaging package-management repository deb

我知道如何在基于 Red Hat 的系统上执行此操作。

 yum –disablerepo=*  --enablerepo=epel update
Run Code Online (Sandbox Code Playgroud)

上述命令将暂时禁用所有 repos 并启用 epel 并仅更新 epel 包。

 yum update–disablerepo=remi-safe,updates
Run Code Online (Sandbox Code Playgroud)

这还将在更新所有其他启用存储库时禁用两个存储库。

例如,在 ubuntu 上相当于什么?

我知道我们可以在 /etc/apt/sources.list.d

但这将永久禁用回购,对吗?

例如,有没有一种方法可以apt-get update在暂时禁用一个 repo 的同时运行?

小智 8

我发现管理 repos 的最简单方法是将它们放在/etc/apt/sources.list.d/. 这样一来,禁用回购一样简单的文件移动/etc/apt/sources.list.d/repo.list/etc/apt/sources.list.d/repo.list.bak,并重新启用回购是那么容易,因为走另一条路。您甚至可以创建一个脚本,通过移动文件、运行更新/安装/无论如何,然后再次将文件移回来临时禁用存储库。

  • ……或者,如果人们习惯于将 `.bak` 文件作为各种工具的可丢弃副产品,则使用 `.disabled`。(-: (2认同)

小智 7

最初的问题是如何在禁用存储库的情况下运行 apt 以便仅执行一次。确实没有一个简单的方法可以做到这一点。从技术上讲,您可以使用 -o 和/或 -c 选项为 apt 命令提供不同的配置,但这可能比它的价值更多的努力。

使用 add-apt-repository 命令您可以轻松添加和删除存储库。这是我能看到的解决原始问题的最实用的方法。

如果您正在谈论限制、宇宙、多重宇宙等分布组件之一,那么您可以只使用该关键字:

sudo add-apt-repository --remove multiverse
sudo apt update
sudo apt install whatever
sudo add-apt-repository multiverse
Run Code Online (Sandbox Code Playgroud)

否则你需要使用完整的 deb 行:

repo="deb http://some.repo.com/foo bionic main"
sudo add-apt-repository --remove "$repo"
sudo apt update
sudo apt install whatever
sudo add-apt-repository "$repo"
Run Code Online (Sandbox Code Playgroud)

将从--removesources.list 中删除存储库以及sources.list.d 中的任何.list 文件。但是,应该注意的是(除非您的存储库采用的形式ppa:user/somerepo)再次添加它会将其放入sources.list中——而不是放在sources.list.d中的文件中。