AlmaLinux 10 総合ガイド 第3章: パッケージ管理とソフトウェアのインストール

AlmaLinux 10 総合ガイド
第3章: パッケージ管理とソフトウェアのインストール

【この章で学ぶこと】 dnf5を使った効率的なソフトウェア管理
【なぜ重要か】 サーバーに必要なソフトウェアを安全に導入・更新するため
【前提知識】 第2章完了、基本的なコマンド操作
【所要時間】 約2時間

サーバーを運用するには、必要なソフトウェアをインストールし、定期的に更新する作業が欠かせません。この章では、AlmaLinux 10のパッケージマネージャーであるdnf5を使って、ソフトウェアを効率的かつ安全に管理する方法を学びます。

3.1 パッケージ管理の基礎知識

まず、なぜパッケージマネージャーを使うのか、その仕組みと利点を理解しましょう。

3.1.1 パッケージマネージャーとは

パッケージマネージャーとは、ソフトウェアのインストール、更新、削除を一元管理するツールです。もしパッケージマネージャーがなければ、次のような作業を手動で行う必要があります。

  • ソフトウェアの配布元サイトからファイルをダウンロード
  • ソースコードからコンパイル(ビルド)
  • 必要なライブラリを手動で探してインストール
  • 設定ファイルの配置
  • 更新のたびに同じ作業を繰り返す

パッケージマネージャーを使えば、これらすべてを1つのコマンドで完了できます。

3.1.2 RPMパッケージの概念

AlmaLinuxでは、ソフトウェアはRPM(Red Hat Package Manager)形式のパッケージとして配布されます。RPMパッケージは、ソフトウェア本体、設定ファイル、ドキュメント、そしてメタデータ(バージョン情報、依存関係など)を1つのファイルにまとめたものです。

RPMパッケージのファイル名は、以下のような規則で命名されています。

パッケージ名-バージョン-リリース.アーキテクチャ.rpm

例: vim-enhanced-9.1.xxx-1.el10.x86_64.rpm
    ├── vim-enhanced     パッケージ名
    ├── 9.1.xxx          バージョン
    ├── 1.el10           リリース番号(el10はEnterprise Linux 10向けを意味)
    └── x86_64           対応アーキテクチャ(64ビットx86 CPU)

3.1.3 リポジトリの仕組み

リポジトリ(repository)とは、RPMパッケージを保管・配布するサーバーのことです。パッケージマネージャーは、設定されたリポジトリから最新のパッケージ一覧(メタデータ)を取得し、必要なパッケージをダウンロードします。

AlmaLinux 10には、標準でいくつかのリポジトリが設定されています。

リポジトリ名 説明
baseos OSの基盤となるパッケージ(カーネル、基本ツール等)
appstream アプリケーション(データベース、Webサーバー等)
extras 追加パッケージ
crb CodeReady Builder(開発用パッケージ)

リポジトリを使う利点は、信頼性と利便性です。AlmaLinuxの公式リポジトリに含まれるパッケージは、動作検証済みでセキュリティ署名されています。

3.1.4 依存関係の自動解決

ソフトウェアは単独で動作することは稀で、他のライブラリやツールに依存しています。例えば、Webサーバー(Apache)を動かすには、OpenSSLライブラリやAPR(Apache Portable Runtime)が必要です。

パッケージマネージャーは、これらの依存関係を自動的に解決してくれます。「Aをインストールするには、先にBとCが必要」という関係を把握し、必要なパッケージをすべて一括でインストールします。

3.1.5 dnf5とdnfの違い(なぜdnf5なのか)

AlmaLinux 10では、パッケージマネージャーとしてdnf5が採用されています。これは従来のdnf(バージョン4系、以下dnf4)を全面的に書き換えたもので、以下の改善が施されています。

項目 dnf4 dnf5
実装言語 Python C++
パフォーマンス 標準的 大幅に高速化
メモリ使用量 比較的多い 大幅に削減
メタデータ読み込み 標準的 高速化
プログレス表示 基本的 詳細で見やすい

AlmaLinux 10では、/usr/bin/dnf/usr/bin/dnf5へのシンボリックリンクになっています。つまり、dnfと入力しても実際にはdnf5が実行されます。本ガイドでは一貫性のためにdnf5コマンドを使用しますが、dnfと入力しても同じ結果が得られます。

