今回は、パッケージマネージャについて解説します!
パッケージマネージャとは
パッケージマネージャとは、システムにインストールされているソフトウェア (パッケージ) をリポジトリと呼ばれるオンラインデータベース上で管理するためのツールです。
パッケージマネージャの主な目的はソフトウェアのインストール、アップグレード、削除を行うことですが、中でもパッケージの依存関係を自動的に解決してくれるところがメリットと言えます。
代表的なパッケージマネージャは、Red Hat 系システムだと yum と dnf、Debian 系システムだと apt があります。
今号では Red Hat 系の yum、dnf についてご紹介します。
yum と dnf の違いは?
Red Hat 系システムでは yum と dnf、2つのコマンドが用意されています。
yum は以前から使用されていたコマンドであり、多くの Linux ユーザにとって馴染み深いコマンドです。それに対して dnf は yum の後継として開発され、様々な改善が取り入れられています。
細かな違いとしては、それぞれ下記の通りとなっています。
- yum は Python2 に基づいて、dnf は Python3 に基づいて開発されている
- yum は定期的に不要なキャッシュを手動でクリアする必要があるが、dnf は自動的にクリアする機能が実装されている
- dnf は実装の改善により、パフォーマンスが向上している
なお、Fedora22 (RHEL8 系) 以降では標準のパッケージマネージャが yum から dnf に変更されています。yum と dnf では、サブコマンドやオプションも同じものが使用可能であるため、yum を使い慣れたユーザでも dnf に移行しやすい設計になっています。
基本の操作方法 (検索、インストール、アップデート、削除)
yum、dnf コマンドの基本操作 (パッケージの検索、インストール、アップデート、削除) について、それぞれ説明します。
なお、上にも記載の通りサブコマンドやオプションは同じとなるため、dnf コマンドの実行例のみ掲載しています。
- 検索
特定のパッケージを検索するには、dnf search コマンドを実行します。
例えば、git というパッケージを検索する場合は、下記の様なコマンドになります。# dnf search git … ============================================== Name Exactly Matched: git =============================================== git.x86_64 : Fast Version Control System ============================================= Name & Summary Matched: git ============================================== git-all.noarch : Meta-package to pull in all git tools git-clang-format.i686 : Integration of clang-format for git … (長いため省略) … ================================================== Name Matched: git =================================================== kacst-digital-fonts.noarch : Fonts for arabic from arabeyes project ================================================= Summary Matched: git ================================================= LibRaw.x86_64 : Library for reading RAW files obtained from digital photo cameras LibRaw.i686 : Library for reading RAW files obtained from digital photo cameras …
この時、結果には git という文字列を含むパッケージすべてと、要約 (説明文) が表示されます。
yum コマンドの場合は、下記の様になります。
# yum search git
- インストール
パッケージをインストールするには、dnf install コマンドを実行します。
例えば、git というパッケージをインストールする場合は、下記の様なコマンドになります。# dnf install git … ======================================================================================================================== Package Architecture Version Repository Size ======================================================================================================================== Installing: git x86_64 2.43.5-1.el8_10 rhel-8-appstream-rhui-rpms 92 k Installing dependencies: emacs-filesystem noarch 1:26.1-11.el8 rhel-8-baseos-rhui-rpms 70 k git-core x86_64 2.43.5-1.el8_10 rhel-8-appstream-rhui-rpms 11 M git-core-doc noarch 2.43.5-1.el8_10 rhel-8-appstream-rhui-rpms 3.1 M perl-Error noarch 1:0.17025-2.el8 rhel-8-appstream-rhui-rpms 46 k perl-Git noarch 2.43.5-1.el8_10 rhel-8-appstream-rhui-rpms 79 k perl-TermReadKey x86_64 2.37-7.el8 rhel-8-appstream-rhui-rpms 40 k Transaction Summary ======================================================================================================================== Install 7 Packages Total download size: 14 M Installed size: 46 M Is this ok [y/N]:
この時、指定したパッケージのみではなく git と依存関係があるパッケージも併せてインストールされます。
なお、上記の様にインストールを開始する前に Is this ok [y/N]: の文字列が表示され、インストールを続行するかを聞かれます。y を押下するとインストール続行、N (もしくは n) を押下するとインストールを中止します。
yum コマンドの場合は、下記の様になります。
# yum install git
- アップデート
パッケージをアップデートするには、dnf update コマンドを実行します。
例えば、既にインストール済みの git というパッケージをアップデートする場合は、下記の様なコマンドになります。# dnf update git … ======================================================================================================================== Package Architecture Version Repository Size ======================================================================================================================== Upgrading: git x86_64 2.43.5-1.el8_10 rhel-8-appstream-rhui-rpms 92 k git-core x86_64 2.43.5-1.el8_10 rhel-8-appstream-rhui-rpms 11 M git-core-doc noarch 2.43.5-1.el8_10 rhel-8-appstream-rhui-rpms 3.1 M perl-Git noarch 2.43.5-1.el8_10 rhel-8-appstream-rhui-rpms 79 k Transaction Summary ======================================================================================================================== Upgrade 4 Packages Total download size: 14 M Is this ok [y/N]:
yum コマンドの場合は、下記の様になります。
# yum update git
- 削除
パッケージをシステム上から削除するには、dnf remove コマンドを実行します。
例えば、既にインストール済みの git というパッケージを削除する場合は、下記の様なコマンドになります。# dnf remove git … ======================================================================================================================== Package Architecture Version Repository Size ======================================================================================================================== Removing: git x86_64 2.27.0-1.el8 @rhel-8-appstream-rhui-rpms 368 k Removing unused dependencies: emacs-filesystem noarch 1:26.1-11.el8 @rhel-8-baseos-rhui-rpms 0 git-core x86_64 2.27.0-1.el8 @rhel-8-appstream-rhui-rpms 32 M git-core-doc noarch 2.27.0-1.el8 @rhel-8-appstream-rhui-rpms 12 M perl-Error noarch 1:0.17025-2.el8 @rhel-8-appstream-rhui-rpms 70 k perl-Git noarch 2.27.0-1.el8 @rhel-8-appstream-rhui-rpms 63 k perl-TermReadKey x86_64 2.37-7.el8 @rhel-8-appstream-rhui-rpms 65 k Transaction Summary ======================================================================================================================== Remove 7 Packages Freed space: 45 M Is this ok [y/N]:
yum コマンドの場合は、下記の様になります。
# yum remove git
yum、dnf コマンドについての補足事項
- dnf (yum) install コマンド実行時に対象パッケージが既にインストール済みである場合はアップデートが実行され、反対に dnf (yum) update コマンド実行時に対象パッケージがインストールされていない場合はインストールが実行されます。
- パッケージ名の後ろにバージョン指定がない場合は、リポジトリ内での最新バージョンがインストールまたはアップデートされます。明示的にインストール・アップデート先のバージョンを指定したい場合はパッケージ名の後にバージョンを指定 (例:dnf install git-2.27.0-1.el8 など) します。
- -y オプション (例:dnf install -y など) を付けると、Is this ok [y/N]: が表示されず直ちに処理が開始されます。ただし、依存関係があるパッケージなどが事前に確認できなかったり、意図しないパッケージのインストール、アップデート、削除が行われる可能性があるので、利用は推奨しません。