Wie erstelle ich einen symbolischen Link, ohne ln zu verwenden?

Wie erstelle ich einen symbolischen Link, ohne ln zu verwenden?

Ich habe einen wichtigen symbolischen Link gelöscht - libc.so.6. Ich habe die Datei, auf die er verweisen sollte, aber die grundlegenden Befehle wie lnoder wgetfunktionieren aufgrund des fehlenden Links nicht mehr. echoAndere integrierte Bash-Befehle wie oder funktionieren jedoch.

Ich suche nach einer Möglichkeit, diesen symbolischen Link wiederherzustellen.

Antwort1

Sie können ldconfig verwenden, es erstellt den symbolischen Link neu:

# rm /lib/libc.so.6 
rm: remove symbolic link `/lib/libc.so.6'? y
# ls -l /lib/libc*
ls: error while loading shared libraries: libc.so.6: cannot open shared object file:
# ldconfig 
# ls -l /lib/libc*
[skip]
lrwxrwxrwx. 1 root root      12 May 11 07:59 /lib/libc.so.6 -> libc-2.12.so

habe es gerade getestet, wie Sie sehen.

Antwort2

CentOS 6 kommt im Allgemeinen mitbusybox, ein statisch verknüpfter Satz von Unix-Tools, installiert in /sbin. Sie können es wie folgt ausführen:

/sbin/busybox ln -s libc-2.12.so /lib/libc.so.6

Antwort3

Setzen Sie LD_PRELOAD, um die entsprechende Bibliothek vorab zu laden. Ich habe es mit libpthread ausprobiert und es scheint zu funktionieren:

root@spirit:~# mv /lib/x86_64-linux-gnu/libpthread.so.0 /lib/x86_64-linux-gnu/libpthread.so.0-bak
root@spirit:~# chattr
chattr: error while loading shared libraries: libpthread.so.0: cannot open shared object file: No such file or directory
root@spirit:~# LD_PRELOAD=/lib/x86_64-linux-gnu/libpthread.so.0-bak chattr
Usage: chattr [-RVf] [-+=AaCcDdeijsSu] [-v version] files...

Antwort4

Sie können LD_LIBRARY_PATHdie Variable so einstellen, dass sie das Verzeichnis einschließt, in dem sich real libc.so.6befindet:

 export LD_LIBRARY_PATH="/dir/for/libc.so.6/:$LD_LIBRARY_PATH"

Führen Sie es außerdem aus, ldconfigum die Links neu zu erstellen. Dadurch sollten die Befehle funktionieren, sodass Sie lnIhr System anschließend mit den Befehlen reparieren können.

Eine andere Möglichkeit wäre, über eine LiveCD zu booten und die Datei dort zu verknüpfen.

verwandte Informationen