我有一个 CentOS 8.0 系统,安装了很多我不想要的模块。我想摆脱它们以强制升级到 CentOS 9.0,我知道这没有得到官方支持,但这实际上并不是这个问题的真正含义。这个问题只是关于删除我的系统上 dnf 中安装的所有模块的这一步。
输出dnf module list
很大,所以我把它放在这里:https://dpaste.com/EXMJLQ3VK
这个系统上安装的很多东西都不再需要了,正如你所看到的,这将消除很多臃肿的东西。
我想从模块列表上的 dnf 获得可解析的输出,而且我也不完全确定我应该做什么来删除它们。 Fedora wiki 上有关于使用 dnf 模块的页面但我似乎无法从列表中删除哪怕只是一个。我已经尝试过类似的方法来删除模块......
# dnf module remove php:remi-7.4/common
Unable to match profile in argument php:remi-7.4/common
当然,我实际上并不想一次一个地删除这些模块,但我找不到任何方法从 dnf 获取可解析列表,甚至无法手动删除它们。如果我学会了如何做这两件事,那么用一些魔法xargs
就可以删除列表中的每一件事情。
我确实设法通过将通配符传递给 dnf 来禁用每个模块,如下所示......
dnf module disable "*"
但我无法用同样的方法删除它们......
# dnf module remove "*"
Last metadata expiration check: 2:20:13 ago on Wed 01 Jun 2022 10:32:56 AM UTC.
Error: Cannot enable more streams from module 'pmdk' at the same time
答案1
我在其他地方找到了解决这个问题的方法。
您可以通过删除模块的元数据文件来删除模块/etc/dnf/modules.d/
答案2
Centos 9 不再使用模块。它可能一开始就无法正常工作
我尝试使用它dnf module remove
,但我不得不说它有问题。它不像描述的那样工作。
由于您的主要目的是升级到 Centos 9,我认为您最好的选择是禁用所有模块,您已经这样做了。
我知道您想删除尽可能多的软件包,但我认为这无论如何都不重要。
答案3
这是一种 hacky 方法,但您可以循环所有模块,删除每个模块安装的所有包,然后将它们重置为默认值。
dnf module list | grep '\[d\]' | awk '{print $1}' | sort -u | xargs -I{} dnf module remove '{}' --all -y
dnf module list | grep '\[d\]' | awk '{print $1}' | sort -u | xargs -I{} dnf module reset '{}' -y