Как мне восстановить libz.so.1?

Пытаясь решить проблему с Python, я случайно сдул libz.so.1 двоичный файл путем символической ссылки на него. Теперь куча вещей, в том числе apt-get не сработает Ущерб ограничен только libz.so.1 (который указывал на libz.so.1.2.8) поэтому я смогу это исправить, просто найдя бинарный файл x86_64 и вернув его на место, но все, что я могу найти, - это источник, и я не могу его скомпилировать. Я на Ксениале. Где я могу найти скомпилированный бинарный файл?

3 ответа

Решение

Правильный способ решить эту проблему - это загрузить нужный пакет вручную, а затем установить или распаковать его в систему. Конечно, вы можете выполнять такие действия из LiveCD/LiveUSB.

Как решить такие проблемы:

  1. Посетите https://packages.ubuntu.com/.
  2. Введите пропущенное имя файла в поле Поиск содержимого пакетов (в нашем случае libz.so.1.2.8) указание целевого распределения (xenial в нашем случае) и архитектура процессора (amd64):

  3. Нажмите Search, появится страница результатов:

  4. Затем нажмите на zlib1g ссылка на сайт

  5. В разделе Скачать нажмите amd64:

  6. На открывшейся странице выберите ближайшее зеркало (скопируйте ссылку или загрузите deb-файл браузером)

    wget http://mirrors.kernel.org/ubuntu/pool/main/z/zlib/zlib1g_1.2.8.dfsg-2ubuntu4_amd64.deb
    
  7. Попробуйте установить загруженный пакет в систему:

    sudo dpkg -i zlib1g_1.2.8.dfsg-2ubuntu4_amd64.deb
    

    Если это не работает - распакуйте его прямо в файловую систему:

    sudo dpkg -x zlib1g_1.2.8.dfsg-2ubuntu4_amd64.deb /
    
  8. А затем обязательно переустановите его с помощью APT:

    sudo apt-get install --reinstall zlib1g
    

Расширение инструкций N0rbert, если вы делаете это в живом сеансе, убедитесь, что вы извлекаете пакет в корень поврежденной установки Ubuntu, а не в корень самого живого сеанса (который ничего не решает и исчезнет при перезагрузке).

Из POV живого сеанса ваша сломанная установка будет смонтирована примерно так: /media/ubuntu/ae7r0-9s90s-ejf8d-d9d9f (не фактическое значение, но некоторый длинный хэш, подобный этому). Возможно, вам придется перейти к нему в проводнике, чтобы открыть папку.

Таким образом, во время сеанса вы извлекаете команду, такую ​​как:

sudo dpkg -x zlib1g_1.2.8.dfsg-2ubuntu4_amd64.deb /media/ubuntu/ae7r0-9s90s-ejf8d-d9d9f/

Как только пропал libz.so.1 восстанавливается в /media/ubuntu/ae7r0-9s90s-ejf8d-d9d9f/lib/x86_64-linux-gnu/, вы должны быть в состоянии перезагрузить, запустить sudo apt-get install --reinstall zlib1g в tty1 и перезагрузитесь в работающую систему снова.

Хорошо, так как я сдул оригинальный файл, я не мог apt или даже распаковать или использовать rpm или же alien, Мне удалось найти версию RPM, но я не смог вывести двоичный файл, потому что ни один из инструментов, основанных на сжатии, не работал. Поэтому я загрузил RPM-файл в Convertio и преобразовал его в tar-файл, скачал его, распаковал и положил обратно на место.

Боже, извлек урок, будь осторожен с этими общими библиотеками!

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