Huney

サーバー / Linux

Linuxのパッケージ管理とは?apt・dnfを初心者向けに解説

Linuxのパッケージ管理について初心者向けに解説します。パッケージ、リポジトリ、依存関係の仕組みから、apt・dnfを使ったソフトウェアの検索、インストール、更新、削除まで学びます。

読了時間:約14分
  • #Linux
  • #パッケージ管理
  • #apt
  • #dnf
  • #Linuxコマンド

Linuxのパッケージ管理とは?apt・dnfを初心者向けに解説

Linuxサーバーを使っていると、新しいソフトウェアをインストールする場面があります。

たとえば、

  • Webサーバー
  • データベース
  • Java
  • Git
  • curl
  • 各種サーバーツール

などです。

Windowsでは、Webサイトからインストーラーをダウンロードしてソフトウェアをインストールすることがあります。

Linuxでもそのような方法はありますが、一般的にはパッケージマネージャーを利用してソフトウェアを管理できます。

今回は、

  • パッケージ
  • パッケージマネージャー
  • リポジトリ
  • 依存関係
  • apt
  • dnf

について学びながら、Linuxへソフトウェアをインストールする基本を理解していきます。

パッケージとは?

**パッケージ(Package)**とは、Linuxへソフトウェアを導入しやすい形にまとめたものです。

単純にプログラム本体だけが入っているわけではなく、ソフトウェアをLinuxへインストール・管理するために必要な情報なども含まれています。

イメージすると、

ソフトウェア
    ↓
Linuxへ導入しやすい形にまとめる
    ↓
パッケージ

という関係です。

Linuxでは、このパッケージを利用してさまざまなソフトウェアを管理します。

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

パッケージを管理する仕組みが**パッケージマネージャー(Package Manager)**です。

パッケージマネージャーを利用すると、

ソフトウェアを探す
      ↓
インストールする
      ↓
アップデートする
      ↓
不要になったら削除する

といった操作をまとめて行えます。

さらに、後ほど説明する依存関係も処理してくれます。

そのためLinuxでは、

「ソフトウェアを入れたい」

となったとき、まずパッケージマネージャーを利用できないか確認することが多くあります。

Linuxによって使うパッケージマネージャーが違う

Linuxには複数のディストリビューションがあります。

ディストリビューションによって、利用するパッケージ管理の仕組みも異なります。

代表的なものを見てみましょう。

系統 ディストリビューション例 主に利用するコマンド
Debian系 Debian / Ubuntu apt
RHEL系 Red Hat Enterprise Linux / Rocky Linux / AlmaLinux dnf

たとえばUbuntuを使っている記事で、

sudo apt install パッケージ名

と書かれていても、Rocky Linuxではそのまま利用できません。

Rocky Linuxなどでは、

sudo dnf install パッケージ名

のように操作します。

Linuxを勉強するときは、

「自分がどのディストリビューションを使っているのか」

を意識することが大切です。

リポジトリとは?

パッケージマネージャーは、どこからソフトウェアを取得しているのでしょうか。

ここで登場するのが**リポジトリ(Repository)**です。

リポジトリは、簡単にいうと、

Linuxで利用するパッケージが公開・管理されている場所

です。

イメージすると、

Linuxサーバー
      │
      │ パッケージを要求
      ↓
リポジトリ
├── パッケージA
├── パッケージB
├── パッケージC
└── パッケージD
      │
      ↓
Linuxへインストール

となります。

パッケージマネージャーは設定されたリポジトリの情報を利用して、必要なパッケージを取得します。

はちみつ屋さんで考えてみよう

パッケージ管理を、はちみつ屋さんで考えてみます。

Linuxサーバーをはちみつ屋さんとします。

新しく商品を販売するために道具が必要になりました。

毎回自分で道具のメーカーを探して、一つずつ必要な部品を集めるのは大変です。

そこで、必要な道具をまとめて管理している倉庫を利用します。

🍯 はちみつ屋さん
        │
        │ 「この道具ください!」
        ↓
📦 倉庫
├── 道具A
├── 道具B
├── 道具C
└── 道具D

このイメージでは、

はちみつ屋さん
→ Linux

道具
→ パッケージ

倉庫
→ リポジトリ

注文・管理する仕組み
→ パッケージマネージャー

となります。

必要なソフトウェアを探して取得してくれる仕組み、と考えると分かりやすいでしょう。

依存関係とは?

ソフトウェアは、必ずしも一つのパッケージだけで動くとは限りません。

あるソフトウェアを動かすために、別のライブラリやパッケージが必要になることがあります。

