一般的に、私は(絶対に持っているはずのバックアップから)再インストールに傾倒します。しかし、私はハックだと感じているので、別の方法があります (システムが /target
の下にマウントされていると仮定します) ):
/bin
にファイルがあるすべてのインストール済みパッケージのリストを取得します :
grep ^/bin/ /target/var/lib/dpkg/info/*.list | sed 's%^.*/\([^/\.]*\).list%\1%' >/tmp/pkglist
(私の Debian Squeeze システムでは合計 34 個のパッケージがあり、そのほとんどすべてがコアです)
これらのパッケージをそれぞれダウンロードします (この部分をスクリプト化するのは面倒なので、packages.ubuntu.com にアクセスして、/target
の下のどこかにダウンロードしてください)。 )。運が良ければ、いくつかのパッケージがまだ /target/var/cache/apt/archives
に出回っているかもしれません .
パッケージごとに /target/usr/bin/dpkg -x <package> /target
を実行します .私は dpkg
であるとかなり確信しています 最近はすべて自己完結型であり、/bin
では何も呼び出すべきではありません
システムが元の状態に戻ったら、 apt-get --reinstall install <all the packages from step 1>
を確認して実行する必要があります 、なぜなら (プレリリースを実行しているため、Sysadmin Cat は実稼働システムでは禁止されていると言っています) 抽出したばかりのパッケージのバージョンは、以前のシステムにあったバージョンとは異なる可能性が高いためです。何が何であるかをシステムが正確に認識できるようにする必要があります。
あなたの戦略はうまくいくかもしれませんが (bin ディレクトリをコピーして戻してから、システム内のすべてのパッケージを apt-get で再インストールすると、その可能性は高くなります)、将来的に問題が発生する可能性があります。不安定なサーバー。
それが私に起こった場合、私は再インストールして毎日のバックアップから復元します.毎日のバックアップ、つまり災害復旧計画がありますよね?
災害復旧計画がない場合は、すべての構成ファイルと保持したいデータをバックアップし、再インストールに進むことをお勧めします。そうすれば、安定したサーバーで再び終了することが確実になります.
VM を作成してから /bin
の内容をコピーしてみます あなたの壊れたマシンに。これで起動して実行できるようになります。次に実行します
dpkg --get-selections | awk '{print $1}' | xargs -l1 aptitude reinstall
システムにあったすべてのパッケージを再インストールする必要があります。