この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:12
ページ更新者:atom
更新日時:2026-06-11 07:12:00

タイトル: apt update パッケージリストの情報を更新
SEOタイトル: Ubuntu apt update 完全ガイド — パッケージ管理

この記事の要点
  • sudo apt update = リポジトリのパッケージリスト (メタデータ) を取得 → 実体は更新しない
  • sudo apt upgrade = 取得済リストを元に実際にアップグレード
  • sudo apt full-upgrade (旧 dist-upgrade) = 依存解決のためのパッケージ追加削除も許可
  • リポジトリ定義: /etc/apt/sources.list / /etc/apt/sources.list.d/*.list
  • PPA 追加: add-apt-repository ppa:user/repo + GPG キー

apt update とは

Debian / Ubuntu のパッケージマネージャ apt で、リポジトリからパッケージリスト (メタデータ) を取得するコマンドです。実際のパッケージファイル (.deb) はまだダウンロードしない、「在庫表を最新化する」段階。

sudo apt update

# 出力例:
# Hit:1 http://archive.ubuntu.com/ubuntu jammy InRelease
# Get:2 http://archive.ubuntu.com/ubuntu jammy-updates InRelease [128 kB]
# Get:3 http://archive.ubuntu.com/ubuntu jammy-security InRelease [110 kB]
# Get:4 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages [1024 kB]
# ...
# Fetched 1500 kB in 2s (750 kB/s)
# Reading package lists... Done
# 35 packages can be upgraded. Run 'apt list --upgradable' to see them.

apt update / upgrade / full-upgrade の違い

コマンド動作実体更新
apt updateパッケージリスト (メタデータ) を取得×
apt upgrade導入済パッケージをアップグレード (削除なし)
apt full-upgrade依存解決のため追加/削除も行う
apt dist-upgradefull-upgrade の旧名
apt list --upgradable更新可能なパッケージ一覧×
apt autoremove不要になった依存パッケージを削除

典型的な日次運用

# 1. メタデータ最新化
sudo apt update

# 2. 何が更新されるか確認
apt list --upgradable

# 3. 実体アップグレード
sudo apt upgrade -y

# 4. 不要パッケージ削除
sudo apt autoremove -y

# 5. キャッシュ削除 (容量節約)
sudo apt clean
# または部分削除
sudo apt autoclean

# 一連を一行で
sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y

パッケージ操作

# 検索
apt search nginx

# 詳細表示
apt show nginx

# インストール
sudo apt install nginx
sudo apt install nginx php-fpm mysql-server     # 複数同時
sudo apt install -y nginx                        # 確認スキップ

# 削除 (設定残す)
sudo apt remove nginx

# 完全削除 (設定も削除)
sudo apt purge nginx

# 特定バージョンインストール
apt list -a nginx                                 # 利用可能なバージョン
sudo apt install nginx=1.18.0-6ubuntu14

# パッケージのファイル一覧
dpkg -L nginx

# どのパッケージが特定ファイルを持っているか
dpkg -S /usr/bin/curl
# = curl: /usr/bin/curl

# 依存関係
apt-cache depends nginx
apt-cache rdepends nginx     # 逆依存

リポジトリ設定: sources.list

# /etc/apt/sources.list (Ubuntu 22.04 / Jammy)

deb http://archive.ubuntu.com/ubuntu jammy main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu jammy-updates main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu jammy-security main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu jammy-backports main restricted universe multiverse

# 各列の意味:
# [タイプ]  [URL]                              [スイート]  [コンポーネント...]
# deb      http://archive.ubuntu.com/ubuntu   jammy       main restricted universe multiverse

# タイプ:
#   deb       バイナリパッケージ
#   deb-src   ソースパッケージ

# スイート (Ubuntu 22.04 = jammy):
#   jammy             安定版
#   jammy-updates     アップデート
#   jammy-security    セキュリティ修正
#   jammy-backports   新しいバージョンのバックポート

# コンポーネント:
#   main          サポート対象 OSS
#   restricted    プロプライエタリ (ドライバ等)
#   universe      コミュニティ メンテ OSS
#   multiverse    非フリー

追加リポジトリ用ディレクトリ

# /etc/apt/sources.list.d/ にファイル単位で追加
ls /etc/apt/sources.list.d/
# docker.list
# nodesource.list

# 例: Docker 公式リポジトリ追加
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
    | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
    https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" \
    | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io

PPA (Personal Package Archive)

個人開発者がパッケージを公開する Ubuntu 専用の仕組み。最新版を入れたいときに便利:

# PPA を追加 (例: 最新の deadsnakes Python)
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update

# 利用
sudo apt install python3.12

# PPA 削除
sudo add-apt-repository --remove ppa:deadsnakes/ppa
# または
sudo rm /etc/apt/sources.list.d/deadsnakes-ubuntu-ppa-jammy.list
sudo apt update

GPG キー (パッケージ署名検証)

各リポジトリのパッケージは GPG 署名されており、対応する公開鍵を信頼登録する必要があります:

# 旧方式 (Ubuntu 22.04+ では非推奨)
sudo apt-key add - < some.key
# Warning: apt-key is deprecated.

# 新方式: signed-by= で参照する形に
curl -fsSL https://example.com/repo.gpg \
    | sudo gpg --dearmor -o /etc/apt/keyrings/example.gpg

# sources.list.d/example.list:
# deb [signed-by=/etc/apt/keyrings/example.gpg] https://example.com/repo jammy main

# 登録済キー確認
apt-key list                  # 旧
ls /etc/apt/keyrings/         # 新
ls /etc/apt/trusted.gpg.d/    # 自動配布キー

apt と apt-get の違い

項目aptapt-get / apt-cache
登場Ubuntu 16.04+古くから (Debian 由来)
用途対話的 (人間向け)バッチ / スクリプト向け
進捗バーあり (カラフル)なし
追加機能autoremove, list, search を統合機能分散
互換性変更の可能性あり安定 (CI に向く)

会話的な手動操作 → apt、CI / Dockerfile / Ansible → apt-get 推奨。

非対話モード (CI / Dockerfile)

# Dockerfile での定石
FROM ubuntu:22.04

# 環境変数で対話プロンプトを抑止
ENV DEBIAN_FRONTEND=noninteractive

RUN apt-get update &amp;&amp; apt-get install -y --no-install-recommends \
    curl \
    git \
    vim \
    ca-certificates \
 &amp;&amp; rm -rf /var/lib/apt/lists/*

# --no-install-recommends で推奨パッケージを除外 → イメージサイズ削減
# /var/lib/apt/lists/* を削除 → さらに容量削減

セキュリティ更新の自動化

# unattended-upgrades をインストール
sudo apt install unattended-upgrades apt-listchanges

# 対話設定
sudo dpkg-reconfigure -plow unattended-upgrades

# 設定ファイル
sudo vim /etc/apt/apt.conf.d/50unattended-upgrades

# 主な設定:
# Unattended-Upgrade::Allowed-Origins {
#     &quot;${distro_id}:${distro_codename}-security&quot;;   ← セキュリティのみ
#     &quot;${distro_id}ESMApps:${distro_codename}-apps-security&quot;;
# };
# Unattended-Upgrade::Automatic-Reboot &quot;true&quot;;     ← カーネル更新後の自動再起動
# Unattended-Upgrade::Automatic-Reboot-Time &quot;03:00&quot;;

# 動作テスト
sudo unattended-upgrade --dry-run --debug

# 実行ログ
tail -f /var/log/unattended-upgrades/unattended-upgrades.log

よくあるエラー

E: Could not get lock /var/lib/dpkg/lock-frontend

# 他の apt プロセスが動いている
ps aux | grep -E &quot;apt|dpkg&quot; | grep -v grep

# 自動更新 (unattended-upgrades) が走っていることが多い
sudo systemctl status unattended-upgrades
sudo systemctl stop unattended-upgrades

# どうしても動かなければロック削除 (注意)
sudo rm /var/lib/apt/lists/lock
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock-frontend
sudo dpkg --configure -a

E: The repository ... no longer has a Release file

# サポート切れの Ubuntu バージョンを使っている
lsb_release -a

# Ubuntu EOL になったバージョンは old-releases に移動
sudo sed -i 's/archive.ubuntu.com/old-releases.ubuntu.com/g' /etc/apt/sources.list
sudo sed -i 's/security.ubuntu.com/old-releases.ubuntu.com/g' /etc/apt/sources.list
sudo apt update

# 本来はディストリビューションアップグレードを実施
sudo do-release-upgrade

GPG キー期限切れ

# W: GPG error: ... NO_PUBKEY ABCDEF1234567890

# 不足キーを取得
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys ABCDEF1234567890

# 新方式 (推奨)
curl -fsSL https://example.com/repo.gpg \
    | sudo gpg --dearmor -o /etc/apt/keyrings/repo.gpg

FAQ

Q: apt update は危険?
A: いいえ、メタデータ取得だけで実体は変わらない。update なしで upgrade すると古いメタデータでの判定になるので、update の方は積極的にやるべき。

Q: 何日に 1 回 update すべき?
A: サーバなら毎日 1 回の自動 update + セキュリティ更新の自動 upgrade (unattended-upgrades) が一般的。

Q: apt と snap の違いは?
A: apt は OS パッケージ (システム共有)、snap はサンドボックスアプリ (隔離)。Firefox は Ubuntu 22.04 から snap 版がデフォルト。

Q: Debian と Ubuntu で違いは?
A: コマンドは同じだが、リポジトリ構成 (main / restricted / universe / multiverse は Ubuntu 独自) と PPA は Ubuntu 専用。Debian は main / contrib / non-free という分類。