Score:2

วิธีการกู้คืนจาก glibc ที่เสียหายบนเซิร์ฟเวอร์ Ubuntu 20.04

ธง us

มีโอกาสครั้งที่สองฉันจะตรวจสอบอีกครั้ง แต่ฉันบังเอิญวิ่ง sudo ln -sf บางอย่าง /usr/lib/x86_64-linux-gnu/libc-2.31.so. และไม่มีสำเนา glibc อีกเพราะนี่คือวัตถุที่ใช้ร่วมกันจริงแทนที่จะเป็น symlink

ฉันจะกู้คืนจากมันได้อย่างไร ฉันคิดว่าฉันอาจต้องได้รับ glibc สำเนาอื่น บูตเครื่องจากอุปกรณ์ usb และคัดลอกคลีน libc-2.31.so ถึง /usr/lib/x86_64-linux-gnu.

วิธีที่ถูกต้องในการทำคืออะไร? ฉันต้องสร้าง symlink ใหม่หรือไม่ libc.so.6 ภายใต้ /lib/x86_64-linux-gnu และ /usr/lib/x86_64-linux-gnu?

Score:1
ธง zw

ห้ามสร้าง symlink ในโฟลเดอร์ที่ APT ควบคุม!!!
คุณจะทำลายระบบและ/หรือสร้างฝันร้ายสำหรับการบำรุงรักษาในอนาคต!!!

ในการกู้คืนสถานการณ์ให้ติดตั้งใหม่ แพ็คเกจ libc6 โดย

sudo apt-get อัปเดต
sudo apt-get install -- ติดตั้ง libc6 ใหม่ 

และอย่าแตะ symlink ในครั้งต่อไป
หากคุณต้องการเล่นกับระบบ - ทำสิ่งนี้ /usr/local/bin ซึ่งอยู่นอกเหนือการควบคุมของ APT


หมายเหตุ: บน 20.04 LTS ขั้นต่ำที่สดใหม่จะมีชื่อไฟล์เดียวเท่านั้น libc-2.31.so - ดู

# ค้นหา / -ชื่อ libc-2.31.so
/usr/lib/x86_64-linux-gnu/libc-2.31.so

และคนหนึ่งชื่อ libc.so.6:

 # ค้นหา / -ชื่อ libc.so.6
 /usr/lib/x86_64-linux-gnu/libc.so.6

ในขณะที่มีการเชื่อมโยงดังนี้ (ส่วนกลางถูกแทนที่ด้วย (...)):

 # 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

ทั้งคู่ ถูกจัดหา โดย libc6 แพ็คเกจ deb.

Fengkai Sun avatar
us flag
ขออภัย ฉันไม่ได้อธิบายให้ชัดเจน แต่ขณะนี้เซิร์ฟเวอร์หยุดทำงานและไม่สามารถบูตได้อีกเนื่องจากแจ้งว่าไม่พบ `libc.so.6` หากฉันเรียกใช้คำสั่งใน USB ที่สามารถบู๊ตได้ ดูเหมือนว่าจะไม่ติดตั้ง glibc บนดิสก์ดั้งเดิมของเซิร์ฟเวอร์ใช่ไหม
N0rbert avatar
zw flag
จากนั้นคุณต้องบูตโดยใช้ live-USB, เมานต์รูทของระบบไฟล์เซิร์ฟเวอร์, chroot ไปยังมันและติดตั้งแพ็คเกจ 'libc6' ใหม่ที่นั่น หรือคัดลอกทั้ง `/usr/lib/x86_64-linux-gnu/libc-2.31.so` และ `/usr/lib/x86_64-linux-gnu/libc-2.31.so` จากระบบที่ใช้งานจริงไปยังเซิร์ฟเวอร์ fs จากนั้นรีบูตเป็น OS และติดตั้ง deb-package `libc6` ล่าสุดอีกครั้ง
Fengkai Sun avatar
us flag
ขอบคุณสำหรับการชี้แจงที่รวดเร็วของคุณ! ฉันเรียกใช้ `find / -name libc-2.31.so` บนระบบสดใหม่ และรับผลลัพธ์เช่นเดียวกับคุณ แต่เมื่อฉันรัน `ls /lib/x86_64-linux-gnu/ | grep libc` ยังคงมี `libc-2.31` และ `libc.so.6`...
N0rbert avatar
zw flag
ฉันพิมพ์ผิดในความคิดเห็นก่อนหน้า ขอบคุณ! ฉันแก้ไขคำตอบเพื่อชี้แจงช่วงเวลานี้เกี่ยวกับ symlink ระหว่าง libc-2.31 และ libc.so.6 ฉันคิดว่าตอนนี้มันเสร็จสมบูรณ์แล้วและคุณยอมรับได้
Fengkai Sun avatar
us flag
ขอบคุณมากสำหรับคำแนะนำโดยละเอียด! ฉันยังคงติดต่อเซิร์ฟเวอร์และจะอัปเดตคำถามหากสิ่งต่างๆ ทำงานได้ไม่ดี
N0rbert avatar
zw flag
ฉันหวังว่าทุกอย่างจะเป็นไปได้ด้วยดี ระวังครั้งต่อไป :)

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา