Sudo apt-get (anything)
を実行すると、常にこのエラーが発生します。
dpkg: unrecoverable fatal error, aborting:
files list file for package 'Thunderbird-gnome-support' is missing final newline
E: Sub-process /usr/bin/dpkg returned an error code (2)
グーグルで調べた後、これは/var/lib/dpkg/info/Thunderbird-gnome-support.list
が壊れているためだとわかります。私はそのファイルをcat
、そして間違いなく破損しています-それは絶対ファイルパスのリストを含むプレーンテキストファイルであるべきですが、代わりにバイナリファイルです。
今、私は同じディレクトリ内の他のファイルを検査しますが、それらの多くは同じように壊れているようです。これは、ファイルシステムで重大な問題が発生し、多くのファイルが破損したことを示しています。残念ながら、たまたまシステムファイルに影響がありました。
これからどのように回復しますか?
詳細:
これの直前に、Ubuntuからプロンプトが表示されたときに、定期的な更新プログラムをインストールしました。それは新しいLinuxカーネルであり、いくつかのシステムファイルヘッダーでした。
再起動後、これらは私の仕様でした:
OS仕様:
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 13.10
Release: 13.10
Codename: saucy
$ uname -a
Linux brendang-linux 3.11.0-24-generic #41-Ubuntu SMP Mon Jun 9 20:36:00 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
初めて再起動した直後に、ファイルシステム全体が読み取り専用としてマウントされているように見えました(以前はそうではありませんでした)。その後、システムが機能する前に何度か再起動する必要がありました。 fsck
が確実に実行されるように、それらの間にtouch /forcefsck
を実行しましたが、他に何を実行する必要があるかわかりません。
私の場合、多くの* .listファイルが破損しています。もしあなたがそうするなら
file /var/lib/dpkg/info/<package_name>.list
通常は以下を取得する必要があります。
/var/lib/dpkg/info/<package_name>.list: ASCII text
ただし、リストファイルが破損している場合は次のようになります。
/var/lib/dpkg/info/<package_name>.list: data
この問題を修正するために2つのスクリプトを作成しました。
最初のスクリプトはこれをチェックし、破損した各.listファイルの名前を* .list.brokenに変更します
各* .list.brokenファイルの2番目のスクリプトサイクルは、パッケージの再インストールを強制します。
トリガーの問題が原因でインストールが失敗する場合があります。
fgets gave an empty string from '/var/lib/dpkg/info/libnih1:AMD64.triggers'
その場合、次のようにファイルを移動/名前変更する必要があります。
mv /var/lib/dpkg/info/libnih1:AMD64.triggers /var/lib/dpkg/info/libnih1:AMD64.triggers.broken
これが同じ混乱に直面している人を助けることを願っています。
破損したリストをバックアップします(すべての.listファイルを移動できます)
mkdir /tmp/damaged && mv /var/lib/dpkg/info/*.list /tmp/damaged
その後、新しいパッケージをインストールできます
apt install Thunderbird-gnome-support
私はこれを次のように解決しました:
/var/lib/dpkg/info/Thunderbird-gnome-support.list
apt-get install --reinstall Thunderbird-gnome-support
を使用して問題のパッケージを再インストールしますこれにより、削除されたファイルリストも再作成されました。
もちろん、多くのファイルが破損している場合、これは面倒な場合がありますが、私の場合は単一のファイルであり、この場合の解決策は非常に簡単でした。