現在インストールされているすべてのdnfモジュールを削除します。

現在インストールされているすべてのdnfモジュールを削除します。

不要なモジュールがたくさんインストールされているCentOS 8.0システムがあります。 CentOS 9.0に強制アップグレードするためにそれを削除したいと思います。これは正式にサポートされていないことを知っていますが、実際にはこの質問の内容ではありません。この質問は、私のシステムのdnfにインストールされているすべてのモジュールを削除するためのこのステップについてです。

出力がdnf module listかなり大きいのでここに入れます。https://dpaste.com/EXMJLQ3VK

このシステムにインストールされている多くのものが不要になりました。

モジュールリストにあるdnfの解析可能な出力を取得したいのですが、それを削除するにはどうすればよいかわかりません。 Fedora Wikiで利用可能dnfモジュールの使用に関するページしかし、リストから1つも削除できないようです。モジュールを削除するために同様の方法を試しました...

# dnf module remove php:remi-7.4/common
Unable to match profile in argument php:remi-7.4/common

もちろん、実際にこれらのモジュールを一度に1つずつ削除したくありませんが、dnfから解析可能なリストを取得したり手動で削除したりする方法はありません。これら2つのことを行う方法を学んだら、魔法を使用して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

これはハッキーなアプローチですが、すべてのモジュールを繰り返し、各モジュールによってインストールされたすべてのパッケージを削除してデフォルト値にリセットできます。

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

関連情報