💡 Tips: dnf5では一部のコマンド構文が変更されています。例えば、groupinstallは非推奨となり、group install(スペース区切り)が推奨されます。本ガイドではdnf5の推奨構文を使用します。

3.2 dnf5コマンドの基本操作

ここからは、dnf5コマンドの実際の使い方を学んでいきます。

3.2.1 dnf5 search でパッケージを探す

インストールしたいソフトウェアの正確なパッケージ名がわからない場合、searchコマンドで検索できます。

[実行ユーザー: 一般ユーザー]

$ dnf5 search vim
========================= Name Exactly Matched: vim =========================
vim.x86_64 : The VIM editor

========================= Name & Summary Matched: vim =========================
vim-common.x86_64 : The common files needed by any version of the VIM editor
vim-enhanced.x86_64 : A version of the VIM editor which includes recent enhancements
vim-filesystem.noarch : VIM filesystem layout
vim-minimal.x86_64 : A minimal version of the VIM editor

検索はパッケージ名と説明文(Summary)の両方を対象にします。searchコマンド自体はシステムを変更しないため、sudoは不要です。

3.2.2 dnf5 info でパッケージ詳細を確認

パッケージの詳細情報を確認するには、infoコマンドを使います。

[実行ユーザー: 一般ユーザー]

$ dnf5 info vim-enhanced
Available packages
Name            : vim-enhanced
Epoch           : 2
Version         : 9.1.xxx
Release         : 1.el10
Architecture    : x86_64
Download size   : 1.8 MiB
Installed size  : 4.2 MiB
Source          : vim-9.1.xxx-1.el10.src.rpm
Repository      : appstream
Summary         : A version of the VIM editor which includes recent enhancements
URL             : http://www.vim.org/
License         : Vim AND MIT
Description     : VIM (VIsual editor iMproved) is an updated and improved
                : version of the vi editor. (以下省略)

ここで確認できる主な情報は以下の通りです。

  • Version / Release: パッケージのバージョン
  • Download size: ダウンロードサイズ
  • Installed size: インストール後のディスク使用量
  • Repository: 提供元リポジトリ
  • License: ソフトウェアのライセンス

3.2.3 dnf5 list でインストール済みパッケージ一覧

システムにインストールされているパッケージを確認するには、listコマンドを使います。

[実行ユーザー: 一般ユーザー]

# インストール済みパッケージの一覧
$ dnf5 list --installed

# パッケージ名で絞り込み
$ dnf5 list --installed vim*
Installed packages
vim-common.x86_64          2:9.1.xxx-1.el10          @appstream
vim-enhanced.x86_64        2:9.1.xxx-1.el10          @appstream
vim-filesystem.noarch      2:9.1.xxx-1.el10          @appstream

# 利用可能なパッケージ(未インストール含む)
$ dnf5 list --available vim*

出力の@appstreamは、そのパッケージがappstreamリポジトリからインストールされたことを示します。

3.2.4 dnf5 install でインストール

パッケージをインストールするには、installコマンドを使います。この操作はシステムを変更するため、sudoが必要です。

[実行ユーザー: 一般ユーザー(sudo使用)]

$ sudo dnf5 install vim-enhanced
Last metadata expiration check: 0:45:12 ago on Sat Jan 25 10:00:00 2026.
Dependencies resolved.
================================================================================
 Package              Architecture    Version              Repository      Size
================================================================================
Installing:
 vim-enhanced         x86_64          2:9.1.xxx-1.el10     appstream      1.8 M
Installing dependencies:
 vim-common           x86_64          2:9.1.xxx-1.el10     appstream      6.8 M
 vim-filesystem       noarch          2:9.1.xxx-1.el10     appstream       24 k

Transaction Summary
================================================================================
Install  3 Packages

Total download size: 8.6 M
Installed size: 35 M
Is this ok [y/N]: 

ここで重要なのは、トランザクション確認画面です。dnf5は実行前に以下を表示します。

  • インストールされるパッケージの一覧
  • 依存関係として追加されるパッケージ
  • ダウンロードサイズとインストール後のサイズ