これを**依存関係(Dependency)**と呼びます。

たとえば、

パッケージA
│
├── パッケージBが必要
│
└── パッケージCが必要

という状態です。

パッケージAだけをインストールしても、BやCがなければ正常に動かない可能性があります。

そこでパッケージマネージャーが、

パッケージAをインストールしたい
        ↓
BとCも必要
        ↓
必要なパッケージを確認
        ↓
まとめてインストール

という処理をしてくれます。

これもパッケージマネージャーを利用する大きなメリットです。

aptを使ってみよう

ここからはUbuntuなどのDebian系Linuxで利用されるaptを見ていきます。

apt update:パッケージ情報を更新する

まず覚えておきたいのが、

sudo apt update

です。

これは、設定されているリポジトリから利用可能なパッケージの情報を更新するコマンドです。

重要なのは、

sudo apt update

を実行しただけでは、基本的にインストール済みパッケージそのものをまとめて更新しているわけではないということです。

イメージすると、

リポジトリ
    ↓
最新のパッケージ情報を取得
    ↓
Linux側のパッケージ情報を更新

という処理です。

apt upgrade:インストール済みパッケージを更新する

インストール済みのパッケージを更新するときには、

sudo apt upgrade

を利用できます。

つまり、

apt update
→ パッケージ情報を更新

apt upgrade
→ インストール済みパッケージを更新

という違いがあります。

この2つは混同しやすいので注意しましょう。

apt search:パッケージを探す

パッケージを検索するときには、

apt search キーワード

を利用できます。

たとえばJava関連のパッケージを探したい場合、

apt search openjdk

のように検索できます。

apt install:パッケージをインストールする

ソフトウェアをインストールするときは、

sudo apt install パッケージ名

を利用します。

たとえばGitをインストールする場合、

sudo apt install git

のように実行します。

インストール後、

git --version

などで確認できます。

apt remove:パッケージを削除する

インストールしたパッケージを削除したい場合は、

sudo apt remove パッケージ名

を利用できます。

たとえば、

sudo apt remove git

です。

removeでは設定ファイルの一部が残る場合があります。

設定ファイルなども含めて削除したい場合には、

sudo apt purge パッケージ名

という方法もあります。

不要になった依存パッケージを削除する

パッケージを削除したあと、そのパッケージのために自動的にインストールされた依存パッケージが不要になる場合があります。

そのようなパッケージを整理するときには、

sudo apt autoremove

を利用できます。

ただし、実際のサーバーでは削除対象を確認してから実行する習慣をつけておきましょう。

dnfを使ってみよう

次はRocky LinuxやAlmaLinuxなど、RHEL系Linuxで利用されるdnfを見てみましょう。

基本的な考え方はaptと同じです。

dnf search:パッケージを検索する

パッケージを検索するときは、

dnf search キーワード

を利用できます。

たとえば、

dnf search java

のように検索できます。

dnf install:パッケージをインストールする

インストールするときは、

sudo dnf install パッケージ名

です。

たとえばGitなら、

sudo dnf install git

のように利用できます。

dnf upgrade:パッケージを更新する

インストールされているパッケージを更新するときには、

sudo dnf upgrade

を利用できます。

環境によっては、

sudo dnf update

という書き方を目にすることもあります。

dnf remove:パッケージを削除する

パッケージを削除するときは、

sudo dnf remove パッケージ名

を利用します。

たとえば、

sudo dnf remove git

です。

aptとdnfを比較してみよう

基本的な操作を並べてみます。

操作 Ubuntu / Debian系 RHEL系
パッケージ検索 apt search dnf search
インストール apt install dnf install
更新 apt upgrade dnf upgrade
削除 apt remove dnf remove

完全に同じ仕組みではありませんが、初心者の段階では、

Ubuntu系
→ apt

RHEL系
→ dnf

という対応から覚えると分かりやすいでしょう。

なぜsudoを付けるの?

インストールコマンドを見ると、

sudo apt install git

や、

sudo dnf install git

のようにsudoが付いています。

これは、ソフトウェアのインストールや削除がシステム全体へ影響する操作だからです。

一般ユーザーのままでは権限が足りないため、sudoを利用して必要な管理者権限で実行します。

ここで以前学んだユーザー・権限の知識がつながります。

一般ユーザー
      ↓
sudo
      ↓
必要な管理者権限で
パッケージを操作

というイメージです。

インストールできたか確認する

パッケージをインストールしたら、

本当に使えるようになったのか

を確認してみましょう。

多くのソフトウェアでは、

コマンド名 --version

