Как создать символическую ссылку без использования ln?
Я удалил критическую символическую ссылку - libc.so.6
, У меня есть файл, на который он должен указывать, но основные команды, такие как ln
или же wget
больше не будет работать из-за отсутствия ссылки. Тем не мение, echo
или другая встроенная работа Bash.
Я ищу способ воссоздать эту символическую ссылку.
6 ответов
Вы можете использовать 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
статически связанный набор инструментов Unix, установленный в /sbin
, Вы можете запустить его так:
/sbin/busybox ln -s libc-2.12.so /lib/libc.so.6
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_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...
Вы можете установить LD_LIBRARY_PATH
переменная, чтобы включить каталог, где реальный libc.so.6
является:
export LD_LIBRARY_PATH="/dir/for/libc.so.6/:$LD_LIBRARY_PATH"
Кроме того, выполнить ldconfig
для этого, чтобы воссоздать ссылки. Это должно заставить команды работать, чтобы вы могли затем использовать ln
Команды, чтобы исправить вашу систему.
Другим способом было бы загрузиться через LiveCD и связать там файл.
Используйте scp или sftp, чтобы скопировать статически связанную версию ln. Убедитесь, что это исполняемый файл. Затем используйте его, чтобы исправить файл.