内容を確認してからyを入力してEnterを押すと、インストールが実行されます。問題があればNまたはEnter(デフォルト)でキャンセルできます。

複数のパッケージを同時にインストールすることも可能です。

$ sudo dnf5 install vim-enhanced wget curl

⚠️ 注意: -yオプションを付けると、確認画面をスキップして自動的に「yes」と回答します。便利ですが、本番環境では必ずトランザクション内容を確認してからインストールする習慣をつけましょう。

3.2.5 dnf5 update でシステム全体を更新

インストール済みのすべてのパッケージを最新バージョンに更新するには、updateコマンドを使います。

[実行ユーザー: 一般ユーザー(sudo使用)]

$ sudo dnf5 update
Last metadata expiration check: 1:20:05 ago on Sat Jan 25 10:00:00 2026.
Dependencies resolved.
================================================================================
 Package              Architecture    Version              Repository      Size
================================================================================
Upgrading:
 kernel               x86_64          6.12.xxx-1.el10      baseos          15 M
 openssl              x86_64          3.2.xxx-1.el10       baseos         1.2 M
 (省略)

Transaction Summary
================================================================================
Upgrade  42 Packages

Total download size: 85 M
Is this ok [y/N]: y

セキュリティ更新が含まれることが多いため、定期的なupdateの実行はサーバー運用の基本です。

3.2.6 dnf5 upgrade との違い

dnf5では、updateupgradeは基本的に同じ動作をします。歴史的な経緯から両方が用意されていますが、どちらを使っても構いません。本ガイドでは、わかりやすさのためにupdateを使用します。

3.2.7 dnf5 remove でアンインストール

不要になったパッケージを削除するには、removeコマンドを使います。

[実行ユーザー: 一般ユーザー(sudo使用)]

$ sudo dnf5 remove vim-enhanced
Dependencies resolved.
================================================================================
 Package              Architecture    Version              Repository      Size
================================================================================
Removing:
 vim-enhanced         x86_64          2:9.1.xxx-1.el10     @appstream     4.2 M
Removing unused dependencies:
 vim-common           x86_64          2:9.1.xxx-1.el10     @appstream      31 M

Transaction Summary
================================================================================
Remove  2 Packages

Freed space: 35 M
Is this ok [y/N]: 

削除時には、そのパッケージに依存していて他に使われていないパッケージも一緒に削除対象として提示されます。必ず確認画面の内容を確認してください。

🚨 重要: removeコマンドは依存関係を連鎖的に削除することがあります。特に-yオプションと組み合わせると、意図しない大量のパッケージが削除される危険があります。本番環境では絶対に-yを付けずに、トランザクション内容を慎重に確認してください。

3.2.8 dnf5 autoremove で不要な依存関係を削除

過去にインストールしたパッケージの依存関係として導入されたものの、現在は使われていないパッケージを一括で削除するには、autoremoveコマンドを使います。

[実行ユーザー: 一般ユーザー(sudo使用)]

$ sudo dnf5 autoremove
Dependencies resolved.
================================================================================
 Package              Architecture    Version              Repository      Size
================================================================================
Removing:
 unused-library       x86_64          1.0.0-1.el10         @appstream     500 k

Transaction Summary
================================================================================
Remove  1 Package

Freed space: 500 k
Is this ok [y/N]: 

ディスク容量を節約したいときに便利ですが、実行前に削除対象を必ず確認しましょう。

3.2.9 実行ユーザーの明記(sudo dnf5)

ここで改めて強調しておきます。パッケージ管理操作のうち、システムを変更するものにはsudoが必要です。

操作 sudo必要 理由
search, info, list 不要 情報の参照のみ
install, update, remove 必要 システムファイルを変更
autoremove, clean 必要 システムを変更

一般ユーザーでシステム変更コマンドを実行しようとすると、以下のようなエラーが表示されます。

$ dnf5 install vim-enhanced
Error: This command has to be run with superuser privileges (under the root user on most systems).

3.3 パッケージグループの管理

関連するパッケージをまとめて管理できる「グループ」機能について学びます。

3.3.1 グループとは何か

