ln을 사용하지 않고 심볼릭 링크를 만드는 방법은 무엇입니까?

ln을 사용하지 않고 심볼릭 링크를 만드는 방법은 무엇입니까?

중요한 심볼릭 링크를 삭제했습니다 - libc.so.6. 가리키는 파일이 있지만 링크 누락으로 인해 ln또는 같은 기본 명령이 더 이상 작동하지 않습니다. wget그러나 echo다른 Bash 내장 기능이 작동합니다.

이 심볼릭 링크를 다시 만드는 방법을 찾고 있습니다.

답변1

ldconfig를 사용하면 심볼릭 링크가 다시 생성됩니다.

# 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

보시다시피 방금 테스트했습니다.

답변2

CentOS 6에는 일반적으로busybox, 에 설치된 정적으로 연결된 Unix 도구 세트입니다 /sbin. 다음과 같이 실행할 수 있습니다.

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

답변3

관련 라이브러리를 미리 로드하려면 LD_PRELOAD를 설정하세요. libpthread로 시도해 보았는데 제대로 작동하는 것 같습니다.

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

답변4

LD_LIBRARY_PATHreal이 있는 디렉터리를 포함하도록 변수를 설정할 수 있습니다 libc.so.6.

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

또한 ldconfig링크를 다시 생성하려면 실행하세요. 이렇게 하면 명령이 작동하여 ln명령을 사용하여 시스템을 수정할 수 있습니다.

또 다른 방법은 LiveCD를 통해 부팅하고 거기에 파일을 연결하는 것입니다.

관련 정보