【 dnf 】コマンド(応用編その9)――パッケージをダウングレードする
https://atmarkit.itmedia.co.jp/ait/articles/2002/07/news010.html#sample1
dnfコマンドとは?
「dnf」は、Red Hat系のLinuxディストリビューションで使われている“RPMパッケージ”を扱うためのパッケージ管理コマンドです。ソフトウェアのインストール(install)や更新(update)、アンインストール(remove)の際に利用します。
Computer Weekly日本語版 10月8日号:進撃のBig Apple
CentOS 7が採用している「yum」の後継となるコマンドという位置付けで、yumと同じサブコマンド、オプションを使用可能です(※1)。パッケージ管理システム「RPM」と「Yum」について、さらに「RPMデータベース」や「リポジトリ」という用語については、連載第42回を参照してください。
※1 CentOS 8では/usr/bin/dnfと/usr/bin/yumはともに/usr/bin/dnf-3へのシンボリックリンクとなっている。/usr/bin/dnf-3の実態はPythonスクリプト。なお、dnfのオプションのうち、従来の「yum」コマンドから廃止されたものはChanges in DNF CLI compared to YUM(外部サイト)で確認可能。
目次に戻る
コマンドの書式
dnf [オプション] コマンド [パッケージ名など]
※ [ ]は省略可能な引数を示しています。
※パッケージ名には「?」記号(任意の1文字)や「*」記号を使用可能
※長いオプションはコマンドラインの最後に指定することも可能
目次に戻る
dnfの主なオプション
短いオプション 長いオプション 意味
-y –assumeyes 全ての問い合わせに対して「yes」を選択したと見なして実行する
–assumeno 全ての問い合わせに対して「no」を選択したと見なして実行する
-C –cacheonly パッケージの情報を全くダウンロードせずに、キャッシュだけを使用する
–refresh コマンド実行前にパッケージ情報のキャッシュを強制的に更新する(※2)
-R 分 –randomwait=分 最大待ち時間(分)を指定する
-c 構成ファイル名 –config=構成ファイル名 構成ファイルを指定する
–enablerepo リポジトリID 指定したリポジトリを有効にする
–disablerepo リポジトリID 指定したリポジトリを無効にする
–repo リポジトリID 指定したリポジトリだけを有効にする(複数ある場合は「–repo」「–repoid」を複数回使用する)
–repoid リポジトリID –repoと同じ
–nodocs ドキュメントをインストールしない
–allowerasing 依存関係を解決するためにインストール済みパッケージの削除を許可する
–installroot=場所 インストール先を指定する
–downloaddir=場所 ダウンロード先を指定する
–downloadonly ファイルのダウンロードだけを行う
-x パッケージ名 –exclude=パッケージ名 除外するパッケージを指定する
–showduplicates dnfのサブコマンド「info」「search」で重複しているものも表示する
–color=指定 出力メッセージを色付きにするかどうかを「always」「auto」「never」のいずれかで指定する
-q –quiet 実行時にメッセージを出力しない
-v –verbose 詳しいメッセージを出力する
※2 通常、キャッシュが古い場合は自動更新がかかる。更新までの残り時間は/etc/dnf/dnf.confの「metadata_expire」で変更可能。デフォルトは48時間。
dnfの主なコマンド(パッケージ操作関係)
コマンド 実行内容
install 指定したパッケージに加え、依存関係があるパッケージもインストールする(既にインストールされていた場合は更新する)
reinstall パッケージを再インストールする
downgrade パッケージを以前のバージョンのものにダウングレードする(本文を参照)
remove パッケージを依存関係のあるパッケージとともに削除する
autoremove 依存関係のためにインストールされていた不要なパッケージを削除する
upgrade パッケージを更新する(※3)
upgrade-minimal 不具合の修正や機能追加、セキュリティ対応など「重要な更新」だけを更新する(※3)
distro-sync 最新の利用可能なバージョンへインストール済みパッケージを同期する
mark install 指定したパッケージを手動でインストールしたものとする(autoremoveの対象外となることが利点、「dnf mark remove パッケージ名」でマークを削除)
※3 パッケージを指定しなかった場合はインストール済みの全パッケージが対象となる。
dnfの主なコマンド(情報関係)
コマンド 実行内容
info パッケージの情報を表示する(「–installed」「–upgrade」などのオプションが使用可能)
list パッケージを一覧表示する(「–installed」「–upgrade」などのオプションが使用可能)
deplist パッケージの依存性の一覧を表示する
group パッケージグループのサマリーを表示する(※4)
search 指定した文字列でパッケージの詳細を検索する
repoquery キーワードに一致するパッケージを検索する(※5)
provides ファイル名などを指定して、該当するファイルを提供するパッケージを検索する
repolist ソフトウェアリポジトリの構成を表示する
※4 サブコマンドとして「list」「info」「remove」「install」「upgrade」「summary」「mark」を使用可能。「dnf group list」のように使用する。デフォルトはsummaryで、インストール済みのグループの個数やインストール可能なグループの個数を表示する。
※5 例えば「dnf repoquery –requires パッケージ名」で指定したパッケージが依存するパッケージを表示する。
dnfの主なコマンド(メンテナンス関係/その他)
コマンド 実行内容
makecache パッケージリストを格納したデータベース(リポメタデータ)をダウンロードし、キャッシュを作成/更新する
check ローカルのパッケージデータベースに問題がないかどうか確認する
check-update 更新に利用できるパッケージを確認する
clean キャッシュデータを削除する
shell 対話型のシェル(DNFシェル)を実行する
updateinfo リポジトリの更新情報を表示する
history パッケージのインストールや削除の履歴を表示する
目次に戻る
パッケージをダウングレードする
パッケージをダウングレード、つまり古いバージョンにしたい場合は「dnf downgrade パッケージ名」のように実行します(画面1)。バージョンを指定したい場合は「dnf downgrade パッケージ名-バージョン番号」のように指定します(画面2)。
ダウングレードできるのは、古いバージョンのパッケージがリポジトリに存在する場合のみです。リポジトリにある全てのバージョンを確認したい場合は「dnf –showduplicates list パッケージ名」を実行します。
コマンド実行例
dnf downgrade パッケージ名
(パッケージを1つ前のバージョンにダウングレードする)
dnf downgrade firefox
(「firefox」を1つ前のバージョンにダウングレードする)
dnf –showduplicates list firefox
(リポジトリにある「firefox」の全バージョンを表示する)
dnf downgrade firefox-バージョン番号
(「firefox」を指定したバージョンにダウングレードする)
画面1
画面1 パッケージ名を指定してダウングレードを実行したところ
画面2
画面2 指定したパッケージの全バージョンを確認後、特定のバージョンにダウングレードしたところ
目次に戻る
パッケージファイルを使用してダウングレードする
コメント
うーむ。5:3.1.13-1.el8 より古いパッケージは残っていないようだ。。。
[root@AMULET3 ~]# dnf –showduplicates list netatalk
メタデータの期限切れの最終確認: 3:43:13 時間前の 2022年04月19日 07時31分37秒 に実施しました。
インストール済みパッケージ
netatalk.x86_64 5:3.1.13-1.el8 @epel
利用可能なパッケージ
netatalk.x86_64 5:3.1.13-1.el8 epel
[root@AMULET3 ~]#