Secara umum, saya lebih condong ke penginstalan ulang (dari cadangan yang seharusnya Anda miliki). Tapi saya merasa retas, jadi inilah cara lain (dengan asumsi bahwa sistem Anda dipasang di bawah /target
):
-
Dapatkan daftar semua paket terinstal yang memiliki file di
/bin
:grep ^/bin/ /target/var/lib/dpkg/info/*.list | sed 's%^.*/\([^/\.]*\).list%\1%' >/tmp/pkglist
(Di sistem Debian Squeeze saya ada total 34 paket, hampir semuanya adalah inti)
-
Unduh masing-masing paket tersebut (saya tidak mau repot-repot menulis skrip ini, jadi tekan saja packages.ubuntu.com dan unduh ke suatu tempat di bawah
/target
). Jika Anda beruntung, beberapa paket mungkin masih beredar di/target/var/cache/apt/archives
. -
Untuk setiap paket, jalankan
/target/usr/bin/dpkg -x <package> /target
. Saya cukup yakindpkg
semuanya mandiri akhir-akhir ini, dan tidak boleh memanggil apa pun di/bin
itu sendiri.
Setelah sistem berjalan kembali, Anda harus memastikan dan menjalankan apt-get --reinstall install <all the packages from step 1>
, karena (karena Anda menjalankan pra-rilis, yang dikatakan Sysadmin Cat tidak boleh untuk sistem produksi) versi paket yang baru saja Anda ekstrak cenderung berbeda dari yang ada di sistem sebelumnya, dan Anda ingin memastikan sistem tahu persis apa itu.
Meskipun strategi Anda mungkin berhasil (ada peluang bagus untuk itu, terlebih lagi jika setelah Anda menyalin kembali direktori bin, Anda melakukan instal ulang apt-get dari semua paket di sistem Anda), ini dapat menghasilkan masalah di masa mendatang karena Anda mungkin mendapatkan server yang tidak stabil.
Jika itu terjadi pada saya, saya akan menginstal ulang dan memulihkan dari cadangan harian. Anda memiliki cadangan harian - rencana pemulihan bencana - bukan?
Jika Anda tidak memiliki rencana pemulihan bencana, saya sarankan untuk mencadangkan semua file konfigurasi dan data yang ingin Anda pertahankan dan lanjutkan dengan penginstalan ulang. Dengan begitu Anda akan yakin bahwa Anda akan berakhir dengan server yang stabil lagi.
Saya akan mencoba membuat VM lalu menyalin konten /bin
ke mesin Anda yang rusak. Itu seharusnya membuat Anda bangun dan berlari. Kemudian jalankan
dpkg --get-selections | awk '{print $1}' | xargs -l1 aptitude reinstall
yang harus menginstal ulang semua paket yang ada di sistem Anda.