Ubuntuのアップデートコマンド一覧|安全にパッケージ更新する手順

Ubuntu環境(Ubuntu 24.04 LTS / 26.04 LTS 等)を安全かつ快適に運用し続けるためには、OS上のパッケージを定期的に最新状態へアップデートすることが不可欠です。

しかし、ターミナルで作業していると「apt update と apt upgrade の違いは何なのか」「毎回どちらを実行すればよいのか」「保留(kept back)と表示されたらどうすればいいのか」「途中でロックエラーが出た」など、疑問やトラブルに直面することも少なくありません。

特にサーバー運用やWSL2環境では、意図しないパッケージの削除や再起動の必要性を見落とすと、動作不良やサービスの停止につながる恐れがあります。

この記事では、日常のメンテナンスで安全にパッケージを更新する基本3ステップをはじめ、コマンドごとの役割の違い、Snapパッケージの更新、そして現場で頻発するエラーの具体的な解消法まで分かりやすく解説します。

この記事で行うこと

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

前提条件・対象読者

  • 対象OS:Ubuntu 26.04 LTS / 24.04 LTS / 22.04 LTS
  • 対象環境:物理PC(デスクトップ/サーバー)、仮想マシン、WSL2(Windows Subsystem for Linux 2)、クラウド環境(EC2/GCE等)
  • 必要な権限:sudo 権限(管理者権限)を持つユーザーアカウント
  • 対象読者:Ubuntuを日常的に使用しており、コマンドで安全にパッケージ管理を行いたい方

【早見表】Ubuntuアップデート主要コマンド一覧(チートシート)

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

操作・目的実行コマンド主な役割・特徴
パッケージ一覧の更新sudo apt updateリポジトリから最新のメタデータ一覧を取得(更新はしない)
インストール済み更新sudo apt upgrade -y既存パッケージを最新版へ安全に更新
依存関係を含む更新sudo apt full-upgrade -y依存関係の変更(新パッケージ追加や不要削除)を伴う更新
一括アップデートsudo apt update && sudo apt upgrade -y一覧取得から更新までを1行で連続実行
不要パッケージの削除sudo apt autoremove -y依存関係から外れて孤立した古いパッケージを削除
パッケージキャッシュ掃除sudo apt autocleanリポジトリから消えた古いdebキャッシュファイルを削除
Snapパッケージの更新sudo snap refreshFirefoxなどSnap形式で導入されたアプリを一括更新
再起動が必要かの確認test -f /var/run/reboot-required && echo "要再起動"カーネル更新等に伴う再起動フラグの有無を確認

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

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

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

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

sudo apt update

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

実行後、画面の末尾に「X packages can be upgraded.(X個のパッケージが更新可能です)」というメッセージが表示されます。更新対象の具体的なパッケージ名を確認したい場合は、案内通りに以下のコマンドを実行します。

apt list --upgradable

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

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

sudo apt upgrade -y

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

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

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

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

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

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

これにより、システムを常にクリーンで容量の圧迫がない状態に維持できます。

便利なワンライナー(1行でまとめて実行する)

日々のルーチン作業として手早く終わらせたい場合は、&&(直前のコマンドが成功したら次を実行する)演算子を使い、1行でまとめて実行するのが定番です。

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

2. 知っておくべき違い:update、upgrade、full-upgradeの違い

Ubuntuのパッケージ管理では似たような名前のコマンドがいくつか存在します。挙動の違いを正しく把握しておくことで、トラブルを未然に防ぐことができます。

apt update と apt upgrade の違い

  • sudo apt update:
    • 役割:カタログ(目次)の更新。
    • 影響:システムのプログラムやファイル自体は一切変更されません。
  • sudo apt upgrade:
    • 役割:プログラム本体の更新。
    • 影響:実際に新しいバージョンのバイナリがダウンロードされ、既存のプログラムが置き換わります。

必ず update を実行してから upgrade を行う必要があります。update を行わずに upgrade を実行しても、手元のカタログが古いため新しい更新が存在することに気付けません。

apt upgrade と apt full-upgrade の違い

  • sudo apt upgrade:
    • 安全第一の更新モードです。すでにインストールされている既存パッケージを削除しなければ更新できないような大きな変更や、新しい別パッケージを自動導入しなければならない更新はスキップ(保留)されます。
  • sudo apt full-upgrade(旧来の apt-get dist-upgrade 相当):
    • 依存関係の解決を優先する更新モードです。新しいバージョンを動かすために「古い依存ライブラリの削除」や「新規ライブラリの追加」が必要な場合、それらを自動的に判断して処理を進めます。

通常は apt upgrade を常用し、後述する「パッケージが保留(kept back)される」場合や、カーネル関連のメジャーな仕様変更を適用したい場合に apt full-upgrade を検討します。

OSメジャーアップグレード(do-release-upgrade)との違い

日々の apt upgrade は、現在のUbuntuバージョン(例えばUbuntu 24.04の中でのマイナーアップデート)を最新に保つための操作です。

Ubuntu 24.04からUbuntu 26.04へOS自体のディストリビューションバージョンを刷新したい場合は、apt ではなく専用コマンド sudo do-release-upgrade を使用します。OS全体のメジャーアップグレード手順については、記事末尾の関連記事を参考にしてください。

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

