web-dev-qa-db-ja.com

/ var / lib / dpkg / info /内の多くのファイルが破損しています。回復する方法

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を実行しましたが、他に何を実行する必要があるかわかりません。

4
bguiz

私の場合、多くの* .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に変更します

move_broken_list_files.sh

各* .list.brokenファイルの2番目のスクリプトサイクルは、パッケージの再インストールを強制します。

install_missing_list.sh

トリガーの問題が原因でインストールが失敗する場合があります。

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

これが同じ混乱に直面している人を助けることを願っています。

1
Zen

破損したリストをバックアップします(すべての.listファイルを移動できます)

mkdir /tmp/damaged && mv /var/lib/dpkg/info/*.list /tmp/damaged

その後、新しいパッケージをインストールできます

apt install Thunderbird-gnome-support
0
user2459835

私はこれを次のように解決しました:

  • 問題のあるファイルを削除します(OPの場合は/var/lib/dpkg/info/Thunderbird-gnome-support.list
  • apt-get install --reinstall Thunderbird-gnome-supportを使用して問題のパッケージを再インストールします

これにより、削除されたファイルリストも再作成されました。

もちろん、多くのファイルが破損している場合、これは面倒な場合がありますが、私の場合は単一のファイルであり、この場合の解決策は非常に簡単でした。

0
Stefan Winkler