FedoraやRHEL、CentOS、Rocky LinuxなどのRed Hat系ディストリビューションでは、パッケージ管理にdnf
を使います。
日常的にソフトを使っていると、こんな疑問が出てきませんか?
- 今インストールされているパッケージのバージョンを知りたい
- これからインストールするバージョンを確認したい
- 複数のバージョンが用意されているか調べたい
- セキュリティアップデートが必要かチェックしたい
- 特定のバージョンにダウングレードできるか確認したい
この記事では、dnf
を使ってパッケージのバージョンを確認する方法を、具体例つきでわかりやすく解説します!
なぜパッケージのバージョン確認が重要なのか?

バージョン確認の重要性
理由 | 説明 | 具体例 |
---|---|---|
セキュリティ | 脆弱性のあるバージョンを特定 | OpenSSLの脆弱性チェック |
互換性 | アプリ間の依存関係を確認 | Python バージョンと ライブラリの互換性 |
トラブルシューティング | 問題のあるバージョンを特定 | アップデート後の不具合調査 |
開発環境 | 本番環境とのバージョン合わせ | Node.js のバージョン統一 |
よくあるシチュエーション
ケース1:セキュリティアップデート後の確認
# セキュリティアップデート後にOpenSSLのバージョンを確認
dnf list installed openssl
ケース2:開発環境の構築時
# Python開発環境のバージョン確認
dnf list available python3
ケース3:トラブル調査時
# 問題のあるパッケージのバージョン特定
dnf info problematic-package
インストール済みパッケージのバージョンを確認する

基本的な確認方法
特定パッケージのバージョン確認:
dnf list installed パッケージ名
実例1:bashのバージョン確認
dnf list installed bash
出力例:
インストール済みパッケージ
bash.x86_64 5.2.15-2.fc38 @updates
出力の読み方:
bash
:パッケージ名x86_64
:アーキテクチャ5.2.15-2.fc38
:バージョン-リリース番号@updates
:インストール元リポジトリ
実例2:複数パッケージの確認
# Webサーバー関連パッケージのバージョン確認
dnf list installed httpd php mariadb-server
実例3:パターンマッチでの確認
# Python関連パッケージをまとめて確認
dnf list installed "python3*"
# 開発ツール関連
dnf list installed "*-devel"
全インストール済みパッケージの確認
全パッケージのバージョン一覧:
dnf list installed
件数の多い場合の確認方法:
# ページャーで確認
dnf list installed | less
# 特定文字列で絞り込み
dnf list installed | grep keyword
# ファイルに出力
dnf list installed > installed_packages.txt
より詳細な情報の取得
パッケージの詳細情報:
dnf info インストール済みパッケージ名
実例:Apacheの詳細情報
dnf info httpd
出力例:
Name : httpd
Version : 2.4.57
Release : 8.fc38
Architecture : x86_64
Size : 4.9 M
Source : httpd-2.4.57-8.fc38.src.rpm
Repository : @System
From repo : updates
Summary : Apache HTTP Server
URL : https://httpd.apache.org/
License : ASL 2.0
Description : The Apache HTTP Server is a powerful, efficient, and extensible
: web server.
重要な項目の説明:
- Version:メジャーバージョン番号
- Release:パッケージのリリース番号
- From repo:インストール元リポジトリ
- Size:インストールサイズ
インストール前に利用可能なバージョンを確認する

