Ubuntuで apt install や apt upgrade を実行中に電源が落ちたり、Ctrl+C で強制終了したりすると、パッケージが「壊れた(broken)」状態になることがあります。次回 apt を実行したときに E: Unmet dependencies や dpkg was interrupted といったエラーが出て先に進めなくなります。
結論から言うと、まず sudo dpkg --configure -a を実行し、次に sudo apt --fix-broken install を実行することで大半のケースは修復できます。本記事では Ubuntu 24.04 LTS の Docker 公式イメージで実際にコマンドを動かし、各ステップの実出力と修復の仕組みを解説します。
この記事のポイント
- 壊れたパッケージの確認は
sudo dpkg --audit(出力なし = 問題なし) - 修復の第一手は
sudo dpkg --configure -a(未設定パッケージを完了させる) - 依存関係の修復は
sudo apt --fix-broken install(Ubuntu 24.04: apt 2.8.3 で確認) - Ubuntu 22.04(apt 2.4.14)でも Ubuntu 24.04(apt 2.8.3)でも同じコマンドで対応可能
dpkg -lのフラグがii以外(iU・iH・iF)ならそのパッケージが問題の原因
目次
- 壊れたパッケージとは
- 壊れたパッケージを確認する
- 手順1:dpkg –configure -a で未設定パッケージを修復
- 手順2:apt –fix-broken install で依存関係を修復
- 手順3:apt update && apt upgrade で仕上げ
- dpkg -l のフラグを読んで原因パッケージを特定する
- よくあるエラーと解決策
- まとめ
壊れたパッケージとは
Ubuntuのパッケージ管理システムでは、dpkg がパッケージのインストール・設定・削除を担います。インストール処理の途中で割り込みが発生すると、パッケージが「展開済みだが未設定」「インストールの途中で中断」といった状態に陥ります。このような状態を broken packages(壊れたパッケージ) と呼びます。
壊れた状態になる主なきっかけは以下のとおりです:
apt installやapt upgrade中にCtrl+Cで強制終了した- インストール中に電源が落ちた、またはSSH接続が切れた
- 別のプロセスが
/var/lib/dpkg/lockを掴んだままになっている dpkg -iで手動インストールした .deb ファイルの依存関係が不足している
正直、個人的に一番多く見てきたのは「apt upgrade 中にSSHセッションが切れた」パターンです。VPSで長時間アップグレードを走らせているときに気をつけてください。
壊れたパッケージを確認する
修復の前に、まず現在のパッケージ状態を確認します。Ubuntu 24.04 LTS(Docker公式イメージ)で実行した結果を示します。

上のターミナル出力は実際に docker run --rm ubuntu:24.04 で実行した結果です(2026-06-13)。確認コマンドは3つあります。
①dpkg –audit(最も確実)
(出力なし)
$ echo $?
0
dpkg --audit は壊れたパッケージがある場合にそのリストを出力します。出力が何もなければ(exit 0)、dpkg が把握している範囲では問題ありません。何か出力された場合は後述の手順で修復します。
②apt-get check
Reading package lists… Done
Building dependency tree… Done
Reading state information… Done
エラーなく完了すれば依存関係に問題はありません。
③dpkg -l でフラグを確認
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-=================-================-============-========================
ii apt 2.8.3 amd64 commandline package manager
ubuntu:24.04 コンテナでは apt 2.8.3 が確認できました。先頭の2文字(ここでは ii)がパッケージの状態を示します。ii 以外のフラグが出ているパッケージが問題の原因です(詳細は後述)。
注意
本記事のコマンドは Ubuntu 24.04 LTS(Docker 公式イメージ ubuntu:24.04、apt 2.8.3 / dpkg 1.22.6)で検証しています。Ubuntu 22.04 LTS(apt 2.4.14 / dpkg 1.21.1)でも同じコマンドが使えることを確認済みです。
手順1:dpkg –configure -a で未設定パッケージを修復
最初に実行すべきコマンドはこれです。インストールの途中で中断されたパッケージに対して、残っている設定作業(post-install スクリプト)を完了させます。
問題のあるパッケージがあれば設定が再実行されます。何も出力されない(exit 0)なら設定待ちのパッケージはありません。Ubuntu 24.04(dpkg 1.22.6)と Ubuntu 22.04(dpkg 1.21.1)の両方で動作を確認しています。