パッケージグループは、特定の用途に必要なパッケージをまとめたものです。例えば「開発ツール」グループには、コンパイラやビルドツールなど開発に必要なパッケージが含まれています。個別にパッケージ名を指定する代わりに、グループを指定することで一括インストールできます。

3.3.2 dnf5 group list でグループ一覧

[実行ユーザー: 一般ユーザー]

$ dnf5 group list
Available Environment Groups:
   Server
   Minimal Install
   Workstation
   (省略)

Available Groups:
   Console Internet Tools
   Container Management
   Development Tools
   Headless Management
   Legacy UNIX Compatibility
   Network Servers
   RPM Development Tools
   Scientific Support
   Security Tools
   Smart Card Support
   System Tools

「Environment Groups」は大きな構成セット、「Groups」は個別の機能グループです。

3.3.3 dnf5 group info でグループ詳細

グループに含まれるパッケージを確認するには、group infoコマンドを使います。

[実行ユーザー: 一般ユーザー]

$ dnf5 group info "Development Tools"
Group: Development Tools
 Description: A basic development environment.
 Mandatory Packages:
   autoconf
   automake
   binutils
   gcc
   gcc-c++
   make
   (省略)
 Default Packages:
   bison
   flex
   (省略)
 Optional Packages:
   cmake
   (省略)

パッケージは3種類に分類されています。

  • Mandatory: グループに必須のパッケージ(必ずインストールされる)
  • Default: デフォルトでインストールされるパッケージ
  • Optional: オプションパッケージ(明示的に指定しない限りインストールされない)

3.3.4 dnf5 group install で一括インストール

[実行ユーザー: 一般ユーザー(sudo使用)]

$ sudo dnf5 group install "Development Tools"

グループ名にスペースが含まれる場合は、クォーテーションで囲みます。

💡 Tips: dnf5では、groupinstall(スペースなし)という旧式の書き方も互換性のために動作しますが、group install(スペースあり)が推奨されています。

3.4 リポジトリの管理

パッケージの提供元であるリポジトリの管理方法を学びます。

3.4.1 リポジトリ設定ファイルの場所(/etc/yum.repos.d/)

リポジトリの設定は、/etc/yum.repos.d/ディレクトリ内の.repoファイルに記述されています。

[実行ユーザー: 一般ユーザー]

$ ls /etc/yum.repos.d/
almalinux-appstream.repo
almalinux-baseos.repo
almalinux-crb.repo
almalinux-extras.repo

設定ファイルの中身を確認してみましょう。

$ cat /etc/yum.repos.d/almalinux-baseos.repo
[baseos]
name=AlmaLinux $releasever - BaseOS
mirrorlist=https://mirrors.almalinux.org/mirrorlist/$releasever/baseos
# baseurl=https://repo.almalinux.org/almalinux/$releasever/BaseOS/$basearch/os/
enabled=1
gpgcheck=1
countme=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-AlmaLinux-10

主要な設定項目は以下の通りです。

  • name: リポジトリの表示名
  • baseurl / mirrorlist: パッケージの取得先URL
  • enabled: 1で有効、0で無効
  • gpgcheck: GPG署名の検証を行うか
  • gpgkey: 署名検証に使う公開鍵

3.4.2 dnf5 repolist でリポジトリ一覧

現在有効なリポジトリの一覧を確認するには、repolistコマンドを使います。

[実行ユーザー: 一般ユーザー]

$ dnf5 repolist
repo id                         repo name
appstream                       AlmaLinux 10 - AppStream
baseos                          AlmaLinux 10 - BaseOS
crb                             AlmaLinux 10 - CRB
extras                          AlmaLinux 10 - Extras

無効なリポジトリも含めてすべて表示するには、--allオプションを付けます。

$ dnf5 repolist --all

3.4.3 EPELリポジトリとは

EPEL(Extra Packages for Enterprise Linux)は、Fedoraプロジェクトが提供する追加パッケージリポジトリです。AlmaLinuxの標準リポジトリには含まれていないが、広く使われているソフトウェア(htop, iotop, fail2banなど)を提供しています。

EPELの特徴は以下の通りです。

  • Fedoraコミュニティによって維持されており、品質と互換性が担保されている
  • エンタープライズLinux向けにテストされている
  • AlmaLinuxの公式リポジトリと競合しないよう設計されている

