2020-09-05_dnfで特定パッケージのインストールを抑止する

  • 検索タグ: yum dnf redhat centos

このページで分かること

  • dnfインストール・アップデート時に特定パッケージを対象から除外する方法

kernelとか構築時のタイミングで固定したい要件が結構あったりするのでその際に使えそうなTIPSです。dnf.confに設定するパターンとdnfコマンドのオプション指定するパターンがあります。

環境

  • OS: fedora31(WSL)

詳細

dnfコマンド実行時のオプションに指定する

--exclude=${pkg_name}オプションを使用します。

以下のようなにオプションを指定するとdnfの検索対象から除外されます。また、半角スペースで区切ることで複数パッケージを除外対象にできたり、正規表現が使えたりします。

--exclude='httpd kernel*'

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
## #オプションを指定
## #パッケージが見つからない=除外されている。
#r dnf install --exclude='httpd' httpd
エラー: 一致するものが見つかりません: httpd

## #通常時の挙動(問題なくインストール可能)
#r dnf install httpd
依存関係が解決しました。
=========================================================================================
 Package                    Architecture   Version                 Repository       Size
=========================================================================================
インストール:
 httpd 
...以下省略...

設定ファイルを使用する

コマンドに毎回オプションを付けるのは大変なのでdnf.confで設定するとオプションを付けなくても、除外設定が有効になります。

  • 対象ファイル: /etc/dnf/dnf.conf

記述する内容はexcludepkgs=${pkg_name}となります。オプション指定同様に複数パッケージや正規表現も使用できます。

1
2
3
4
5
6
## #記載の参考(diff結果)
#r diff -u0 /etc/dnf/dnf.conf.org /etc/dnf/dnf.conf
--- /etc/dnf/dnf.conf.org       2020-02-04 20:25:57.000000000 +0900
+++ /etc/dnf/dnf.conf   2020-09-04 18:54:36.590613200 +0900
@@ -4,0 +5 @@
+excludepkgs='httpd'

設定済みの除外設定を一時的に無効にしてコマンド実行

設定済みの除外設定を一時的に無効にしたいタイミングがあると思います。confファイル書き換えなくても--disableexcludes=allオプションを指定することで除外設定がコマンド実行のタイミングのみ無効化されます。

1
dnf install httpd --disableexcludes=all