dpkgで管理しているファイルでいっぱいの削除されたフォルダを回復するには?

dpkgで管理しているファイルでいっぱいの削除されたフォルダを回復するには?

/usr/share/manレイヤースペースを節約するために、削除されたサードパーティのDockerイメージに基づいて対話型Dockerコンテナを作成しようとしています。このフォルダに属するすべてのファイルはaptパッケージの一部であり、それ以外は正常に動作します。現在インストールされているパッケージに対して削除されたマニュアルページのみを復元したいと思います。

単一パッケージに対するこの問題の解決策は次のとおりです。再インストールしてみてください。おそらく、--reinstallコンテナの各パッケージには次のように書きます。

apt-get --reinstall install \
    $(dpkg --get-selections | awk '$2=="install"{print $1}')

しかし、再構築されるたびに時間と帯域幅を大量に消費するプロセスに頼らずにdpkgに削除されたフォルダを選択的に再生成させる方法はありますか?

答え1

ローカルイメージには変更がないため、影響を受けるパッケージを再インストールする必要があります。

ただし、必要な修理量を最小限に抑えることができます。

/usr/share/manループを使用すると、どのパッケージにファイルが含まれているかを確認できます。

for pkg in $(dpkg --get-selections | awk '$2=="install" { print $1}')
do
  f=$(dpkg -L $pkg | grep /usr/share/man)
  if [ -n "$f" ]
  then
    echo $pkg has files in /usr/share/man
  fi
done

その後、そのパッケージを再インストールできます。

/var/lib/dpkg/info/$pkg.infomanファイルを見て、欠落しているファイルと比較し、それらのファイルのみを再インストールすると、欠落しているファイルをさらに制限できます。

しかし、最終的には再インストールするようです。たくさんパッケージ。私のJessieインストールでは、703パッケージのファイルは/usr/share/man。これはインストールされている2200パッケージよりも優れていますが、まだたくさんあります。ネットワークトラフィックを避けるためにローカルミラーリングを表すようです。

関連情報