利用可能なパッケージの確認
基本コマンド:
dnf list available パッケージ名
実例1:nanoエディターの確認
dnf list available nano
実例2:データベース関連パッケージの確認
dnf list available mariadb-server postgresql-server
インストール可能な全バージョンを確認
重複バージョンも含めて表示:
dnf --showduplicates list available パッケージ名
実例:kernelの全バージョン確認
dnf --showduplicates list available kernel
出力例:
利用可能なパッケージ
kernel.x86_64 6.4.4-200.fc38 updates
kernel.x86_64 6.4.7-200.fc38 updates
kernel.x86_64 6.4.8-200.fc38 updates
リポジトリ別の確認
特定リポジトリから確認:
dnf --disablerepo="*" --enablerepo="リポジトリ名" list available
実例:EPELリポジトリのパッケージ確認
dnf --disablerepo="*" --enablerepo="epel" list available
インストール済みと利用可能の両方を確認する
統合的な確認方法
インストール済み+利用可能の両方表示:
dnf list パッケージ名
実例:gitの状況確認
dnf list git
出力例(インストール済みの場合):
インストール済みパッケージ
git.x86_64 2.41.0-1.fc38 @updates
利用可能なパッケージ
git.x86_64 2.41.0-2.fc38 updates
この例では、現在2.41.0-1がインストールされており、2.41.0-2にアップグレード可能なことが分かります。
アップグレード可能なパッケージの確認
アップグレード可能なパッケージのみ表示:
dnf list updates
特定パッケージのアップグレード確認:
dnf list updates パッケージ名
実例:セキュリティアップデートの確認
dnf list updates --security
モジュールを使った複数バージョンの管理

モジュールとは?
Red Hat系の新しいディストリビューション(RHEL 8以降、Fedora等)では、モジュールという仕組みで同一パッケージの複数バージョンを管理できます。
モジュールの確認方法
利用可能なモジュール一覧:
dnf module list
特定モジュールの確認:
dnf module list パッケージ名
実例1:PHPモジュールの確認
dnf module list php
出力例:
Name Stream Profiles Summary
php 7.4 common [d], devel, PHP scripting language
minimal
php 8.0 common [d], devel, PHP scripting language
minimal
php 8.1 [e] common [d], devel, PHP scripting language
minimal
php 8.2 common [d], devel, PHP scripting language
minimal
記号の意味:
[d]
:デフォルトプロファイル[e]
:有効化(enabled)されているストリーム[i]
:インストール済み
実例2:Node.jsモジュールの確認
dnf module list nodejs
モジュールの詳細情報確認
モジュールの詳細情報:
dnf module info モジュール名:ストリーム
実例:PHP 8.1の詳細情報
dnf module info php:8.1
詳細なパッケージ情報からバージョン確認
infoコマンドの活用
基本的な使用法:
dnf info パッケージ名
実例:Apacheの詳細確認
dnf info httpd
複数パッケージの一括確認
関連パッケージをまとめて確認:
dnf info httpd php mariadb-server
リポジトリ情報も含めた確認
リポジトリ情報付きで確認:
dnf info --available パッケージ名
実例:利用可能なPostgreSQLの詳細
dnf info --available postgresql-server
実用的なバージョン確認テクニック

依存関係とバージョンの確認
パッケージの依存関係確認:
dnf deplist パッケージ名
実例:Apacheの依存関係
dnf deplist httpd
特定バージョンのインストール可能性確認
特定バージョンが利用可能か確認:
dnf --showduplicates list パッケージ名 | grep バージョン
実例:Python 3.9の確認
dnf --showduplicates list python3 | grep 3.9
セキュリティアップデートの確認
セキュリティ関連のアップデート確認:
dnf updateinfo list security
特定パッケージのセキュリティ情報:
dnf updateinfo info パッケージ名
実例:OpenSSLのセキュリティ情報
dnf updateinfo info openssl
バージョン比較
現在と利用可能の比較:
# 現在インストール済み
dnf list installed パッケージ名
# 利用可能な最新
dnf list available パッケージ名
# 統合表示
dnf list パッケージ名
スクリプトでの自動化
バージョン確認スクリプトの例
システム監視スクリプト:
#!/bin/bash
# version_check.sh
echo "=== 重要パッケージのバージョン確認 ==="
# 確認したいパッケージのリスト
packages=("httpd" "mariadb-server" "php" "openssl" "kernel")
for package in "${packages[@]}"; do
echo "--- $package ---"
# インストール済みバージョン
installed=$(dnf list installed "$package" 2>/dev/null | tail -n +2)
if [ -n "$installed" ]; then
echo "インストール済み: $installed"
else
echo "インストール済み: なし"
fi
# 利用可能バージョン
available=$(dnf list available "$package" 2>/dev/null | tail -n +2)
if [ -n "$available" ]; then
echo "利用可能: $available"
fi
echo ""
done
使用方法:
chmod +x version_check.sh
./version_check.sh
定期チェックの自動化
crontabでの定期実行:
# crontabの編集
crontab -e
# 毎日午前2時にチェック
0 2 * * * /path/to/version_check.sh > /var/log/version_check.log 2>&1
トラブルシューティング

