Ubuntuアップデートコマンド一覧|apt updateとupgradeの違い

Ubuntu環境(Ubuntu 26.04 LTS / 24.04 LTS 等)を運用していると、「今すぐ全パッケージを最新化するコマンドを知りたい」「apt update と apt upgrade の違いが紛らわしい」「kept back(保留)やロックエラーが出て更新できない」といった場面に頻繁に遭遇します。

まず結論として、日常のメンテナンスでパッケージ一覧の更新からアップグレード、不要パッケージの整理までを一括で行うコマンドは以下の1行です。

sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y

なお、現在のUbuntuバージョン内のパッケージ更新ではなく、Ubuntu 24.04 LTSからUbuntu 26.04 LTSへOSのメジャーバージョン自体を引き上げたい場合(sudo do-release-upgrade)は、以下の記事を参照してください。

この記事では、10秒で目的のコマンドが引ける早見表をはじめ、安全にパッケージを更新する基本3ステップ、apt update・apt upgrade・apt full-upgrade・apt-get の仕様上の違い、Snapパッケージの更新、そして現場で頻発するエラーの解消法まで詳しく解説します。

  1. この記事で行うこと
  2. 前提条件・対象読者
  3. 1. Ubuntu Quick Reference:アップデート主要コマンド早見表
  4. 2. 基本:パッケージを安全にアップデートする3ステップ
    1. 手順1:パッケージリストの最新化(sudo apt update)
    2. 手順2:インストール済みパッケージの更新(sudo apt upgrade)
    3. 手順3:不要になった古いパッケージとキャッシュの掃除
  5. 3. update・upgrade・full-upgrade・apt-getの決定的な違い
    1. コマンド別の挙動比較表
    2. apt update と apt upgrade の違い
    3. apt upgrade と apt full-upgrade(および apt-get upgrade)の違い
  6. 4. Snapパッケージの更新手順(snap refresh)
  7. 5. アップデート時によくあるトラブル・エラーと対処法
    1. 1. ロックエラー(Could not get lock /var/lib/dpkg/lock-frontend)
      1. 原因と正しい対処法
    2. 2. パッケージが保留される(The following packages have been kept back)
      1. 原因1:段階的更新(Phased Updates)
      2. 原因2:既存パッケージの削除を伴う依存関係の変化
      3. 対処法
    3. 3. アップデート後にOS再起動が必要か確認する方法
    4. 4. ハッシュサム不一致エラー(Hash Sum mismatch)
  8. 6. 検索クエリ型FAQ(よくある質問)
    1. Q1. sudo apt update だけを実行してもアップデートされませんか?
    2. Q2. apt と apt-get はどちらを使うべきですか?
    3. Q3. セキュリティアップデートだけを適用するにはどうすればいいですか?
    4. Q4. 特定の1つのパッケージだけをアップデートするには?
  9. まとめ
  10. 本格的なサーバー運用ならVPSがおすすめ
  11. 次に読むおすすめ記事
  12. 参考情報

この記事で行うこと

  • 目的別にすぐコピペできる「Ubuntuアップデート主要コマンド早見表」を確認します
  • パッケージを安全に最新化する基本3ステップの手順を学びます
  • apt update、apt upgrade、apt full-upgrade、apt-get upgrade の正確な挙動の違いを整理します
  • Ubuntu標準のSnapパッケージを一括更新する手順を確認します
  • ロックエラーやパッケージ保留(Phased Updates)など頻出トラブルの解決法を把握します
  • アップデート後にOS再起動が必要かどうかをコマンドで判定する手順を理解します

前提条件・対象読者

  • 対象OS:Ubuntu 26.04 LTS / 24.04 LTS / 22.04 LTS(対応バージョン:APT 2.4 / 2.8系以降、最終確認:2026年11月)
  • 対象環境:物理PC(デスクトップ/サーバー)、仮想マシン、WSL(Windows Subsystem for Linux)、クラウド環境(EC2/GCE等)
  • 必要な権限:sudo 権限(管理者権限)を持つユーザーアカウント
  • バージョン確認コマンド:apt --version および lsb_release -a

1. Ubuntu Quick Reference:アップデート主要コマンド早見表

日常的なメンテナンスやサーバー運用で使用する代表的なアップデートコマンドの一覧です。