上の図は docker run --rm ubuntu:24.04 での実行結果です。dpkg --configure -a → apt --fix-broken install → apt-get install -f がすべて exit 0 で完了することを確認しました(2026-06-13 実測)。
手順2:apt –fix-broken install で依存関係を修復
手順1で設定が完了した後、依存関係が壊れている場合にこのコマンドで修復します。
Reading package lists… Done
Building dependency tree… Done
Reading state information… Done
0 upgraded, 0 newly installed, 0 to remove and 6 not upgraded.
依存関係が壊れている場合は、ここで不足しているパッケージが自動的にインストールされます。「0 upgraded, 0 newly installed」と表示されれば修復完了(またはそもそも問題がなかった)です。
古いスクリプトや記事では sudo apt-get install -f と書かれていることもありますが、これは apt --fix-broken install の旧来の書き方です。どちらも同じ動作をします。
$ sudo apt-get install -f
Reading package lists… Done
Building dependency tree… Done
0 upgraded, 0 newly installed, 0 to remove and 6 not upgraded.
手順3:apt update && apt upgrade で仕上げ
修復後はパッケージリストを更新し、保留になっていたアップグレードを適用します。
Hit:1 http://archive.ubuntu.com/ubuntu noble InRelease
Reading package lists… Done
$ sudo apt upgrade
Reading package lists… Done
Building dependency tree… Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
# 最終確認
$ sudo dpkg –audit
(出力なし = すべて正常)

dpkg -l のフラグを読んで原因パッケージを特定する
手順1〜3を実行しても問題が解決しない場合、dpkg -l で問題のパッケージを特定する必要があります。

Ubuntu 24.04(dpkg 1.22.6)で確認したフラグの意味は以上のとおりです。特に注目すべきは:
iU(Unpacked): 展開済みだが未設定 →dpkg --configure パッケージ名で設定iH(Half-configured): 設定の途中で中断 →dpkg --configure -aで再設定iF(Half-installed): インストールの途中で中断 →apt --fix-broken installで修復
壊れたパッケージだけを絞り込んで確認するには:
$ dpkg -l | grep -v “^ii” | grep -v “^|” | grep -v “^+” | grep -v “^D”
# または状態の悪いものを直接指定
$ dpkg -l | grep -E “^.F|^.H|^.U|^.i”
よくあるエラーと解決策
①dpkg: error processing package … (–configure)
dpkg --configure -a 実行中にこのエラーが出る場合、特定のパッケージの post-install スクリプトが失敗しています。
$ sudo apt-get install –reinstall パッケージ名
# または強制的に削除して再インストール
$ sudo dpkg –remove –force-remove-reinstreq パッケージ名
$ sudo apt install パッケージ名
②E: Could not get lock /var/lib/dpkg/lock
別のプロセスが dpkg のロックを持っている場合です。
$ sudo lsof /var/lib/dpkg/lock-frontend
# unattended-upgrades 等の自動更新が動いている場合は終了を待つ
$ sudo systemctl stop unattended-upgrades
注意
ロックファイルを rm -f で強制削除する方法がネット上に載っていますが、apt/dpkg が実際に動いている最中に削除するとデータが壊れることがあります。まずプロセスを確認してから対応してください。
③apt-get install 後にまた E: Unmet dependencies が出る
複数のパッケージが循環依存している場合があります。
$ sudo apt clean
$ sudo apt update
$ sudo apt –fix-broken install
# それでも解決しない場合はパッケージを特定して削除
$ sudo apt remove 問題のパッケージ名
$ sudo apt autoremove
Ubuntu 22.04 vs 24.04 — コマンドの互換性

Ubuntu 22.04(apt 2.4.14 / dpkg 1.21.1)と Ubuntu 24.04(apt 2.8.3 / dpkg 1.22.6)の両方で実際にコマンドを実行して確認しました(2026-06-13)。dpkg --configure -a・apt --fix-broken install・dpkg --audit はどちらのバージョンでも同じ動作をします。
まとめ
Ubuntuで壊れたパッケージが発生したときの修復フローをまとめます。
壊れたパッケージ修復の手順まとめ
- 確認:
sudo dpkg --audit(出力なし = 問題なし、出力あり = 要修復) - 手順1:
sudo dpkg --configure -a(未設定パッケージを完了させる) - 手順2:
sudo apt --fix-broken install(壊れた依存関係を修復) - 手順3:
sudo apt update && sudo apt upgrade(最終確認と保留アップグレード適用) - 問題パッケージの特定:
dpkg -l | grep -v "^ii"(ii 以外のフラグを確認)
壊れたパッケージが起きやすい状況としては VPS でのアップグレード中のセッション切断が一番多い印象です。長時間かかる apt upgrade を VPS で実行するときは、tmux や screen でセッションを維持する習慣をつけておくと安心です。
VPSの選び方や基本的なサーバーセットアップについては、 も参考にしてみてください。


コメント