Linux

ディストリビューションとパッケージ管理

Debian系とRed Hat系を見分け、環境に合う方法でソフトウェアを管理しましょう。

01

先にOSと系統を確認する

共通の確認方法COMMAND
. /etc/os-release
printf 'ID=%s\nLIKE=%s\nVERSION=%s\n' "$ID" "$ID_LIKE" "$VERSION_ID"
Rocky Linuxでの表示例OUTPUT
ID=rocky
LIKE=rhel centos fedora
VERSION=9.5

.はファイルの変数定義を現在のシェルへ読み込みます。/etc/os-releaseはOSが提供するため、表示値は環境によって異なります。

観点Debian系Red Hat系
代表例Debian、Ubuntu、MintRHEL、Fedora、Rocky、Alma
形式debRPM
高水準apt/apt-getdnf
低水準dpkgrpm
主なリポジトリ設定/etc/apt/sources.listsources.list.d/etc/yum.repos.d/*.repo
02

リポジトリと依存関係

リポジトリは署名されたパッケージとメタデータの配布元です。aptやdnfは一覧から適切な版を選び、必要な依存パッケージも解決します。dpkgrpmは個別ファイルや導入済み情報を扱う低水準ツールです。

Webから直接実行しない 出所不明のcurl URL | sudo shは、内容を確認せず管理者権限で実行することになります。まず公式リポジトリを使い、追加リポジトリは提供元、署名鍵、対象OS版、更新方針を確認します。
04

リポジトリからインストールする

Debian/UbuntuCOMMAND
sudo apt update
apt show tree
sudo apt install tree
RHEL/Fedora/Rocky/AlmaCOMMAND
dnf info tree
sudo dnf install tree
共通の確認COMMAND
tree --version
表示例OUTPUT
tree v2.1.1 (c) 1996 - 2023 by Steve Baker, ...

版や表示はOS版で異なります。実行前に追加・削除予定、容量、確認質問を読みます。自動承認の-yは内容を確認できなくなるため、学習中は付けません。

05

一覧更新とパッケージ更新を区別する

目的Debian系Red Hat系
メタデータ更新sudo apt updatesudo dnf makecache(通常dnfが自動管理)
更新候補apt list --upgradablednf check-update
通常更新sudo apt upgradesudo dnf upgrade
注意する点
  • apt updateだけでは導入済みソフトは更新されない
  • dnf check-updateは更新候補があると終了ステータス100になる仕様
  • 本番環境は更新前にバックアップ、変更内容、再起動、保守時間を確認
  • ディストリビューションのメジャー版更新は通常更新と別の手順
06

削除と不要依存を理解する

目的Debian系Red Hat系
削除sudo apt remove treesudo dnf remove tree
設定も削除sudo apt purge packageパッケージごとの設定保存方針を確認
不要依存sudo apt autoremovesudo dnf autoremove
削除予定を読む autoremoveは共有依存や構成の変化で予想より多くを候補にすることがあります。確定前に一覧を読み、重要なメタパッケージやサービスが含まれていないか確認します。
07

ローカルのパッケージファイル

ファイル情報だけを調べるCOMMAND
# Debian系の.deb
dpkg-deb --info ./example.deb

# Red Hat系の.rpm
rpm -qpi ./example.rpm

導入時は依存関係を解決できる高水準ツールを使います。Debian系はsudo apt install ./example.deb、Red Hat系はsudo dnf install ./example.rpmです。

信頼性の確認 拡張子が正しくても安全とは限りません。公式配布元、署名、チェックサム、対象OSとCPU、保守状況を確認してください。
08

パッケージ以外にもある違い

項目Debian/Ubuntuの例RHEL系の例
Webサーバーユーザーwww-dataapache
Apacheパッケージ/サービスapache2httpd
SSHサービスsshsshd
MACAppArmorを使う構成が多いSELinuxを標準利用する構成が多い
ネットワーク管理UbuntuではNetplanなどNetworkManagerなど

表は代表例で、導入方法や版により異なります。ブログ記事のコマンドをコピーする前に、自分のOS版の公式文書と実際のサービス名を確認します。

PRACTICE

ミニ課題:導入前調査

自分のOS系統、curlの場所、提供パッケージの詳細を表示してください。インストールは不要です。

解答例(Debian系)COMMAND
grep -E '^(ID|ID_LIKE)=' /etc/os-release
command -v curl
apt show curl 2>/dev/null | head -n 5
表示例OUTPUT
ID=ubuntu
ID_LIKE=debian
/usr/bin/curl
Package: curl
Version: 8.5.0-2ubuntu10.6
Priority: optional