3.4.4 EPELリポジトリの追加方法

EPELリポジトリを追加するには、epel-releaseパッケージをインストールします。

[実行ユーザー: 一般ユーザー(sudo使用)]

$ sudo dnf5 install epel-release
Last metadata expiration check: 0:15:30 ago on Sat Jan 25 10:00:00 2026.
Dependencies resolved.
================================================================================
 Package              Architecture    Version              Repository      Size
================================================================================
Installing:
 epel-release         noarch          10-1.el10            extras          18 k

Transaction Summary
================================================================================
Install  1 Package

Total download size: 18 k
Installed size: 25 k
Is this ok [y/N]: y

インストール後、EPELが追加されたことを確認します。

$ dnf5 repolist
repo id                         repo name
appstream                       AlmaLinux 10 - AppStream
baseos                          AlmaLinux 10 - BaseOS
crb                             AlmaLinux 10 - CRB
epel                            Extra Packages for Enterprise Linux 10 - x86_64
extras                          AlmaLinux 10 - Extras

これで、EPELに含まれるパッケージもインストールできるようになりました。

3.4.5 リポジトリの有効化/無効化

特定のリポジトリを一時的に無効化したり、無効なリポジトリを有効化したりするには、config-managerコマンドを使用します。

[実行ユーザー: 一般ユーザー(sudo使用)]

# リポジトリを無効化
$ sudo dnf5 config-manager setopt crb.enabled=0

# リポジトリを有効化
$ sudo dnf5 config-manager setopt crb.enabled=1

一時的に特定のリポジトリを使いたい場合は、コマンド実行時に--enablerepo--disablerepoオプションを使うこともできます。

# このコマンドの実行時のみepelを無効化
$ sudo dnf5 install package-name --disablerepo=epel

3.4.6 サードパーティリポジトリのリスク

EPELのような準公式リポジトリ以外にも、様々なサードパーティリポジトリが存在します。しかし、安易にサードパーティリポジトリを追加することには以下のリスクがあります。

  • 互換性の問題: 公式パッケージと競合する可能性
  • セキュリティリスク: 悪意のあるコードが含まれる可能性
  • サポートの問題: トラブル発生時に自己解決が必要
  • 依存関係の破壊: 既存のパッケージが動作しなくなる可能性

サードパーティリポジトリを追加する際は、以下を確認してください。

  • 提供元は信頼できる組織か
  • GPG署名が有効か
  • 本当にそのリポジトリが必要か(公式リポジトリやEPELにないか確認)

3.5 パッケージ管理のトラブルシューティング

パッケージ管理で遭遇しやすいエラーとその対処法を学びます。

3.5.1 依存関係エラーの読み方と対処

パッケージのインストール時に、依存関係の問題でエラーが発生することがあります。

Error: 
 Problem: conflicting requests
  - nothing provides libfoo.so.1 needed by some-package-1.0-1.el10.x86_64

このエラーは「some-packageをインストールするにはlibfoo.so.1が必要だが、それを提供するパッケージが見つからない」という意味です。

対処法としては、以下を試してください。

  1. EPELリポジトリを有効にする(まだの場合)
  2. dnf5 providesコマンドで、必要なライブラリを提供するパッケージを探す
$ dnf5 provides "*/libfoo.so.1"

3.5.2 ロックファイルエラーの対処

別のdnfプロセスが実行中の場合、以下のようなエラーが表示されます。

Error: Could not open lock file /var/cache/dnf/metadata.lock: Resource temporarily unavailable
Another application is currently holding the lock.

対処法は以下の通りです。

  1. 他にdnfコマンドを実行していないか確認
  2. 自動更新サービス(dnf-automatic)が実行中でないか確認
  3. しばらく待ってから再試行
# dnf関連のプロセスを確認
$ ps aux | grep dnf

3.5.3 dnf5 clean all でキャッシュクリア

メタデータの破損やキャッシュの問題が疑われる場合、キャッシュをクリアすることで解決することがあります。

[実行ユーザー: 一般ユーザー(sudo使用)]

$ sudo dnf5 clean all
Cleaning up Everything

クリア後、次回のdnfコマンド実行時にメタデータが再取得されます。

