Как восстановить поврежденный glibc на Ubuntu?

В работающей системе Ubuntu 16.04 были выполнены следующие команды:

$ wget https://ftp.gnu.org/gnu/libc/glibc-2.26.tar.gz
$ tar -xvzf glibc-2.26.tar.gz
$ mkdir build_gcc && cd build_gcc
$ ../glibc-2.26/configure --prefix=/usr
$ make
$ sudo checkinstall

При установке вылезли ошибки:

Makefile:106: recipe for target 'install-symbolic-link' failed

После этого не удалось запустить ни одну команду, что привело к ошибке сегментации.

Очевидно, что glibc был поврежден/переписан плохими двоичными файлами. Теперь пытаемся восстановить систему, загрузившись с живого флеша Ubuntu и пытаясь переустановить libc6. Эти попытки были предприняты:

  1. Понизьте версию libc6 и обновите снова:

    $ sudo apt-get -o Dir=<partition_path> install libc6=2.23-0ubuntu3
    $ sudo apt-get -o Dir=<partition_path> install libc6
    

    Это не помогло, так как попытка chroot в раздел приводит к segfault:

    $ chroot <partition_path>
    
  2. Используйте apt-get -o RootDir:

    $ sudo apt-get -o RootDir=<partition_path> install libc6=2.23-0ubuntu3
    …
    Chrooting into <partition_path>
    E: Sub-process /usr/sbin/dpkg-preconfigure —apt || true received a segmentation fault
    E: Failure running script /usr/sbin/dpkg-preconfigure —apt || true
    

    Как видно, он также не удался из-за chroot в поврежденную среду.

Как следует подойти к восстановлению системы?


person peetonn    schedule 26.10.2017    source источник
comment
Неправильный сайт. Вместо этого вы ищете Ask Ubuntu или Super User. Этот сайт предназначен для вопросов, связанных с программированием, а не для общей поддержки компьютеров или ОС.   -  person Ken White    schedule 26.10.2017


Ответы (1)


Используйте apt-get download libc6, чтобы получить пакет, затем

dpkg -x libc6*.dpkg /partition_path

"установить" его.

Ваше утверждение «Очевидно, что glibc был поврежден/переписан плохими двоичными файлами», скорее всего, неверно. Вероятно, произошло то, что libc.so.6 получил новые биты, а ld-linux.so — нет, или наоборот. Они должны всегда совпадать, иначе все сломается.

person Employed Russian    schedule 26.10.2017