ln을 사용하지 않고 심볼릭 링크를 만드는 방법은 무엇입니까? 인해 링크에 더 이상 작동하지 않습니다.

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

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



답변

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

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


답변

CentOS 6에는 일반적으로 busybox에 정적으로 링크 된 유닉스 도구 세트가 포함되어 있습니다 /sbin. 다음과 같이 실행할 수 있습니다.

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

답변

관련 라이브러리를 사전로드하려면 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...

답변

sln필수 심볼릭 링크를 끊었 기 때문에 규칙적인 ln을 사용할 수 없을 때 심볼릭 링크를 수정하는 것입니다. 매뉴얼 페이지를 인용하려면 :

기술

  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.

답변

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

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

또한 ldconfig링크를 다시 작성 하기 위해 실행 하십시오. 이렇게하면 명령이 작동하므로 ln명령을 사용하여 시스템을 수정할 수 있습니다.

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


답변

scp 또는 sftp를 사용하여 정적으로 링크 된 버전의 ln을 복사하십시오. 실행 가능한지 확인하십시오. 그런 다음 파일을 수정하는 데 사용하십시오.