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
,并重新启用回购是那么容易,因为走另一条路。您甚至可以创建一个脚本,通过移动文件、运行更新/安装/无论如何,然后再次将文件移回来临时禁用存储库。
小智 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)
将从--remove
sources.list 中删除存储库以及sources.list.d 中的任何.list 文件。但是,应该注意的是(除非您的存储库采用的形式ppa:user/somerepo
)再次添加它会将其放入sources.list中——而不是放在sources.list.d中的文件中。