31 votos

Cómo crear un enlace simbólico sin el uso de ln?

He eliminado una crítica enlace simbólico - libc.so.6. Tengo el archivo que se debe apuntar, pero los comandos básicos como ln o wget no funciona debido a que el enlace que falta. Sin embargo, echo o otros Bash builtins trabajo.

Estoy buscando una manera de recrear este enlace simbólico.

58voto

JatSing Puntos 166

usted puede utilizar ldconfig, se 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

sólo probado, como se puede ver.

44voto

Mark Plotnick Puntos 591

CentOS 6 en general, viene con busybox, vinculado estáticamente conjunto de herramientas de Unix, instalado en /sbin. Se puede ejecutar como este:

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

23voto

Dennis Kaarsemaker Puntos 12683

Conjunto de LD_PRELOAD para precargar la biblioteca relevantes. He probado con libpthread y parece que funciona:

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

23voto

aru Puntos 201

sln sirve exactamente para ese propósito: arreglar enlaces simbólicos cuando usted no puede usar el normal ln porque se rompió un enlace simbólico esencial. Para citar su página man:

DESCRIPCIÓN

  The  sln  program creates symbolic links.  Unlike the ln(1) program, it
  is statically linked.  This means that if for some reason  the  dynamic
  linker  is  not  working,  sln  can  be  used to make symbolic links to
  dynamic libraries.

8voto

edvinas.me Puntos 1256

Puede establecer LD_LIBRARY_PATH variable para incluir el directorio donde el real libc.so.6 está:

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

También, ejecutar ldconfig para recrear los vínculos. Esto debería hacer que los comandos de trabajo así que usted puede utilizar ln comandos para reparar su sistema.

Otra manera sería arrancar con el LiveCD y archivo de vínculo de allí.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: