Dihapus secara tidak sengaja /usr/lib/*.so.*

9

Saat saya menginstal MRTG, secara tidak sengaja saya telah menghapus /usr/lib/*.so.*dan/usr/lib/*.so

Saya sekarang tidak dapat mem-boot sistem saya sekarang, macet di layar splash dan ketika saya menekan tombol PAGEDOWN saya bisa melihat ada beberapa hal yang gagal dimuat.

Namun, DHCP dan WebMin berjalan dan dari Webmin saya dapat melihat log sistem yang memberi tahu saya bahwa cangkir tidak memuat karena libpipeline.so.1hilang dan beberapa lainnya.

Komputer saya menjalankan 11.04

Ahsan
sumber
1
Cross diposting di Unix dan Linux
Marco Ceppi
gunakan Tanya Ubuntu untuk pertanyaan spesifik Ubuntu. dan jangan posting silang. Jika Anda tidak yakin apakah itu spesifik ubuntu tanyakan di sini dulu, dan kami akan bermigrasi jika spesifik ubuntu.
2
juga tip untuk masa depan ... jika Anda tahu Anda melakukan sesuatu yang seburuk ini sebelum Anda reboot ... jangan reboot. biarkan sistem berjalan dan mulai perbaikan segera. Saya sudah pulih /bindan /etcseperti itu di masa lalu

Jawaban:

5

Karena Anda hanya menghapus /usr/lib/*dan tidak /lib/*, Anda mungkin dapat memulihkan. Saya pikir semua program yang Anda perlukan untuk memulihkan sistem hanya menggunakan pustaka /usr/lib.

Boot ke prompt login teks. Jika boot normal tidak memberi Anda login:prompt dalam mode teks, boot dengan hanya layanan minimum. Tekan dan tahan Shiftketika komputer Anda mulai menampilkan pesan Grub; Anda perlu menekan tombol setelah BIOS menginisialisasi keyboard tetapi sebelum Grub dimuat, yang pada beberapa mesin hanya menyisakan sedikit waktu dan mungkin memerlukan beberapa upaya. Pada prompt Grub, tekan Downuntuk menyorot entri boot mode pengguna tunggal dan boot itu.

Setelah Anda memiliki baris perintah, jalankan apt-get --reinstall install PACKAGE1 PACKAGE2 …untuk menginstal ulang paket yang memiliki file /usr/lib. Anda dapat menjalankan cuplikan shell ini untuk mendapatkan daftar nama paket yang akan diinstal ulang:

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

Beberapa skrip instalasi paket mungkin memerlukan pustaka dari paket lain untuk hadir, jadi Anda mungkin perlu menjalankan instalasi ulang dalam urutan tertentu. Jika Anda menemukan bahwa skrip instalasi paket mencoba menggunakan program tertentu, Anda dapat mengetahui perpustakaan mana yang dibutuhkan oleh program ini ldd. Misalnya, ini menunjukkan bahwa python kehilangan tiga pustaka yang harus Anda instal ulang:

$ 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.1mengungkapkan bahwa file ini berasal zlib1g, dan seterusnya.

Jika Anda merasa apt-gettidak dapat mengunduh paket, unduh terlebih dahulu beberapa paket kunci dari CD langsung. zlib1gdan libssl0.9.8dua paket yang sangat Anda butuhkan sejak dini.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
10

Anda dapat menghabiskan seminggu menemukan semua yang hilang atau Anda dapat menghabiskan satu jam hanya melakukan instal ulang dari CD dan kemudian mendapatkan semua paket lama Anda kembali.

Saya sarankan Anda boot ke lingkungan LiveCD terlebih dahulu untuk mendapatkan cadangan hal pertama (salin ke drive USB eksternal, atau partisi lain) dan kemudian mulai lagi.

Oli
sumber
2
Tepatnya, jika Anda tidak menginstal ulang semua yang Anda harapkan kegagalan aneh, crash, dll untuk muncul selama berbulan - bulan setelahnya.
JanC
3

/usr/libberisi pustaka bersama, sejujurnya, semuanya kecuali perangkat lunak startup-kritis (itulah yang masuk /lib/dan hal-hal yang tidak Anda instal melalui manajer paket (biasanya /usr/local/lib).

Versi singkat, Anda baru saja menyemprot sistem Anda.

Sekarang, jika Anda masih memiliki /var/cache/apt/archivesbanyak barang, dengan sedikit sihir yang bijaksana Anda mungkin dapat menyelamatkan situasi.

Periksa apakah masih berisi arsip untuk paket-paket berikut:

libxapian
libsigc++
apt
libcwidget
libsqlite
libboost-iostreams 

Paket-paket itu berisi pustaka /usr/libyang aptitudemengharuskan untuk bekerja. Jika Anda dapat menemukan paket-paket di /var/cache/apt/archivesdalamnya Anda dapat menginstalnya kembali secara manual dpkg -i <packagename, dan setelah semuanya diinstal, aptitude harus dapat dijalankan.

Kemudian dengan menjalankan perintah aptitude reinstall ~iAnda akan memaksa menginstal ulang setiap paket yang sudah diinstal, yang semoga mengembalikan sistem Anda. Saya tidak dapat memberikan jaminan mutlak karena kerusakan yang Anda lakukan benar-benar sangat spektakuler dalam hal ini ...

Shadur
sumber
1

Saya akan tergoda untuk boot dari live-CD Ubuntu 11.04 dan mencoba untuk menyalin file yang hilang kembali.

Sebelum melakukan apa pun, periksa apakah Anda memiliki cadangan yang baik untuk file data yang dibuat pengguna. Jika tidak, saya akan mem-boot live-CD mount HDD read-only dan membuat backup ASAP.

RedGrittyBrick
sumber
0

Ketika saya melakukan sesuatu yang serupa, saya cukup beruntung untuk menyadari sebelum mencoba reboot. Pada titik ini, sebagian besar sistem Anda masih berfungsi. Pendekatan saya adalah membuat kotak virtual dengan versi OS yang sama dan menyalin file yang hilang dari itu. jika Anda mengizinkan akses ssh ke tamu virtualbox Anda, Anda dapat menggunakan rsync dari terminal di sistem utama Anda untuk menyedot hanya file dan tautan yang hilang. Dalam kasus saya ada beberapa file yang hilang sehingga paling mudah / paling aman untuk menyalin secara manual menggunakan scp, jadi yang berikut ini belum teruji (!)

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

-a adalah mode arsip (rekursif, menyalin symlink, dan atribut termasuk cap waktu, izin dll)

-u melompat jika salinan tujuan lebih baru

-v adalah verbose

Kim SJ
sumber