やりたいこと・目的実行コマンド主な役割・特徴
パッケージ一覧の更新sudo apt updateリポジトリから最新のメタデータ一覧を取得(ソフト自体は更新しない)
更新可能な一覧の表示apt list --upgradable新しいバージョンが配信されているパッケージの一覧を確認
インストール済み更新sudo apt upgrade -y既存パッケージを削除せずに最新版へ更新(新規依存の追加は行う)
依存削除を含む完全更新sudo apt full-upgrade -y更新に伴い不要・競合となった既存パッケージの削除も含めて更新
一括アップデート(定番)sudo apt update && sudo apt upgrade -y一覧取得からパッケージ更新までを1行で連続実行
特定パッケージのみ更新sudo apt install --only-upgrade <パッケージ名>指定した単一パッケージのみを最新版へ更新
不要パッケージの削除sudo apt autoremove -y依存関係から外れて孤立した古いライブラリやカーネルを削除
キャッシュの掃除sudo apt autocleanリポジトリから提供終了した古い .deb キャッシュファイルを削除
Snapパッケージの更新sudo snap refreshFirefoxなどSnap形式で導入されたアプリを一括更新
再起動が必要かの確認test -f /var/run/reboot-required && echo "要再起動"カーネル更新等に伴うOS再起動フラグの有無を判定

2. 基本:パッケージを安全にアップデートする3ステップ

日常的なメンテナンスでは、以下の3ステップを順番に実行するのが安全で確実な手順です。

手順1:パッケージリストの最新化(sudo apt update)

まずは、利用可能な最新パッケージの一覧情報をリポジトリサーバーから取得します。

sudo apt update

このコマンドは「どのパッケージに新しいバージョンが出ているか」のカタログ(インデックス)情報をローカルにダウンロードするだけであり、この段階ではシステム上のソフトウェア本体はまだ何も書き換わりません。

実行後、出力の末尾に X packages can be upgraded.(X個のパッケージが更新可能です)というメッセージが表示されます。更新対象の具体的なパッケージ名や新旧バージョン番号を事前に確認したい場合は、以下のコマンドを実行します。

apt list --upgradable

手順2:インストール済みパッケージの更新(sudo apt upgrade)

カタログ情報を最新にした後、実際にインストール済みソフトウェアを最新バージョンへ更新します。

sudo apt upgrade -y

-y オプションを付与すると、更新前の確認プロンプト(Do you want to continue? [Y/n])に対して自動的に yes と応答して処理を進めます。本番サーバーなどでどのパッケージが更新されるかを目視確認してから進めたい場合は、-y を外して sudo apt upgrade を実行してください。

手順3:不要になった古いパッケージとキャッシュの掃除

アップデートを繰り返していると、過去のバージョンで使われていた依存ライブラリや古いLinuxカーネルなど、どのソフトウェアからも参照されなくなった不要なパッケージがストレージ内に蓄積していきます。

以下のコマンドを実行して、ディスク容量を安全に解放します。

# 不要になった依存パッケージの自動削除
sudo apt autoremove -y

# 過去バージョンの不要なdebキャッシュファイルの削除
sudo apt autoclean

これにより、/boot パーティションやルートディスクの容量圧迫を未然に防ぐことができます。

3. update・upgrade・full-upgrade・apt-getの決定的な違い

Ubuntuのパッケージ管理には似た名前のコマンドが複数存在し、特に apt upgrade と apt-get upgrade の挙動の違いは誤解されやすいポイントです。公式マニュアル(man 8 apt および man 8 apt-get)の仕様に基づいて整理します。

コマンド別の挙動比較表

コマンドカタログ取得既存パッケージ更新新規依存パッケージの自動追加既存パッケージの自動削除主な用途
sudo apt update⭕ 行う❌ 行わない❌ 行わない❌ 行わない更新前のカタログ最新化(最初に必ず実行)
sudo apt upgrade❌ 行わない⭕ 行う⭕ 行う❌ 行わない日常の標準アップデート(推奨)
sudo apt full-upgrade❌ 行わない⭕ 行う⭕ 行う⭕ 行うカーネル更新やパッケージ置換を伴う更新
sudo apt-get upgrade❌ 行わない⭕ 行う❌ 行わない(--with-new-pkgs なし時)❌ 行わないスクリプト内での厳格な保守更新
sudo apt-get dist-upgrade❌ 行わない⭕ 行う⭕ 行う⭕ 行うapt full-upgrade と同等の旧来表記

apt update と apt upgrade の違い

  • sudo apt update:
  • リポジトリサーバーからパッケージ一覧(目次)を取得してローカルのキャッシュを更新します。インストール済みのプログラム自体は一切変更されません。
  • sudo apt upgrade:
  • ローカルのカタログ情報をもとに、新しいバージョンのパッケージをダウンロードして既存のプログラムを置き換えます。

必ず sudo apt update を実行してから sudo apt upgrade を行う必要があります。update を飛ばして upgrade だけを実行しても、手元のカタログが古いままだため新しい更新を検知できません。

apt upgrade と apt full-upgrade(および apt-get upgrade)の違い