3.5.4 ダウンロードエラー時の対処

ネットワーク接続の問題やミラーサーバーの障害でダウンロードに失敗することがあります。

Error: Failed to download metadata for repo 'appstream'

対処法は以下の通りです。

  1. ネットワーク接続を確認(pingコマンドなど)
  2. キャッシュをクリアして再試行(sudo dnf5 clean all
  3. 時間を置いて再試行(ミラーサーバーの一時的な障害の可能性)

3.5.5 パッケージの競合解決

異なるリポジトリから同名のパッケージが提供されている場合、競合が発生することがあります。

Error: 
 Problem: package foo-2.0-1.thirdparty.x86_64 conflicts with foo provided by foo-1.0-1.el10.x86_64

対処法は以下の通りです。

  1. サードパーティリポジトリを無効化して公式パッケージを使用
  2. どちらのバージョンが必要か判断し、一方を明示的にインストール
# 公式リポジトリのパッケージを優先してインストール
$ sudo dnf5 install foo --disablerepo=thirdparty

3.6 実践: 必要なツールのインストール

本ガイドの後続の章で使用するツールを、ここでまとめてインストールしておきましょう。

3.6.1 開発ツールのインストール(vim, git, wget, curl等)

まず、基本的な開発・編集ツールをインストールします。

[実行ユーザー: 一般ユーザー(sudo使用)]

$ sudo dnf5 install vim-enhanced git wget curl
Last metadata expiration check: 0:30:00 ago on Sat Jan 25 10:00:00 2026.
Dependencies resolved.
================================================================================
 Package              Architecture    Version              Repository      Size
================================================================================
Installing:
 curl                 x86_64          8.x.x-1.el10         baseos         300 k
 git                  x86_64          2.x.x-1.el10         appstream      100 k
 vim-enhanced         x86_64          2:9.1.xxx-1.el10     appstream      1.8 M
 wget                 x86_64          1.x.x-1.el10         appstream      800 k
Installing dependencies:
 git-core             x86_64          2.x.x-1.el10         appstream       15 M
 (省略)

Transaction Summary
================================================================================
Install  15 Packages

Total download size: 25 M
Installed size: 95 M
Is this ok [y/N]: y

各ツールの用途は以下の通りです。

  • vim-enhanced: 高機能なテキストエディタ(設定ファイルの編集に使用)
  • git: バージョン管理システム(設定ファイルの履歴管理や外部リポジトリからの取得に使用)
  • wget: ファイルダウンロードツール(Webからのファイル取得に使用)
  • curl: データ転送ツール(APIテストやファイルダウンロードに使用)

3.6.2 システム監視ツール(htop, iotop等)

システムリソースの監視に便利なツールをインストールします。htopとiotopはEPELリポジトリで提供されているため、事前にEPELを追加しておく必要があります。

[実行ユーザー: 一般ユーザー(sudo使用)]

# EPELがまだの場合は先にインストール
$ sudo dnf5 install epel-release

# 監視ツールのインストール
$ sudo dnf5 install htop iotop
  • htop: 対話的なプロセスビューア(topコマンドの高機能版)
  • iotop: ディスクI/Oの監視ツール

3.6.3 ネットワークツール(bind-utils, traceroute等)

ネットワークのトラブルシューティングに必要なツールをインストールします。

[実行ユーザー: 一般ユーザー(sudo使用)]

$ sudo dnf5 install bind-utils traceroute
  • bind-utils: DNS関連ツール(dig, nslookup, hostコマンドを含む)
  • traceroute: ネットワーク経路の追跡ツール

3.6.4 インストール後の確認方法

インストールしたパッケージが正しく動作するか確認しましょう。

[実行ユーザー: 一般ユーザー]

# バージョン確認
$ vim --version | head -1
VIM - Vi IMproved 9.1 (省略)

$ git --version
git version 2.x.x

$ curl --version | head -1
curl 8.x.x (省略)

$ wget --version | head -1
GNU Wget 1.x.x built on linux-gnu.

$ htop --version
htop 3.x.x

# コマンドが見つからない場合
$ which dig
/usr/bin/dig

すべてのコマンドがバージョン情報を表示すれば、正常にインストールされています。


【コラム2】本番環境で誤ってパッケージを大量削除した話

ある深夜、本番サーバーのディスク容量を確保するために、不要と思われるパッケージを削除することにしました。調べると、開発環境からコピーしたときに入った不要なパッケージがいくつかあるようです。「さっさと終わらせて寝よう」と思い、こんなコマンドを実行しました。

$ sudo dnf remove php* -y

phpで始まるパッケージを全部消すつもりでした。-yを付けたのは、確認画面をスキップして時間を節約するためです。

Enter を押した瞬間、画面にはおびただしい数のパッケージ名が流れ始めました。phpだけでなく、php に依存している Webアプリケーション、さらにはそれに依存している他のパッケージも連鎖的に削除されていったのです。

気付いたときにはWebサーバーが停止し、アラートが鳴り響いていました。結局、バックアップからの復旧に3時間かかりました。

この失敗から学んだ教訓は3つです。

  1. 本番環境では絶対に -y オプションを使わない:確認画面は必ず読む
  2. ワイルドカード(*)を使うときは特に慎重に:予想以上に多くのパッケージにマッチすることがある
  3. バックアップは命綱:この件以降、パッケージ操作前には必ずスナップショットを取るようにしています

眠いときに本番環境を触るのは危険です。余裕のある時間に作業しましょう。


章末まとめ

この章では、AlmaLinux 10のパッケージ管理について学びました。

  • パッケージマネージャーは、ソフトウェアのインストール、更新、削除を一元管理するツール
  • RPMパッケージは、ソフトウェアとメタデータをまとめた配布形式
  • リポジトリは、パッケージを保管・配布するサーバー
  • dnf5は、AlmaLinux 10で採用されている高速なパッケージマネージャー
  • EPELは、追加パッケージを提供する信頼性の高いサードパーティリポジトリ
  • システムを変更する操作にはsudoが必要
  • -y オプションは便利だが、本番環境では慎重に使用する

主要なコマンドのまとめ

操作 コマンド
パッケージ検索 dnf5 search キーワード
パッケージ情報表示 dnf5 info パッケージ名
インストール済み一覧 dnf5 list --installed
インストール sudo dnf5 install パッケージ名
システム更新 sudo dnf5 update
アンインストール sudo dnf5 remove パッケージ名
不要パッケージ削除 sudo dnf5 autoremove
リポジトリ一覧 dnf5 repolist
キャッシュクリア sudo dnf5 clean all
グループ一覧 dnf5 group list
グループインストール sudo dnf5 group install "グループ名"

練習問題

問題1: 「nginx」という文字を含むパッケージを検索し、その中から「nginx」本体パッケージの詳細情報を表示してください。

解答例を見る
# パッケージを検索
$ dnf5 search nginx

# 詳細情報を表示
$ dnf5 info nginx

問題2: システムにインストールされているパッケージのうち、「kernel」で始まるものの一覧を表示してください。

解答例を見る
$ dnf5 list --installed kernel*

問題3: EPELリポジトリを追加し、正しく追加されたことを確認してください。その後、EPELでのみ提供されている「htop」パッケージをインストールしてください。

解答例を見る
# EPELリポジトリの追加
$ sudo dnf5 install epel-release

# 追加の確認
$ dnf5 repolist | grep epel

# htopのインストール
$ sudo dnf5 install htop

# インストールの確認
$ htop --version

問題4: 「Cannot find a valid baseurl for repo」というエラーが表示された場合、まず試すべき対処法を2つ挙げ、それぞれのコマンドを書いてください。

解答例を見る

1. ネットワーク接続を確認

$ ping -c 3 mirrors.almalinux.org

2. DNFキャッシュをクリア

$ sudo dnf5 clean all

次章への橋渡し

この章では、dnf5を使ったパッケージ管理の基本を学びました。必要なソフトウェアをインストールし、システムを最新の状態に保つことができるようになりました。

次の第4章では、ストレージとファイルシステムについて学びます。サーバーを運用する上で、ディスク容量の管理は非常に重要です。ディスクがいっぱいになると、ログが書き込めなくなり、サービスが停止する原因となります。パーティションの作成、ファイルシステムの管理、ディスク使用量の監視方法を習得しましょう。