Eliminato accidentalmente /usr/lib/*.so.*


9

Durante l'installazione di MRTG, per errore ho eliminato /usr/lib/*.so.*e/usr/lib/*.so

Ora non riesco ad avviare il mio sistema ora, si blocca nella schermata iniziale e quando premo il pulsante PAGEDOWN vedo che ci sono diverse cose che non riescono a caricare.

Tuttavia, DHCP e WebMin sono in esecuzione e da Webmin posso vedere i registri di sistema che mi informano che le tazze non si stanno caricando perché libpipeline.so.1mancano e molte altre.

Il mio computer esegue l'11.04


1
Cross pubblicato su Unix e Linux
Marco Ceppi

usa Chiedi a Ubuntu domande specifiche su Ubuntu. e non attraversare la posta. Se non sei sicuro che sia specifico per Ubuntu, chiedi prima qui e migreremo se è specifico per Ubuntu.

2
anche un suggerimento per il futuro ... se sapevi di aver fatto qualcosa di così brutto prima di riavviare .... non riavviare. lasciare il sistema in funzione e iniziare immediatamente le riparazioni. Mi sono ripreso /bine in /etcquel modo in passato

Risposte:


5

Dal momento che hai solo cancellato /usr/lib/*e non /lib/*, probabilmente puoi recuperare. Penso che tutti i programmi necessari per ripristinare il sistema in modo critico utilizzino solo le librerie /usr/lib.

Avvia un prompt di accesso al testo. Se l'avvio normale non ti dà un login:prompt in modalità testo, avvia solo con servizi minimi. Tenere premuto Shiftquando il computer inizia a mostrare il prompt di Grub; è necessario premere il tasto dopo che il BIOS ha inizializzato la tastiera ma prima del caricamento di Grub, che su alcune macchine lascia solo una piccola finestra temporale e potrebbe richiedere diversi tentativi. Al prompt di Grub, premere Downper evidenziare la voce di avvio in modalità utente singolo e avviarla.

Una volta che hai una riga di comando, esegui apt-get --reinstall install PACKAGE1 PACKAGE2 …per reinstallare i pacchetti che contengono file /usr/lib. Puoi eseguire questo frammento di shell per ottenere l'elenco dei nomi dei pacchetti da reinstallare:

egrep -l '/usr/lib/[^/]*\.so\.' /var/lib/dpkg/info/a*.list |
sed -e 's!^/var/lib/dpkg/info/!!' -e 's!\.list$!!'

Alcuni script di installazione dei pacchetti potrebbero richiedere la presenza di librerie di altri pacchetti, pertanto potrebbe essere necessario eseguire le reinstallazioni in un ordine particolare. Se scopri che gli script di installazione di un pacchetto stanno tentando di utilizzare un determinato programma, puoi scoprire con quali librerie è necessario questo programma ldd. Ad esempio, questo indica che in Python mancano tre librerie che è necessario reinstallare:

$ ldd /usr/bin/python | grep 'not found'
    libssl.so.0.9.8 => not found
    libcrypto.so.0.9.8 => not found
    libz.so.1 => not found

dpkg -S /usr/lib/libz.so.1rivela che questo file proviene zlib1ge così via.

Se non riesci apt-geta scaricare i pacchetti, scarica prima alcuni pacchetti chiave da un CD live. zlib1ge libssl0.9.8sono due pacchetti che molto probabilmente ti serviranno presto.


10

Puoi passare una settimana a trovare tutto ciò che manca o puoi passare un'ora semplicemente facendo una reinstallazione dal CD e poi riprendendo tutti i tuoi vecchi pacchetti.

Ti suggerirei di avviare prima un ambiente LiveCD per ottenere prima i backup delle cose (copiarli su un'unità USB esterna o un'altra partizione) e quindi ricominciare.


2
Esatto, se non reinstalli tutto ciò che puoi aspettarti che vengano visualizzati strani errori, crash, ecc. Per mesi .
JanC

3

/usr/libconteneva le librerie condivise, francamente, tutto tranne il software critico per l'avvio (questo è ciò che accade /lib/e cose che non hai installato tramite il gestore dei pacchetti (di solito /usr/local/lib).

Versione breve, hai appena nascosto il tuo sistema.

Ora, se hai ancora /var/cache/apt/archivesun sacco di roba, con un po 'di magia magistrale potresti essere in grado di salvare la situazione.

Controlla se contiene ancora archivi di per i seguenti pacchetti:

libxapian
libsigc++
apt
libcwidget
libsqlite
libboost-iostreams 

Questi pacchetti contengono librerie /usr/libche aptituderichiedono il funzionamento Se riesci a trovare i pacchetti in /var/cache/apt/archivescui puoi reinstallarli manualmente dpkg -i <packagenamee, una volta installati, aptitude dovrebbe essere in grado di funzionare.

Quindi eseguendo il comando aptitude reinstall ~iforzerai una reinstallazione di ogni pacchetto già installato, che si spera dovrebbe ripristinare il tuo sistema. Non posso dare garanzie assolute perché il danno che hai fatto è davvero abbastanza spettacolare in questo caso ...


1

Sarei tentato di eseguire l'avvio da un live-CD di Ubuntu 11.04 e tentare di copiare nuovamente i file mancanti.

Prima di fare qualsiasi cosa, controlla di avere buoni backup di tutti i file di dati generati dall'utente. Altrimenti, avvierei un CD live montando l'HDD in sola lettura e farei i backup al più presto.


0

Quando ho fatto qualcosa di simile, ho avuto la fortuna di realizzare prima di tentare un riavvio. A questo punto, il tuo sistema funzionerà ancora per lo più. Il mio approccio era quello di creare una virtualbox con la stessa versione del sistema operativo e copiarne i file mancanti. se consenti l'accesso ssh al tuo guest virtualbox puoi usare rsync da un terminale sul tuo sistema principale per aspirare solo i file e i collegamenti mancanti. Nel mio caso mancavano pochi file sufficienti che era più facile / sicuro copiare manualmente usando scp, quindi non è testato quanto segue (!)

sudo rsync -avu user@guestVB:/usr/lib /usr/lib

-a è la modalità di archiviazione (ricorsiva, copia collegamenti simbolici e attributi inclusi timestamp, autorizzazioni ecc.)

-u salta se la copia di destinazione è più recente

-v è dettagliato

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.