¿Cómo crear un enlace simbólico sin usar ln?

¿Cómo crear un enlace simbólico sin usar ln?

Eliminé un enlace simbólico crítico - libc.so.6. Tengo el archivo al que debería apuntar, pero los comandos básicos como lno wgetya no funcionan debido a que falta el enlace. Sin embargo, echootras funciones integradas de Bash funcionan.

Estoy buscando una manera de recrear este vínculo simbólico.

Respuesta1

puedes usar ldconfig, recrea el enlace simbólico:

# 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

Acabo de probarlo, como ves.

Respuesta2

CentOS 6 generalmente viene conbusybox, un conjunto de herramientas Unix vinculado estáticamente, instalado en /sbin. Puedes ejecutarlo así:

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

Respuesta3

Configure LD_PRELOAD para precargar la biblioteca relevante. Lo probé con libpthread y parece funcionar:

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...

Respuesta4

Puede configurar LD_LIBRARY_PATHla variable para incluir el directorio donde libc.so.6está real:

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

Además, ejecútelo ldconfigpara recrear los enlaces. Esto debería hacer que los comandos funcionen para que luego pueda usarlos lnpara reparar su sistema.

Otra forma sería arrancar mediante LiveCD y vincular el archivo allí.

información relacionada