LinuxでのRPMパッケージ管理のための27の‘DNF’(Yumのフォーク)コマンド

DNF、通称Dandified YUMは、RPMベースのディストリビューション向けの次世代パッケージマネージャーです。これは最初にFedora 18で導入され、最近のFedora 22リリースでYUMユーティリティに取って代わりました。

DNFは、YUMのボトルネックであるパフォーマンス、メモリ使用量、依存関係の解決、速度などを改善することを目指しています。DNFは、RPM、libsolv、およびhawkeyライブラリを使用してパッケージ管理を行います。CentOSやRHEL 7には最初からインストールされていませんが、yum、dnfを使用してyumと併用することができます。

DNFについて詳しくはこちらをご覧ください:

  1. YumをDNFで置き換える理由

DNFの最新安定リリースは、この記事執筆時点での1.0であり、2015年5月11日にリリースされました。

(およびDNFのすべての以前のバージョン)は主にPythonで書かれており、GPL v2ライセンスの下でリリースされています。

RHEL/CentOS 7のデフォルトリポジトリにはDNFが含まれていません。ただし、Fedora 22には公式にDNFが実装されています。

DNFRHEL/CentOSシステムにインストールするには、まずepel-releaseリポジトリをインストールして有効にする必要があります。

# yum install epel-release
OR
# yum install epel-release -y

-y」をyumと一緒に使うのは倫理的でないが、システムにインストールされているものを見ることが推奨されるためです。しかし、これがあまり重要でない場合は、「-y」を使用してユーザーの介入なしにすべてを自動的にインストールできます。

次に、epel-releaseリポジトリからyumコマンドを使用してDNFパッケージをインストールします。

# yum install dnf

dnfが正常にインストールされたら、RPMベースのディストリビューションでパッケージを簡単かつ効果的に管理するのに役立つ27dnfコマンドの実用例を紹介します。

1. DNFバージョンの確認

システムにインストールされているDNFのバージョンを確認します。

# dnf --version

2. 有効なDNFリポジトリの一覧表示

dnfコマンドのオプション「repolist」は、システム内のすべての有効なリポジトリを表示します。

# dnf repolist

3. すべての有効および無効なDNFリポジトリの一覧表示

オプション「repolist all」は、システム内のすべての有効/無効なリポジトリを出力します。

# dnf repolist all

4. DNFを使用して利用可能なすべてのパッケージとインストールされたパッケージの一覧表示

コマンド「dnf list」は、すべてのリポジトリから利用可能なパッケージとLinuxシステムにインストールされているパッケージを一覧表示します。

# dnf list

5. DNFを使用してインストールされたすべてのパッケージの一覧表示

dnf list」コマンドは、すべてのリポジトリから利用可能/インストール済みのパッケージを表示します。ただし、オプション「list installed」を使用してインストール済みのパッケージのみをリストするオプションがあります。

# dnf list installed

6. DNFを使用してすべての利用可能なパッケージをリストする

同様に、「list available」オプションは、有効なすべてのリポジトリからインストール可能なすべてのパッケージをリストします。

# dnf list available

7. DNFを使用してパッケージを検索する

もし万が一、インストールしたいパッケージがわからない場合、そのような状況では、dnfコマンドと「search」オプションを使用して、単語や文字列(例:nano)に一致するパッケージを検索できます。

# dnf search nano

8. ファイル/サブパッケージを提供するものを参照する

dnfオプションの「provides」は、特定のファイル/サブパッケージを提供するパッケージの名前を見つけます。たとえば、システム上の「/bin/bash」を提供するものを見つけたい場合はどうしますか?

# dnf provides /bin/bash

9. DNFを使用してパッケージの詳細を取得する

システムにインストールする前にパッケージの情報を知りたい場合は、「info」スイッチを使用して、以下のようにパッケージ(例:nano)の詳細情報を取得できます。

# dnf info nano

10. DNFを使用してパッケージをインストールする

nanoというパッケージをインストールするには、以下のコマンドを実行するだけで、パッケージnanoのすべての必要な依存関係を自動的に解決してインストールされます。

# dnf install nano

11. DNFを使用してパッケージを更新する

特定のパッケージ(たとえばsystemd)のみを更新し、システム上のすべてをそのままにしておくことができます。

# dnf update systemd

12. DNFを使用してシステムの更新を確認する

システムにインストールされているすべてのシステムパッケージの更新を簡単に確認します。

# dnf check-update

13. DNFを使用してすべてのシステムパッケージを更新する

次のコマンドで、すべてのインストール済みパッケージを含むシステム全体を更新できます。

# dnf update
OR
# dnf upgrade

14. DNFを使用してパッケージを削除/消去する

