はじめに
Debian で運用しているシステムで、apt-get upgrade 等を使ってパッケージをアップグレードしようとした時、次のようなエラーが出て失敗することがあります。('XXXX' にはパッケージ名が入ります。どのパッケージが入るかは場合によります。)
dpkg: unrecoverable fatal error, aborting:
files list file for package 'XXXX' is missing final newline
E: Sub-process /usr/bin/dpkg returned an error code (2)
原因
/var/lib/dpkg/info/
に各種パッケージの情報が格納されています。そのうち XXXX(パッケージ名)に関するファイルがなんらかの事情で壊れていると、前節のようなエラーが発生します。
対処方法
そもそも、これらのファイルが壊れること自体が問題なのですが、この記事ではその問題は置いといて、とりあえずシステムを復旧して再度 apt が正常に動くようにします。
XXXX に関するファイルを削除(移動)
shell# cd /var/lib/dpkg/info
shell# mkdir /var/lib/dpkg/info/old
shell# mv XXXX.* /var/lib/dpkg/info/old
パッケージを再インストール
shell# apt-get install --reinstall XXXX
連鎖的に他のパッケージが同様にエラーが発生する場合がありますが、ひとつひとつ根気よく復旧します。