web-dev-qa-db-ja.com

Debianは/ var / lib / dpkg / info /を削除しましたが、システムを保存する方法はありますか?

誤って/ var/lib/dpkg/info /を削除しましたが、パッケージのインストール/削除で問題が発生しました。エラーが表示され、インストールされたパッケージに関する情報が見つかりません。

システムを保存する方法や、debianを完全に再インストールする必要がある方法はありますか? :/

3
Wiggler Jtag

次のようなものを使用してディレクトリを再生成できるはずです。

for i in $(dpkg -l|awk '/^ii/ {print $2}')
do
    apt-get --reinstall -y install $i
done

そのスニペットが行うべきことは、すでにインストールしたすべてのパッケージを再インストールすることです。また、すべてをアップグレードします。それを望まない場合は、スクリプトを拡張して、現在インストールしている特定のバージョンをインストールする必要があります。これらのパッケージはリポジトリに存在しない可能性があるため、動作が保証されていません。

詳細と少し異なるアプローチ: http://people.adams.edu/~cdmiller/posts/Ubuntu-dpkg-recovery/

編集:上記のリンクされた記事からの重要なヒント:

/ var/lib/dpkgに不足しているものが多いため、一部のパッケージはまだ正しくインストールされません。特に、パッケージ「ucf」は、カーネルやその他のカーネルを正しくインストールできるようにするために重要です。

/var/lib/dpkg/info/ucf.templatesがないと、カーネルのインストールで次のエラーが発生します。

failed to install/upgrade: User postinst hook script [/sbin/update-grub] exited with value 10

Ucfをインストールします。

apt-get --reinstall install ucf

この記事では、/var/lib/dpkgallを完全に削除してから回復する方法について説明しているため、この追加の手順は状況に当てはまらない場合があります。

10
Insyte

さて、この日は他の日と同じです、なぜですか?私は少し似た問題に直面していましたが、今回は次のメッセージのあるいくつかのパッケージに関連していました:

ログ開始:2019-09-22 16:12:10 
 dpkg:回復不能な致命的なエラー、中止:
パッケージ 'apt'のファイルリストの読み取り:不正なアドレス
ログ終了:2019-09-22 16:12:10 
 

私がそれを解決した方法は少し似ていましたが、次のようないくつかの違いがありました:

ディレクトリ全体の名前を「/ var/lib/dpkg/info /」に変更する代わりに、問題の原因となっているファイル(パッケージ名)を移動しました。この場合は「apt」パッケージです。

  • そこで、最初にパターン '^ apt'に関連するパッケージをフィルタリングしました:
 mlazo @ mlazo-pc:〜$ dpkg -l | awk '/ ^ ii apt/{print $ 2}' 
 apt 
 apt-config-icons 
 apt-config-icons-hidpi 
 apt-config-icons-large 
 apt-config-icons-large-hidpi 
 apt-transport-https 
 apt- utils 
 apt-xapian-index 
 aptdaemon 
 aptdaemon-data 
  • ディレクトリ「/ var/lib/dpkg/info」にいるので、ディレクトリを作成し、前のリストと一致するファイルを移動しました。
 cd /var/lib/dpkg/info
mdkir ../info_back
mv -v $(ls | grep -i "^ apt")../ info_back/
  • ファイルが移動されたら、再インストールプロセスの実行に進みます。
 for x in $(dpkg -l | awk '/ ^ ii apt/{print $ 2}'); apt-get install --reinstall $ {x} -y;を実行します。完了
  • 処理中、「/ var/log/apt/term.log」をチェックして、次の確認を取得しました。
 mlazo @ mlazo-pc:〜$ tail -n 20000 /var/log/apt/term.log | grep -i "解凍の準備をしています.../apt" 
解凍の準備をしています。 ../apt-config-icons_0.12.0-3ubuntu1_all.deb ... 
解凍の準備をしています.../apt-config-icons-hidpi_0.12.0-3ubuntu1_all.deb ... 
解凍の準備をしています.../apt-config-icons-large_0.12.0-3ubuntu1_all.deb ... 
解凍の準備をしています.../apt-config-icons-large-hidpi_0.12.0-3ubuntu1_all.deb ... 
解凍の準備をしています.../apt-transport-https_1.6.12_all.deb ... 
解凍の準備をしています.../apt-utils_1.6.12_AMD64.deb .. 。
解凍の準備をしています.../apt-xapian-index_0.47ubuntu13_all.deb ... 
解凍の準備をしています.../aptdaemon_1.1.1 + bzr982-0ubuntu19.1_all.deb .. 。
解凍の準備をしています.../aptdaemon-data_1.1.1 + bzr982-0ubuntu19.1_all.deb ... 
 
  • 再インストールプロセスが終了したら、アップグレードプロセスの実行に進み、成功した結果を取得します。
 root @ mlazo-pc:/ var/lib/dpkg/info#apt-get upgrade 
 .. 
 .. 
 .. 
 initramfs-tools(0.130ubuntu3.8)のトリガーを処理しています... 
 update-initramfs:/boot/initrd.img-5.0.0-25-generic 
 libvlc-binのトリガーを処理しています:AMD64(3.0.8-0ubuntu18.04.1)... 
 

以前に実行した手順では、30分間隔で4時間以上で完了しました。

前の手順が誰かに役立つことを願っています。

宜しくお願いします、

マヌエルラゾ

0
Manuel Lazo