パッケージ管理したい(dnf)

$ dnf install epel-release
$ dnf search パッケージ名
$ dnf install パッケージ名
$ dnf check-update
$ dnf upgrade

dnfはRHEL系OS(RHEL / Rocky Linux / AlmaLinux / CentOS Stream / Fedora)のパッケージ管理コマンドです。 yumの後継で、依存関係の解決やパフォーマンスなどが改善されています。

パッケージの詳細を調べたい(dnf info)

$ dnf info パッケージ名
$ dnf info vim-enhanced

dnf infoで、パッケージのバージョンやサイズ、説明などの詳細情報を確認できます。

パッケージをインストールしたい(dnf install)

$ dnf install パッケージ名
$ dnf install vim-enhanced

dnf installでパッケージをインストールできます。 複数のパッケージ名を一度に指定できます。 インストール済みパッケージはdnf list installedやrpm -qaで確認できます。

Dockerfileなどでは、-yオプションをつけて確認プロンプトを省略します。

パッケージを削除したい(dnf remove)

$ dnf remove パッケージ名
$ dnf remove vim-enhanced

dnf removeで、インストール済みのパッケージを削除できます。

パッケージを更新したい(dnf upgrade)

$ dnf check-update
$ dnf upgrade

dnf check-updateで、更新可能なパッケージを一覧できます。 dnf upgradeで、更新可能なパッケージをすべて更新します。 dnf upgrade パッケージ名で、指定したパッケージだけを更新することもできます。

不要なファイルを削除したい(dnf clean)

$ dnf clean packages
$ dnf clean all

dnf cleanで、ダウンロード済みのパッケージファイルやメタデータのキャッシュを削除できます。 packagesはダウンロード済みの.rpmファイルのみ、allはメタデータも含めてすべて削除します。

操作履歴を確認したい(dnf history)

$ dnf history

dnf historyで、dnfコマンドの実行履歴(インストール・削除・更新の記録)を確認できます。

rpmしたい(rpm)

$ rpm -qa
$ rpm -qa | grep パッケージ名

rpmは、RHEL系Linuxのパッケージ管理の低レベルコマンドです。 dnfも内部でrpmを使っています。

手元にある.rpmパッケージファイルを直接操作するコマンドです。 日常的に使うことはほぼありませんが、トラブルシュートしたいときに覚えておくとよいかもしれません。

-qaオプションで、インストール済みパッケージを一覧できます。

$ rpm -ql vim-enhanced

-qlオプションで、指定したパッケージがインストールしたファイルの一覧を確認できます。

$ rpm -qf /usr/bin/vim

-qfオプションで、指定したファイルがどのパッケージによってインストールされたか調べられます。 -qlの逆引きです。

$ rpm -qi vim-enhanced

-qiオプションで、パッケージの詳細情報(バージョン、依存関係、説明文など)を確認できます。

$ dnf install --downloadonly --downloaddir=. パッケージ名
$ rpm -i パッケージ名.rpm

-iオプションで、.rpmファイルを直接インストールできます。 dnfのリポジトリに登録されていない.rpmファイルを配布された場合に使います。

$ rpm -e パッケージ名

-eオプションで、パッケージを削除できます。

リポジトリを追加したい

$ dnf install epel-release
$ dnf repolist

epel-releaseは、 EPEL(Extra Packages for Enterprise Linux)という、標準リポジトリを拡張するパッケージです。 他にも、主要な拡張リポジトリは〇〇-releaseという名前で提供されています。 標準リポジトリにないパッケージを使いたい場合は、まず追加しておくとよいです。

$ dnf install 'dnf-command(config-manager)'
$ dnf config-manager --add-repo リポジトリのURL

〇〇-releaseパッケージが提供されていない場合、config-managerコマンドで.repoファイルを直接追加する必要があります。 config-managerもデフォルトでは入っていないプラグインなので、dnf install 'dnf-command(config-manager)'で、先にインストールが必要です。

注釈

RHEL系はエンタープライズ向けの思想が強く、標準リポジトリに含まれるパッケージが絞られています。 その代わり、EPELのような拡張リポジトリを〇〇-releaseパッケージとして手軽に追加できるように整備されています。

リファレンス