近年のUbuntu(デスクトップ版・サーバー版問わず)では、従来のAPTパッケージに加えて「Snap(スナップ)」と呼ばれるコンテナ型のパッケージ形式が標準で採用されています。例えば、FirefoxやChromium、各種CLIツールなどがSnap経由で管理されています。

SnapパッケージはAPTの管理対象外となっているため、sudo apt upgrade を実行しても更新されません。

Snapパッケージを最新化したい場合は、以下のコマンドを実行します。

sudo snap refresh

更新可能なSnapパッケージの有無だけを確認したい場合は、以下を実行します。

snap refresh --check

なお、Snapはデフォルトでバックグラウンドでの自動更新機能が備わっていますが、ターミナルから明示的に即時更新したい場合に sudo snap refresh を利用します。

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

Ubuntuのアップデート中に頻出するエラーと、その安全な解決手順をまとめました。

① ロックエラー(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 (apt-get)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?

原因

Ubuntuがバックグラウンドで自動セキュリティ更新(unattended-upgrades)を実行している最中であるか、別のターミナルウィンドウで apt コマンドが実行中のため、競合を防ぐためのファイルロックがかかっています。

正しい対処法

無理にロックファイルを削除(rm)してはいけません。データベースが破損する原因になります。

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

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

バックグラウンドで unattended-upgrades や apt が動作している場合は、数分待機してから再度コマンドを実行するのが最も安全です。もしプロセスが完全にスタック(ハングアップ)していることが明らかな場合のみ、表示されたプロセスID(PID)を終了させます。

# 該当のプロセスIDを指定して安全に終了
sudo kill 1234

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

sudo apt upgrade を実行した際に、エラーにはならないものの「以下のパッケージは保留されました」と表示されてアップデートされない現象が発生することがあります。

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

原因

主な原因はUbuntuの標準機能である「段階的更新(Phased Updates)」です。Ubuntuでは、新バージョン公開直後にすべてのユーザーへ一斉配信せず、一部のユーザーから徐々にロールアウトすることで、未知の不具合があった場合に影響を最小限に抑える安全策をとっています。

対処法

基本的には数日待てば自然とロールアウト対象となり、通常の sudo apt upgrade で更新されるようになります。

もし脆弱性の修正などですぐに強制適用したい場合は、該当のパッケージ名を個別に指定してインストールするか、依存関係の再計算を伴う full-upgrade を実行します。

# 個別に指定して強制的に更新する場合
sudo apt install python3-problem-report

# 依存関係を再計算して一括更新する場合
sudo apt full-upgrade -y

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

Linuxカーネル(linux-image-*)や基本共有ライブラリ(systemdlibc6 等)がアップデートされた場合、変更を完全に反映させるにはOSの再起動が必要です。

再起動が必要な状態になっているかどうかは、システム内に /var/run/reboot-required というファイルが生成されているかで確認できます。

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

再起動を要求している具体的なパッケージ名一覧を確認したい場合は、関連ファイルを読み込みます。

cat /var/run/reboot-required.pkgs

再起動が必要と判定された場合は、作業中のデータを保存した上で以下のコマンドで再起動を行います。

sudo reboot

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

sudo apt update の実行中に Hash Sum mismatch エラーが発生することがあります。これは、手元に保存されているローカルキャッシュと、ミラーサーバー側のファイル情報が一時的に同期ズレを起こしていることが原因です。

古いリストキャッシュを一度全削除してから更新し直すことで簡単に解消できます。

# リストキャッシュを削除
sudo rm -rf /var/lib/apt/lists/*

# リポジトリ情報をクリーンに再取得
sudo apt update

5. セキュリティ更新を自動化する方法(unattended-upgrades)

定期的に手動でコマンドを実行するのが難しいサーバー環境や、常にセキュリティパッチを最新に保ちたい本番環境では、自動更新パッケージ unattended-upgrades を活用するのがおすすめです。

Ubuntuではデフォルトで自動セキュリティ更新が組み込まれており、夜間や指定した時間帯にバックグラウンドで脆弱性パッチを自動適用してくれます。

自動更新の詳細な設定手順や、勝手な自動再起動を防ぐ設定方法については、以下の解説記事で詳しく扱っています。

まとめ

Ubuntuの日常的なパッケージ更新は、基本のコマンドを正しい順序で実行し、エラー発生時の仕組みを理解しておくことで、安全かつ確実に行えます。

  • 基本は sudo apt update でカタログを取得し、sudo apt upgrade -y で実体を更新する
  • 更新後は sudo apt autoremove -y で不要な古い依存ライブラリを整理してディスク容量を保つ
  • apt upgrade は安全な置換のみを行い、依存関係の変更が必要な更新は apt full-upgrade を使う
  • Snap形式のアプリケーション(Firefox等)は sudo snap refresh で別途更新する
  • ロックエラーが出た場合はロックファイルを削除せず、バックグラウンド更新の完了を待機する
  • カーネル等の重要更新後は /var/run/reboot-required を確認して必要に応じて sudo reboot を行う

定期的なアップデートを日々の運用ルーチンに組み込み、セキュアで快適なUbuntu環境を維持してください。

次に読むおすすめ記事

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

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

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

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

各バージョンの公式サポート期限と移行ロードマップは、以下で一覧表にまとめています。

参考情報