不要なパッケージ(たとえばnano)を削除するには、「remove」または「erase」スイッチをdnfコマンドと共に使用して削除します。

# dnf remove nano
OR
# dnf erase nano

15. DNFを使用して孤児パッケージを削除する

依存関係を満たすためにインストールされたパッケージは、他のアプリケーションによって使用されていない場合は無用である可能性があります。これらの孤児パッケージを削除するには、以下のコマンドを実行します。

# dnf autoremove

16. DNFを使用してキャッシュされたパッケージを削除する

A lot of time we encounter out-of-date headers and unfinished transactions which results into error while executing dnf. We may clean all the cached packages and headers containing remote package information simply by executing.

# dnf clean all

17. 特定のDNFコマンドのヘルプを取得する

任意の特定のdnfコマンド(たとえばclean)のヘルプを取得するには、以下のコマンドを実行します。

# dnf help clean

18. すべてのDNFコマンドとオプションをリストする

利用可能なすべてのdnfコマンドとオプションのヘルプをリストするには、単に入力します。

# dnf help

19. DNFの履歴を表示する

dnf履歴を呼び出して、すでに実行されたdnfコマンドのリストを確認できます。これにより、タイムスタンプ付きで何がインストール/削除されたかを把握できます。

# dnf history

20. すべてのグループパッケージをリストする

コマンド”dnf grouplist“を使用すると、利用可能なパッケージまたはインストール済みパッケージがすべて表示されます。何も指定されていない場合は、すべての既知のグループがリストされます。

# dnf grouplist

21. DNFを使用してグループパッケージをインストールする

グループパッケージ(例:教育ソフトウェア)をまとめてインストールするには、単純に次のようにします。

# dnf groupinstall 'Educational Software'

22. グループパッケージを更新する

以下のコマンドを実行することで、グループパッケージ(例:教育ソフトウェア)を更新しましょう。

# dnf groupupdate 'Educational Software'

23. グループパッケージを削除する

グループパッケージ(例:教育ソフトウェア)を削除することができます。

# dnf groupremove 'Educational Software'

24. 特定のリポジトリからパッケージをインストールする

DNFを使用すると、任意のパッケージ(例:phpmyadmin)をリポジトリ(epel)から簡単にインストールできます。

# dnf --enablerepo=epel install phpmyadmin

25. インストール済みパッケージを安定リリースに同期する

コマンド”dnf distro-sync“を使用すると、すべてのインストール済みパッケージを有効なリポジトリから利用可能な最新の安定バージョンに同期するための必要なオプションが提供されます。パッケージが選択されていない場合、すべてのインストール済みパッケージが同期されます。

# dnf distro-sync

26. パッケージを再インストールする

コマンド”dnf reinstall nano“を使用すると、すでにインストールされているパッケージ(例:nano)が再インストールされます。

# dnf reinstall nano

27. パッケージをダウングレードする

“ダウングレード”オプションは、指定されたパッケージ(例:acpid)を可能であれば低いバージョンにダウングレードします。

# dnf downgrade acpid
サンプル出力
Using metadata from Wed May 20 12:44:59 2015
No match for available package: acpid-2.0.19-5.el7.x86_64
Error: Nothing to do.

私の観察: DNFは、それがするはずのようにパッケージをダウングレードしていません。これはバグとしても報告されています。

結論

DNFは、最先端のパッケージマネージャーYUMの上位状態です。多くの経験豊富なLinuxシステム管理者には賞賛されない自動処理を行う傾向があります。例えば:

  1. --skip-brokenはDNFに認識されず、代替手段もありません。
  2. resolvedep‘コマンドのようなものはありませんが、dnf providesを実行できます。
  3. パッケージの依存関係を見つける‘deplist‘コマンドはありません。
  4. リポジトリを除外すると、その除外がすべての操作に適用されます。これは、yumがインストールやアップデート時にのみそれらのリポジトリを除外するのとは異なります。

いくつかのLinuxユーザーは、Linuxエコシステムの動きに満足していません。最初にSystemdがinitシステムvを削除し、今度はDNFがFedora 22で、その後RHELやCentOSでYUMに取って代わることになります。

あなたはどう思いますか?ディストリビューションや全体のLinuxエコシステムは、ユーザーを尊重せず、彼らの意志に逆らって動いていると考えられています。また、IT業界ではよく言われることです – “壊れていないものを修正する必要はない”、そしてinit System VもYUMも壊れていません。

今はこれで終わりです。コメント欄で貴重なご意見をお知らせください。いいねやシェアをして、私たちの広まるのを手伝ってください。

Source:
https://www.tecmint.com/dnf-commands-for-fedora-rpm-package-management/