In generale, propenderei per una reinstallazione (dai backup che dovresti assolutamente avere). Ma mi sento un hacker, quindi ecco un altro modo (supponendo che il tuo sistema sia montato sotto /target
):
-
Ottieni un elenco di tutti i pacchetti installati che hanno file in
/bin
:grep ^/bin/ /target/var/lib/dpkg/info/*.list | sed 's%^.*/\([^/\.]*\).list%\1%' >/tmp/pkglist
(Sul mio sistema Debian Squeeze ci sono un totale di 34 pacchetti, praticamente tutti core)
-
Scarica ciascuno di quei pacchetti (non potrei essere disturbato a scrivere questo bit, quindi basta andare su packages.ubuntu.com e scaricarli da qualche parte sotto
/target
). Se sei fortunato, alcuni dei pacchetti potrebbero essere ancora in giro in/target/var/cache/apt/archives
. -
Per ogni pacchetto, esegui
/target/usr/bin/dpkg -x <package> /target
. Sono abbastanza certodpkg
è tutto autonomo in questi giorni e non dovrebbe richiamare nulla in/bin
stesso.
Una volta che hai rimesso in piedi il sistema, dovresti assicurarti di eseguire un apt-get --reinstall install <all the packages from step 1>
, perché (dal momento che stai eseguendo una pre-release, cosa che Sysadmin Cat dice è un no-no sui sistemi di produzione) è probabile che le versioni dei pacchetti che hai appena estratto siano diverse da quelle che erano sul sistema prima, e tu vorrai assicurarti che il sistema sappia esattamente cosa è cosa.
Sebbene la tua strategia possa funzionare (ci sono buone possibilità, di più se una volta copiata la directory bin, esegui una reinstallazione apt-get di tutti i pacchetti nel tuo sistema), può causare problemi in futuro perché potresti ottenere un server instabile.
Se ciò fosse accaduto a me, reinstallerei e ripristinerei dal backup giornaliero. Hai un backup giornaliero - un piano di ripristino di emergenza - vero?
Nel caso in cui non si disponesse di un piano di ripristino di emergenza, suggerirei di eseguire il backup di tutti i file di configurazione e dei dati che si desidera conservare e procedere con una reinstallazione. In questo modo sarai sicuro di finire di nuovo con un server stabile.
Proverei a creare una VM quindi a copiare il contenuto di /bin
alla tua macchina danneggiata. Questo dovrebbe metterti in moto. Quindi esegui
dpkg --get-selections | awk '{print $1}' | xargs -l1 aptitude reinstall
che dovrebbe reinstallare tutti i pacchetti che erano sul tuo sistema.