
Я переместил все файлы, начинающиеся с lib, из /../ в какую-то папку, например,
mv /../lib* /to/some/folder
после чего я не могу вернуть его обратно. Это происходит так
-bash: /bin/mv: /lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory
Даже для ls
этого приходит как-bash: /bin/ls: /lib64/ld-linux-x86-64.so.2: bad ELF interpreter: No such file or directory
решение1
Восстановление busybox
в вашем случае сработало так, как вы busybox
установили.
busybox
является статически скомпонованным двоичным файлом, и это помогло в вашем случае, но нет необходимости использовать статически скомпонованные двоичные файлы для исправления такого рода дефектов.
Вы также можете сделать это:
LD_LIBRARY_PATH=/some/path/where/the/libs/are mv ....
Если вы переместили динамический компоновщик времени выполнения, вам также нужно вручную вызвать компоновщик времени выполнения. Чтобы понять, как это работает, вызовите:
man ld.so.1
или на Linux
man ld.so
Обычно это приводит к появлению командной строки следующего вида:
LD_LIBRARY_PATH=/path/to/libs /path/to/libs/ld.so.1 mv ....
В Linux замените /path/to/libs/ld.so.1
на /path/to/libs/ld-linux-x86-64.so.2
то, что фактически используется в вашей системе.
В общем случае вам необходимо знать, является ли двоичный файл, который вы хотите вызвать, 32- или 64-битным, и вызывать правильный динамический компоновщик времени выполнения.
Кстати: этот метод задокументирован для Solaris с 2004 года, и с того года в Solaris больше нет статически скомпонованных двоичных файлов.