などでバージョンを確認できます。

たとえばGitなら、

git --version

Javaなら、

java -version

のように確認できます。

インストールコマンドが正常終了したから終わりではなく、

実際に利用できるか確認する

ところまでを一つの作業として考えるとよいでしょう。

Minecraftサーバーではどう使う?

このシリーズでは最終的にMinecraft Java EditionのサーバーをLinux上へ構築します。

Minecraftサーバーを動かすにはJavaが必要です。

そのため、

Minecraftサーバーを構築したい
        ↓
Javaが必要
        ↓
パッケージマネージャーを利用
        ↓
Javaをインストール
        ↓
java -versionで確認
        ↓
Minecraftサーバーを起動

という流れになります。

たとえばUbuntu系であれば、利用するMinecraftサーバーのバージョンに対応したJavaパッケージを確認してインストールします。

apt search openjdk

で候補を確認し、

sudo apt install 対応するJavaパッケージ

という流れです。

インストール後は、

java -version

でJavaが利用できることを確認します。

Minecraft側が要求するJavaのバージョンはMinecraftのバージョンによって異なるため、実際に構築するときに対応バージョンを確認して選びます。

パッケージ管理はセキュリティにも関係する

パッケージ管理は、単に新しいソフトウェアをインストールするだけの仕組みではありません。

ソフトウェアに脆弱性が見つかった場合、修正版のパッケージが提供されることがあります。

そのため、

パッケージをインストール
        ↓
そのまま放置

ではなく、

更新情報を確認
      ↓
必要なアップデートを適用
      ↓
安全な状態を維持

という運用も重要になります。

ただし、業務で利用しているサーバーでは、何でもすぐ更新すればよいとは限りません。

アップデートによって、

  • アプリケーションへの影響
  • 設定への影響
  • サービス停止
  • 互換性の問題

などが発生する可能性があります。

そのため、本番環境では影響確認やテスト、バックアップなどを行ったうえで計画的に更新することが重要です。

実際にパッケージ管理を体験してみよう

Ubuntu系Linuxを利用している場合は、まずパッケージ情報を更新します。

sudo apt update

次にGitを検索してみます。

apt search git

インストールします。

sudo apt install git

インストールできたか確認します。

git --version

RHEL系Linuxの場合は、

dnf search git

で検索し、

sudo dnf install git

でインストールできます。

最後に、

git --version

で確認してみましょう。

今回のポイントは、コマンドを暗記することよりも、

探す
 ↓
インストール
 ↓
動作確認
 ↓
必要に応じて更新・削除

という流れを理解することです。

🍯 はちみつメモ

パッケージマネージャーはLinuxのソフトウェア管理係!

Linuxでは、ソフトウェアを入れるたびにWebサイトを探し回る必要はありません。

パッケージマネージャーを利用すれば、リポジトリから必要なパッケージを探してインストールできます。

Ubuntu系ならapt、RHEL系ならdnf。

MinecraftサーバーでJavaを準備するときにも、この仕組みを利用します。

まとめ

今回はLinuxのパッケージ管理について学びました。

この記事で覚えること

  • パッケージはLinuxへソフトウェアを導入・管理しやすい形にまとめたもの
  • パッケージマネージャーでソフトウェアを管理できる
  • リポジトリからパッケージを取得する
  • ソフトウェアには依存関係が存在することがある
  • Ubuntu・Debian系ではaptがよく利用される
  • RHEL系ではdnfがよく利用される
  • apt updateはパッケージ情報を更新する
  • apt upgradeはインストール済みパッケージの更新に利用する
  • installでインストールできる
  • removeで削除できる
  • インストール後は--versionなどで確認する
  • パッケージ更新はセキュリティにも関係する
  • Minecraftサーバー構築ではJavaのインストールに利用する

Linuxサーバーでは、パッケージ管理は非常によく利用します。

まずは、

「ソフトウェアが必要になったらパッケージマネージャーを確認する」

という考え方を身につけておきましょう。

次におすすめ

次は**「SSHでLinuxを操作する方法」**について学びます。

これまではLinuxの画面から直接コマンドを実行するイメージでしたが、実際のサーバー運用では、別のPCからLinuxサーバーへ接続して操作することがよくあります。

次の記事では、

  • SSHとは?
  • SSHサーバーとSSHクライアント
  • TCP 22番ポート
  • sshコマンド
  • ユーザー名とIPアドレス
  • パスワード認証
  • 公開鍵認証の基本

を学びながら、自分のPCからLinuxサーバーへリモートログインする仕組みを理解していきます。