Как переименовать libc.a обратно

Я работаю над AIX 6.1 и случайно переименован /usr/lib/libc.a в usr/lib/libc.a_ Как только я переименовал, я осознал свою глупую ошибку. Почти все команды mv, cp, ftp и т. д. (кроме cd) перестали работать.

Как мне переименовать libc.a назад. Без этого система вряд ли функционирует разумно:(

5 ответов

Большинство двоичных файлов зависят от использования libc библиотека. Чтобы узнать, вы можете использовать ldd /path/to/binaryПохоже, вам нужно загрузить другой образ или live CD. Затем вы можете смонтировать соответствующий раздел (/usr если он отделен или /) и переименуйте файл.

Просто опубликовать это на случай, если кто-то еще ищет эту проблему.

По крайней мере, с AIX 5.3 IBM предоставила оболочку восстановления recsh только для этого вопроса.

Проверьте документацию IBM.

Пример использования: recsh; cp -p libc.a.new /usr/lib/libc.a; exit

Пытаться while read -r x; do echo $x >> libc.a; done < libc.a_ (Это предполагает оболочку в стиле Борна).

Если это не удается, и вам повезло, что ed или же sed статически связаны попробуйте:

sed libc.a_ > libc.a

или же

ed libc.a_
w libc.a
q

также dd if=libc.a_ of=libc.a

Похоже ln не может быть и речи?

ln -s usr/lib/libc.a_ usr/lib/libc.a

Или Perl?

perl -e 'symlink("usr/lib/libc.a_","usr/lib/libc.a");'

или же

perl -MFile::Copy -e 'copy("usr/lib/libc.a_","usr/lib/libc.a");'

Загрузитесь с аварийного диска, смонтируйте файловую систему, сделайте переименование.

Другие вопросы по тегам