ここが最も間違えやすいポイントです。

  • sudo apt upgrade:
  • 既存のインストール済みパッケージを一切削除しない安全な更新モードです。なお、旧来の apt-get upgrade とは異なり、apt upgrade は依存関係を満たすために新しいパッケージの追加インストールが必要な場合(例:新しいマイナーバージョンのLinuxカーネルパッケージ linux-image-* の追加など)は自動的に新規導入を行います。既存の別パッケージを削除しなければならない更新のみをスキップ(保留)します。
  • sudo apt full-upgrade(apt-get dist-upgrade 相当):
  • システム全体のアップグレードを完了させるために、不要になったり競合したりする既存パッケージの「削除」が必要であれば、自動的に削除して更新を完了させます。

日常のメンテナンスでは sudo apt upgrade を基本とし、パッケージ構成の変更を伴う大きな更新を適用したい場合に sudo apt full-upgrade を使用します。

4. Snapパッケージの更新手順(snap refresh)

近年のUbuntuでは、APT(.deb パッケージ)に加えて、コンテナ型のパッケージ管理システムである「Snap」が標準採用されています。FirefoxやChromium、一部の開発ツールなどはSnap経由で導入されています。

SnapパッケージはAPTの管理対象外であるため、sudo apt upgrade を実行しても更新されません。Snapパッケージを手動で即時更新したい場合は、以下のコマンドを実行します。

sudo snap refresh

更新可能なSnapパッケージがあるかどうかだけを確認したい場合は、--list オプションを使用します。

snap refresh --list

Snapはデフォルトでバックグラウンドでの自動更新(1日複数回のチェック)が有効になっていますが、脆弱性対応などで今すぐ最新化したい場面では sudo snap refresh を実行してください。

5. アップデート時によくあるトラブル・エラーと対処法

Ubuntuのアップデート作業中によく遭遇する代表的なトラブルと、安全な対処手順をまとめました。

1. ロックエラー(Could not get lock /var/lib/dpkg/lock-frontend)

アップデートを実行した際、以下のようなエラーメッセージが表示されて中断されることがあります。

E: Could not get lock /var/lib/dpkg/lock-frontend. It is held by process 1234 (unattended-upgr)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?

原因と正しい対処法

Ubuntuがバックグラウンドで自動セキュリティ更新(unattended-upgrades)を実行中であるか、別のターミナルで apt や dpkg が動作しているため、パッケージデータベースの破損を防ぐ排他ロックがかかっています。

このとき、自己判断でロックファイル(/var/lib/dpkg/lock-frontend)を rm コマンドで強制削除してはいけません。裏で動いている更新処理と衝突し、パッケージ管理データベースが破損する原因になります。

まず以下のコマンドで、ロックを保持しているプロセスが実行中か確認します。

ps aux | grep -i -E "apt|dpkg|unattended"

バックグラウンドで unattended-upgr や apt が動作している場合は、1〜3分ほど待ってから再度 sudo apt update を実行すれば正常に完了します。万が一、過去のプロセスが強制切断などで完全にフリーズ(ハングアップ)して残っていることが確実な場合のみ、対象のプロセスID(PID)を指定して終了させます。

# 完全にハングアップしている場合のみPIDを指定して終了
sudo kill 1234

# 途中で中断されたパッケージ設定がある場合の修復コマンド
sudo dpkg --configure -a

2. パッケージが保留される(The following packages have been kept back)

sudo apt upgrade の実行時にエラーは出ないものの、The following packages have been kept back:(以下のパッケージは保留されました)と表示されて一部だけ更新されないケースがあります。

The following packages have been kept back:
  python3-problem-report ubuntu-release-upgrader-core ...

原因1:段階的更新(Phased Updates)

Ubuntu 21.04以降のAPTでは、アップデート公開直後に全ユーザーへ一斉配信せず、一部のマシンから段階的に配信比率を広げていく「Phased Updates(段階的更新)」が標準で有効になっています。パッケージ情報の詳細を apt-cache policy <パッケージ名> で確認した際、phased XX% と表示されていればこの仕組みによる保留です。

不具合の波及を防ぐための正常な仕様であるため、無理に強制更新せず数日間放置しておけば、100%に到達した時点で通常の sudo apt upgrade で自動的に更新されます。

原因2:既存パッケージの削除を伴う依存関係の変化

更新によって既存の古いパッケージを削除する必要がある場合、apt upgrade は安全のためそのパッケージを保留します。

対処法

すぐに適用したい場合は、まず apt-cache policy で状態を確認した上で、sudo apt full-upgrade を実行するか、対象パッケージを明示して更新します。

# 保留されている理由(phasedの割合など)を確認
apt-cache policy <パッケージ名>

# 依存関係の再計算を含めて更新する場合
sudo apt full-upgrade

# Phased Updatesの待機をスキップして今すぐ強制適用したい場合(緊急時のみ)
sudo apt -o APT::Get::Always-Include-Phased-Updates=true upgrade

3. アップデート後にOS再起動が必要か確認する方法