よくある問題と解決法
問題1:パッケージが見つからない
# キャッシュの更新
sudo dnf makecache
# リポジトリの確認
dnf repolist
# 無効化されたリポジトリの確認
dnf repolist --all
問題2:古いバージョン情報が表示される
# メタデータの強制更新
sudo dnf clean metadata
sudo dnf makecache --refresh
問題3:モジュールが表示されない
# モジュール情報の更新
sudo dnf module reset パッケージ名
dnf module list パッケージ名
デバッグモード
詳細な情報でのデバッグ:
dnf --verbose info パッケージ名
ログレベルを上げて確認:
dnf --debuglevel=5 list パッケージ名
実用的なワンライナー集
よく使うコマンドの組み合わせ
インストール済みパッケージの数を確認:
dnf list installed | wc -l
アップデート可能なパッケージ数:
dnf list updates | wc -l
特定文字列を含むパッケージのバージョン確認:
dnf list installed | grep -i python
最新のカーネルバージョン確認:
dnf list available kernel | tail -1
セキュリティアップデート数の確認:
dnf updateinfo list security | wc -l
便利なエイリアス設定
bashrcへの追加
# ~/.bashrc に追加
alias dnf-installed='dnf list installed'
alias dnf-updates='dnf list updates'
alias dnf-available='dnf list available'
alias dnf-security='dnf updateinfo list security'
alias dnf-version='dnf info'
# 使用例
dnf-installed httpd # dnf list installed httpd
dnf-updates # dnf list updates
dnf-version nginx # dnf info nginx
よくある質問と回答

Q: バージョン番号の読み方は?
A: Red Hat系のバージョン形式を理解しましょう
形式: パッケージ名-バージョン-リリース.ディストリビューション.アーキテクチャ
例: httpd-2.4.57-8.fc38.x86_64
httpd
:パッケージ名2.4.57
:アップストリームバージョン8
:パッケージリリース番号fc38
:Fedora 38用x86_64
:64ビットアーキテクチャ
Q: 複数のバージョンを同時インストールできますか?
A: パッケージによって異なります
可能な例:
- kernel:複数バージョン同時インストール可
- gcc:異なるメジャーバージョンの併用可
不可能な例:
- httpd:通常は1つのバージョンのみ
- mariadb-server:競合するため1つのみ
Q: 開発環境と本番環境のバージョンを合わせるには?
A: パッケージリストの出力と比較を活用してください
# 本番環境でパッケージリストを出力
dnf list installed > production_packages.txt
# 開発環境で比較
dnf list installed > development_packages.txt
diff production_packages.txt development_packages.txt
Q: ダウングレードは可能ですか?
A: 条件付きで可能です
# 利用可能な古いバージョンを確認
dnf --showduplicates list パッケージ名
# 特定バージョンにダウングレード
sudo dnf downgrade パッケージ名-バージョン
まとめ:dnfでパッケージのバージョンを自在に確認しよう!
今回学んだ確認方法の一覧:
目的 | コマンド |
---|---|
インストール済のバージョン確認 | dnf list installed パッケージ名 |
利用可能なバージョンを調べる | dnf list available パッケージ名 |
詳細情報を確認 | dnf info パッケージ名 |
モジュールで複数バージョンを確認 | dnf module list パッケージ名 |
全バージョンを確認 | dnf --showduplicates list パッケージ名 |
アップデート可能を確認 | dnf list updates パッケージ名 |
セキュリティ情報を確認 | dnf updateinfo info パッケージ名 |
実際に使ってみよう:
- 基本的なバージョン確認から始める
- セキュリティアップデートを定期的にチェック
- モジュール機能で適切なバージョンを選択
- スクリプト化で定期監視を自動化
コメント