it-swarm.com.de

Wiederherstellen nach Löschen des symbolischen Links libc.so.6?

In unserem Server wurde der symbolische Link zu libc.so.6 gelöscht. Jetzt funktionieren keine der Binärdateien im System. Um das zu beheben, habe ich versucht:

/bin/ln -s /lib/libc-2.11.3.so /lib/libc.so.6

was mir wie erwartet gibt:

/bin/ln: error while loading shared libraries: libc.so.6: 
    cannot open shared object file: No such file or directory

Ich habe auch versucht:

/lib/ld-linux-x86-64.so.2  --inhibit-rpath /lib/libc.so.6 \
   --library-path /lib/libc-2.11.3.so \
   /bin/ln -s /lib/libc-2.11.3.so /lib/libc.so.6

mit dem gleichen ergebnis. Weitere erfolglose Versuche umfassen cp, mv, cat. 

Ich bin über ssh verbunden und glaube, dass ich nach dem Schließen dieser Sitzung keine weitere Sitzung öffnen kann. Gibt es eine Möglichkeit, dieses System zu reparieren (vielleicht mit bash-eingebauten Ins)?

[ edit ] Ich habe gemacht: 

while read line; do echo $line; done < /lib/libc-2.11.3.so > libc.so.6

um die Datei zu kopieren und versuchte es mit: 

/lib/ld-linux-x86-64.so.2  --inhibit-rpath libc.so.6 --library-path . \
  /bin/ln -s /lib/libc-2.11.3.so /lib/libc.so.6

und bekam: 

/bin/ln: error while loading shared libraries: ./libc.so.6: ELF file OS ABI invalid
21
perreal

Sie können einfach ldconfig ausführen. Die meisten Distributionen liefern dies als statische Binärdatei.

31
Simon Richter

Dies hat in meinem Fall geholfen (die tatsächliche Version hängt von Ihrer Bibliothek ab):

ldconfig -l -v /lib/libc-2.13.so
10
Adam

Versuchen:

LD_PRELOAD=/lib/libc-2.17.so ln -s /lib/libc-2.17.so /lib/libc.so.6

Hinweis: Die tatsächliche Version hängt von Ihrer Bibliothek ab.

8
Kumar Sukhani

Starten Sie mit einer Live-CD wie Knoppix oder was auch immer und reparieren Sie den fehlenden Link, nachdem Sie die Festplatte mit dem "defekten" System aus dem laufenden Live-System geladen haben.

5
wollud1969

Wenn Sie zuvor einen ls-Befehl ausgeführt haben und wissen, wie die Version von libc ist,

ldconfig -l -v /lib64/libc-2.x.so

wo x ist deine Version arbeitet. Beachten Sie, dass es sich je nach Version um eine lib64 oder lib handeln kann.

Ich habe das einfach gemacht und es hat funktioniert.

Kurz gesagt, löschen Sie niemals den Link. Schlechte Idee.

3
manoj

Hinweis für 64 Bit:

LD_PRELOAD=libc-2.13.so ln -s libc-2.13.so libc.so.6

Das hat für mich super funktioniert

Wenn Sie sich nicht in diesem Verzeichnis befinden, wird es ungefähr so ​​aussehen:
LD_PRELOAD=/lib/x86_64-linux-gnu/libc-2.13.so ln -s /lib/x86_64-linux-gnu/libc-2.13.so /lib/x86_64-linux-gnu/libc.so.6

3
malc

Vielen Dank für Ihre Antwort. Es funktionierte gut mit der Root-ID . Wir lösen libc.so.6 auf, um eine Verknüpfung mit einer höheren Version herzustellen, aber nachdem der libc.so.6-Server aufgehoben wurde, reagiert er nicht mehr. ln -s Befehl funktionierte nicht. Kein anderer Benutzer konnte ssh zum Server. Aber als wir unter dem Befehl liefen, funktionierte es. (mit libc-Version auf dem Server vorhanden) Der Server hat sich normal verhalten. 

Unten ist ein korrekter Befehl und auch Leben zu retten ....

LD_PRELOAD=/lib/libc-2.17.so ln -s /lib/libc-2.17.so /lib/libc.so.6

Hinweis: Die tatsächliche Version hängt von Ihrer Bibliothek ab

0
Devdatta

Wenn Sie Ubuntu verwenden, funktioniert ldconfig nicht. Renn einfach:

/sbin/ldconfig.real
0
Rural Hunter