Điểm:2

Cách khôi phục từ một glibc bị hỏng trên máy chủ Ubuntu 20.04

lá cờ us

Nếu có cơ hội thứ hai, tôi sẽ kiểm tra lại, nhưng tôi vô tình chạy sudo ln -sf gì đó /usr/lib/x86_64-linux-gnu/libc-2.31.so. Và không có bản sao nào khác của glibc vì đây là đối tượng được chia sẻ thực sự thay vì một liên kết tượng trưng.

Vì vậy, làm thế nào tôi có thể phục hồi từ nó? Tôi nghĩ rằng tôi có thể phải lấy một bản sao glibc khác, khởi động máy từ thiết bị usb và sao chép sạch libc-2.31.so đến /usr/lib/x86_64-linux-gnu.

cách chính xác để làm điều đó là gì? Tôi cũng phải xây dựng lại các liên kết tượng trưng libc.so.6 Dưới /lib/x86_64-linux-gnu/usr/lib/x86_64-linux-gnu?

Điểm:1
lá cờ zw

Không tạo liên kết tượng trưng trong các thư mục do APT kiểm soát!!!
Bạn sẽ phá vỡ hệ thống và/hoặc tạo ra cơn ác mộng cho việc bảo trì hệ thống trong tương lai!!!

Để khắc phục tình trạng cài đặt lại gói libc6 qua

sudo apt-get cập nhật
cài đặt sudo apt-get --reinstall libc6 

và không chạm vào liên kết tượng trưng vào lần tới.
Nếu bạn muốn chơi với hệ thống - hãy làm điều này trong /usr/local/bin nằm ngoài tầm kiểm soát của APT.


Lưu ý: trên 20.04 LTS tối thiểu mới, chỉ có một tệp có tên libc-2.31.so - xem

# tìm / -tên libc-2.31.so
/usr/lib/x86_64-linux-gnu/libc-2.31.so

và một tên libc.so.6:

 # tìm / -tên libc.so.6
 /usr/lib/x86_64-linux-gnu/libc.so.6

trong khi chúng được liên kết tượng trưng như sau (phần trung tâm được thay thế bằng (...)):

 # ls -al /usr/lib/x86_64-linux-gnu/libc-2.31.so /usr/lib/x86_64-linux-gnu/libc.so.6
 -rwxr-xr-x (...) /usr/lib/x86_64-linux-gnu/libc-2.31.so
 lrwxrwxrwx (...) /usr/lib/x86_64-linux-gnu/libc.so.6 -> libc-2.31.so

Cả hai được cung cấp qua libc6 gói gỡ lỗi.

Fengkai Sun avatar
lá cờ us
Xin lỗi tôi đã không nói rõ, nhưng máy chủ hiện đang ngừng hoạt động và không thể khởi động lại vì thông báo không thể tìm thấy `libc.so.6`. Nếu tôi chạy lệnh trong USB có thể khởi động, nó dường như không cài đặt glibc trên đĩa gốc của máy chủ phải không?
N0rbert avatar
lá cờ zw
Sau đó, bạn phải khởi động bằng live-USB, gắn rootfs của hệ thống tệp máy chủ, chroot vào nó và cài đặt lại gói `libc6` ở đó. Hoặc sao chép cả `/usr/lib/x86_64-linux-gnu/libc-2.31.so` và `/usr/lib/x86_64-linux-gnu/libc-2.31.so` từ hệ thống trực tiếp sang máy chủ fs, sau đó khởi động lại vào hệ điều hành và cài đặt lại gói gỡ lỗi `libc6` mới nhất.
Fengkai Sun avatar
lá cờ us
Cảm ơn bạn đã làm rõ nhanh chóng của bạn! Tôi chạy `find / -name libc-2.31.so` trên một hệ thống trực tiếp mới và nhận được kết quả giống như bạn. Nhưng khi tôi chạy `ls /lib/x86_64-linux-gnu/ | grep libc`, vẫn còn `libc-2.31` và `libc.so.6`...
N0rbert avatar
lá cờ zw
Tôi đã có một lỗi đánh máy trong bình luận trước đó. Cảm ơn! Tôi đã chỉnh sửa một câu trả lời để làm rõ thời điểm này về các liên kết tượng trưng giữa libc-2.31 và libc.so.6. Tôi nghĩ rằng nó đã hoàn thành và bạn có thể chấp nhận nó.
Fengkai Sun avatar
lá cờ us
Cảm ơn bạn rất nhiều vì đã tư vấn chi tiết! Tôi vẫn đang trên đường chạm vào máy chủ và sẽ cập nhật câu hỏi nếu mọi thứ không hoạt động tốt.
N0rbert avatar
lá cờ zw
Tôi hy vọng tất cả sẽ diễn ra tốt đẹp. Lần sau cẩn thận nhé :)

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.