DNF、通称Dandified YUMは、RPMベースのディストリビューション向けの次世代パッケージマネージャーです。これは最初にFedora 18で導入され、最近のFedora 22リリースでYUMユーティリティに取って代わりました。
DNFは、YUMのボトルネックであるパフォーマンス、メモリ使用量、依存関係の解決、速度などを改善することを目指しています。DNFは、RPM、libsolv、およびhawkeyライブラリを使用してパッケージ管理を行います。CentOSやRHEL 7には最初からインストールされていませんが、yum、dnfを使用してyumと併用することができます。
DNFについて詳しくはこちらをご覧ください:
DNFの最新安定リリースは、この記事執筆時点での1.0であり、2015年5月11日にリリースされました。
(およびDNFのすべての以前のバージョン)は主にPythonで書かれており、GPL v2ライセンスの下でリリースされています。
RHEL/CentOS 7のデフォルトリポジトリにはDNFが含まれていません。ただし、Fedora 22には公式にDNFが実装されています。
DNFをRHEL/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ベースのディストリビューションでパッケージを簡単かつ効果的に管理するのに役立つ27のdnfコマンドの実用例を紹介します。
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システム管理者には賞賛されない自動処理を行う傾向があります。例えば:
--skip-broken
はDNFに認識されず、代替手段もありません。- ‘resolvedep‘コマンドのようなものはありませんが、dnf providesを実行できます。
- パッケージの依存関係を見つける‘deplist‘コマンドはありません。
- リポジトリを除外すると、その除外がすべての操作に適用されます。これは、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/