Vô tình xóa /usr/lib/*.so.*


9

Trong khi tôi đang cài đặt MRTG, do nhầm lẫn, tôi đã xóa /usr/lib/*.so.*/usr/lib/*.so

Bây giờ tôi không thể khởi động hệ thống của mình bây giờ, nó bị kẹt ở màn hình giật gân và khi tôi nhấn nút PAGEDOWN tôi có thể thấy có một số thứ không tải được.

Tuy nhiên, DHCP và WebMin đang chạy và từ Webmin tôi có thể thấy nhật ký hệ thống cho tôi biết rằng cốc không được tải vì libpipeline.so.1bị thiếu và một số thứ khác.

Máy tính của tôi đang chạy 11.04


1
Cross được đăng trên Unix và Linux
Marco Ceppi

sử dụng Hỏi Ubuntu cho các câu hỏi cụ thể của Ubuntu. và không đăng chéo. Nếu bạn không chắc chắn nếu nó cụ thể là Ubuntu hãy hỏi ở đây trước, và chúng tôi sẽ di chuyển nếu nó cụ thể là Ubuntu.

2
cũng là một mẹo cho tương lai ... nếu bạn biết bạn đã làm điều gì đó tồi tệ này trước khi bạn khởi động lại .... đừng khởi động lại. để hệ thống chạy và bắt đầu sửa chữa ngay lập tức. Tôi đã hồi phục /bin/etctheo cách đó trong quá khứ

Câu trả lời:


5

Vì bạn chỉ xóa /usr/lib/*và không /lib/*, bạn có thể khôi phục. Tôi nghĩ rằng tất cả các chương trình bạn rất cần để khôi phục hệ thống của bạn chỉ sử dụng các thư viện từ đó /usr/lib.

Khởi động một dấu nhắc đăng nhập văn bản. Nếu khởi động bình thường không cung cấp cho bạn login:lời nhắc trong chế độ văn bản, hãy khởi động chỉ với các dịch vụ tối thiểu. Bấm và giữ Shiftkhi máy tính của bạn bắt đầu hiển thị lời nhắc Grub; bạn cần nhấn phím sau khi BIOS khởi tạo bàn phím nhưng trước khi Grub được tải, trên một số máy chỉ để lại một cửa sổ thời gian nhỏ và có thể yêu cầu một số hình ảnh. Tại dấu nhắc Grub, nhấn Downđể tô sáng mục nhập khởi động chế độ một người dùng và khởi động.

Khi bạn có một dòng lệnh, hãy chạy apt-get --reinstall install PACKAGE1 PACKAGE2 …để cài đặt lại các gói có tệp /usr/lib. Bạn có thể chạy đoạn mã shell này để lấy danh sách tên của các gói cần cài đặt lại:

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

Một số tập lệnh cài đặt gói có thể yêu cầu các thư viện từ các gói khác có mặt, vì vậy bạn có thể cần chạy cài đặt lại theo một thứ tự cụ thể. Nếu bạn thấy rằng các tập lệnh cài đặt của gói đang cố gắng sử dụng một chương trình cụ thể, bạn có thể tìm hiểu các thư viện mà chương trình này cần ldd. Ví dụ: điều này cho thấy python đang thiếu ba thư viện mà bạn cần cài đặt lại:

$ 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.1tiết lộ rằng tập tin này đến từ zlib1g, và như vậy.

Nếu bạn thấy rằng apt-getkhông thể tải xuống các gói, trước tiên hãy tải xuống một vài gói chính từ đĩa CD trực tiếp. zlib1glibssl0.9.8là hai gói bạn rất có thể cần sớm.


10

Bạn có thể dành một tuần để tìm mọi thứ còn thiếu hoặc bạn có thể dành một giờ chỉ để cài đặt lại từ CD và sau đó lấy lại tất cả các gói cũ của bạn.

Trước tiên tôi khuyên bạn nên khởi động vào môi trường LiveCD để sao lưu mọi thứ (sao chép chúng vào ổ USB ngoài hoặc phân vùng khác) và sau đó bắt đầu lại.


2
Chính xác, nếu bạn không cài đặt lại mọi thứ bạn có thể mong đợi những thất bại kỳ lạ, sự cố, v.v. sẽ bật lên trong nhiều tháng sau đó.
JanC

3

/usr/libthẳng thắn chứa các thư viện được chia sẻ, tất cả mọi thứ , ngoại trừ phần mềm quan trọng khởi động (đó là những gì đi vào /lib/và những thứ bạn không cài đặt thông qua trình quản lý gói (thường /usr/local/lib).

Phiên bản ngắn, bạn vừa hos hệ thống của bạn.

Bây giờ, nếu bạn vẫn còn /var/cache/apt/archivesđầy đủ các thứ, với một chút phép thuật khôn ngoan, bạn có thể cứu vãn tình hình.

Kiểm tra nếu nó vẫn chứa tài liệu lưu trữ cho các gói sau:

libxapian
libsigc++
apt
libcwidget
libsqlite
libboost-iostreams 

Những gói chứa các thư viện trong /usr/libđó aptitudeđòi hỏi phải làm việc Nếu bạn có thể tìm thấy các gói trong /var/cache/apt/archivesbạn có thể cài đặt lại chúng bằng tay với dpkg -i <packagename, và một khi họ đang tất cả các cài đặt, chương trình aptitude sẽ có thể chạy.

Sau đó, bằng cách chạy lệnh, aptitude reinstall ~ibạn sẽ buộc cài đặt lại mọi gói đã được cài đặt, hy vọng sẽ khôi phục hệ thống của bạn. Tôi không thể đảm bảo tuyệt đối vì thiệt hại bạn đã thực sự khá ngoạn mục trong trường hợp này ...


1

Tôi muốn khởi động từ đĩa CD trực tiếp Ubuntu 11.04 và cố gắng sao chép các tệp bị thiếu trở lại.

Trước khi làm bất cứ điều gì, hãy kiểm tra xem bạn có bản sao lưu tốt của bất kỳ tệp dữ liệu nào do người dùng tạo không. Nếu không, tôi sẽ khởi động một đĩa CD trực tiếp gắn ổ cứng chỉ đọc và tạo bản sao lưu càng sớm càng tốt.


0

Khi tôi làm điều gì đó tương tự, tôi đã đủ may mắn để nhận ra trước khi thử khởi động lại. Tại thời điểm này, hệ thống của bạn sẽ vẫn hoạt động chủ yếu. Cách tiếp cận của tôi là tạo một hộp ảo có cùng phiên bản HĐH và sao chép các tệp bị thiếu từ đó. nếu bạn cho phép ssh truy cập vào hộp khách ảo của mình, bạn có thể sử dụng rsync từ thiết bị đầu cuối trên hệ thống chính của mình để chỉ hút các tệp và liên kết bị thiếu. Trong trường hợp của tôi, có rất ít tệp bị thiếu mà sao chép dễ dàng / an toàn nhất để sao chép thủ công bằng scp, vì vậy những điều sau đây chưa được kiểm tra (!)

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

-a là chế độ lưu trữ (đệ quy, sao chép liên kết tượng trưng và các thuộc tính bao gồm dấu thời gian, quyền, v.v.)

-u bỏ qua nếu bản sao đích mới hơn

-v là dài dòng

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.