Puncte:2

Cum să vă recuperați de la un glibc corupt pe serverul Ubuntu 20.04

drapel us

Având o a doua șansă, l-aș verifica, dar am fugit din greșeală sudo ln -sf ceva /usr/lib/x86_64-linux-gnu/libc-2.31.so. Și nu există o altă copie a glibc, deoarece acesta este obiectul real partajat în loc de un link simbolic.

Deci, cum pot să mă recuperez de la ea? Cred că va trebui să obțin o altă copie glibc, să pornesc mașina de pe un dispozitiv USB și să copiez curățarea libc-2.31.so la /usr/lib/x86_64-linux-gnu.

Care este modul corect de a face acest lucru? Trebuie să reconstruiesc și legăturile simbolice libc.so.6 sub /lib/x86_64-linux-gnu și /usr/lib/x86_64-linux-gnu?

Puncte:1
drapel zw

Nu creați legături simbolice în folderele care sunt controlate de APT!!!
Vei sparge sistemul și/sau vei crea un coșmar pentru întreținerea lui viitoare!!!

Pentru a recupera situația, reinstalați pachet libc6 de

sudo apt-get update
sudo apt-get install --reinstall libc6 

și nu atingeți linkurile simbolice data viitoare.
Dacă doriți să vă jucați cu sistemul - faceți acest lucru în /usr/local/bin care este în afara controlului APT.


Notă: pe versiunea minimă proaspătă 20.04 LTS există un singur fișier numit libc-2.31.so - vedea

# find / -name libc-2.31.so
/usr/lib/x86_64-linux-gnu/libc-2.31.so

si unul numit libc.so.6:

 # find / -name libc.so.6
 /usr/lib/x86_64-linux-gnu/libc.so.6

în timp ce acestea sunt simbolizate după cum urmează (partea centrală este înlocuită cu (...)):

 # 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

Ambii sunt furnizate de libc6 pachet deb.

Fengkai Sun avatar
drapel us
Îmi pare rău că nu am clarificat, dar serverul este în prezent nefuncționat și nu poate porni din nou, deoarece spune că nu poate găsi `libc.so.6`. Dacă rulez comanda în USB-ul bootabil, nu pare să instaleze glibc pe discul original al serverului, nu?
N0rbert avatar
drapel zw
Apoi trebuie să porniți folosind live-USB, să montați rootf-urile sistemului de fișiere al serverului, să faceți chroot la el și să reinstalați pachetul `libc6` acolo. Sau copiați atât `/usr/lib/x86_64-linux-gnu/libc-2.31.so` cât și `/usr/lib/x86_64-linux-gnu/libc-2.31.so` de pe sistemul live pe server fs, apoi reporniți pe sistemul de operare și reinstalați cel mai recent pachet deb `libc6`.
Fengkai Sun avatar
drapel us
Mulțumesc pentru clarificarea ta rapidă! Rulez `find / -name libc-2.31.so` pe un sistem live nou și obțin același rezultat ca și tine. Dar când rulez `ls /lib/x86_64-linux-gnu/ | grep libc`, există încă `libc-2.31` și `libc.so.6`...
N0rbert avatar
drapel zw
Am avut o greșeală de scriere în comentariul anterior. Mulțumiri! Am editat un răspuns pentru a clarifica acest moment despre legăturile simbolice dintre libc-2.31 și libc.so.6. Cred că acum este complet și îl poți accepta.
Fengkai Sun avatar
drapel us
Multumesc mult pentru sfatul detaliat! Încă sunt pe cale să ating serverul și aș actualiza întrebarea dacă lucrurile nu funcționează bine.
N0rbert avatar
drapel zw
Sper că totul va merge bine. Fii atent data viitoare :)

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.