Linuxカーネル(linux-image-*)や基礎共有ライブラリ(libc6, systemd, openssl 等)が更新された場合、メモリ上の古いプロセスを新しいバージョンへ切り替えるためにOSの再起動が必要です。

再起動が必要かどうかは、/var/run/reboot-required ファイルが存在するかで一発判定できます。

# 再起動が必要かどうかを1行で判定
test -f /var/run/reboot-required && echo "【要再起動】システムを再起動してください" || echo "再起動は不要です"

どのパッケージの更新によって再起動が要求されているかを確認したい場合は、以下のファイルを表示します。

cat /var/run/reboot-required.pkgs

再起動が必要と表示された場合は、作業中のデータを保存して sudo reboot を実行します(WSL環境の場合は、Windows側のPowerShellから wsl --shutdown を実行して再起動します)。

4. ハッシュサム不一致エラー(Hash Sum mismatch)

sudo apt update の実行中に Hash Sum mismatch エラーが出る場合は、ローカルのリストキャッシュとミラーサーバー側のインデックスが一時的に不整合を起こしています。以下のコマンドでリストキャッシュをクリアして再取得すると解消します。

sudo rm -rf /var/lib/apt/lists/*
sudo apt update

6. 検索クエリ型FAQ(よくある質問)

Q1. sudo apt update だけを実行してもアップデートされませんか?

はい、sudo apt update は「更新可能なパッケージの一覧表(カタログ)」をサーバーから取得するだけのコマンドです。実際にソフトウェア本体を最新バージョンへ書き換えるには、続けて sudo apt upgrade を実行する必要があります。

Q2. apt と apt-get はどちらを使うべきですか?

人間がターミナル上で対話的に入力する場合は、プログレスバー表示や新規依存パッケージの自動解決が統合された apt(sudo apt update / sudo apt upgrade)を使うのが公式の推奨です。一方、シェルスクリプトやDockerfile、CI/CDパイプラインの自動処理内で実行する場合は、出力フォーマットやオプションの後方互換性が厳格に保証されている apt-get(apt-get update && apt-get install -y ...)を使用します。

Q3. セキュリティアップデートだけを適用するにはどうすればいいですか?

すべてのパッケージではなく、緊急のセキュリティパッチ(-security リポジトリ分)のみを即時適用したい場合は、Ubuntuに標準搭載されている unattended-upgrade コマンドを手動で呼び出すのが確実です。

# セキュリティ更新のみを即時適用(詳細ログ表示)
sudo unattended-upgrade -d

バックグラウンドでの自動セキュリティ更新や深夜再起動のカスタマイズ手順については、以下の記事で詳しく解説しています。

Q4. 特定の1つのパッケージだけをアップデートするには?

システム全体ではなく特定のパッケージ(例:nginx や git)のみを更新したい場合は、apt install に --only-upgrade オプションを付けて実行します。

sudo apt update
sudo apt install --only-upgrade <パッケージ名>

まとめ

Ubuntuの日常的なパッケージ更新は、各コマンドの役割と保留(kept back)の仕組みを把握しておくことで、トラブルなく安全に運用できます。

  • 日常の更新は sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y で一括実行できる
  • apt update はカタログ情報の取得のみ、apt upgrade がプログラム本体の更新を担う
  • apt upgrade は新規依存パッケージの追加は行うが、既存パッケージの削除は行わない(削除を伴う更新は apt full-upgrade)
  • SnapパッケージはAPTとは別管理のため sudo snap refresh で更新する
  • ロックエラー時はロックファイルを rm せず、バックグラウンドの unattended-upgrades 完了を待つ
  • 更新後は /var/run/reboot-required の有無を確認し、必要に応じて再起動する

日々のメンテナンスにこれらのコマンドを取り入れ、セキュアで安定したUbuntu環境を維持してください。

本格的なサーバー運用ならVPSがおすすめ

自宅のPCで構築した環境をインターネット上に公開して本番運用するなら、初期費用無料で導入しやすい「さくらのVPS」などのクラウド環境が便利です。

PR

次に読むおすすめ記事

Ubuntuの各種コマンド活用や環境構築、OSメジャーアップグレードの手順については、以下の記事もあわせて参考にしてください。

Linux全般の環境構築・サーバー運用の全体像を掴みたい方は、以下の総合ガイドが役立ちます。

Ubuntu・Linux完全ガイド|初期設定からサーバー構築まで
UbuntuをはじめとするLinux環境は、エンジニアの日常に欠かせない存在となっています。自宅・職場を問わず、開発サーバーの構築、WSL2上のLinux活用、デスクトップ環境のカスタマイズなど、Linuxを活用する場面は年々広がっています...

UbuntuのOSバージョン自体を新しいLTSへ移行したい場合の詳細手順は、以下で解説しています。

各バージョンの公式サポート期限と自動セキュリティ更新の設定は、以下でまとめています。

参考情報