Назад | Перейти на главную страницу

головоломка glibc - как отменить частичное обновление?

В эти выходные мой коллега делал то, что должно было быть простой установкой memcached на нашем сервере Ubuntu 10.04.04 LTS, но что-то пошло не так. Я все еще пытаюсь разобраться в деталях, но могу вам сказать:

$ /lib/libc.so.6
GNU C Library (Ubuntu EGLIBC 2.11.1-0ubuntu7.12) stable release version 2.11.1, by Roland McGrath et al.
Copyright (C) 2009 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Compiled by GNU CC version 4.4.3.
Compiled on a Linux >>3.2.0-23-generic<< system on 2012-11-15.
Available extensions:
       crypt add-on version 2.1 by Michael Glad and others
       GNU Libidn by Simon Josefsson
       Native POSIX Threads Library by Ulrich Drepper et al
       BIND-8.2.3-T5B

Однако я также вижу это:

$ ldd --version
ldd (Ubuntu EGLIBC 2.15-0ubuntu10.5) 2.15
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.

По сравнению с другой машиной Ubuntu 10.04.04 LTS, я знаю, что 2.11.1 - это то место, где она должна быть, если мы не попытаемся использовать инструменты обновления для перехода на Ubuntu 12.04 LTS. Но как лучше всего туда добраться? Нужно ли копировать библиотеки с рабочей машины, пока все не заработает, или есть способ лучше?

Хорошо, я думаю, мы знаем, что произошло. Пару месяцев назад, просматривая ежедневный отчет logwatch, я увидел, что кто-то начал запускать dist-upgrade. Я спросил их об этом, и они сказали, что думают, что находятся на своей локальной Linux-машине, а не на моем сервере, и ^ Сдавались, как только поняли, что что-то не так.

Все выглядело хорошо, поэтому я больше не думал об этом ... пока другой коллега не установил memcached, и по какой-то, возможно, связанной с этим причине возникли проблемы с установкой, поэтому он использовал одну из различных форсировок - это -опции обновления, и вот тогда весь ад разразился.

Многие вещи были сломаны: способности, все сложное, даже человек. Но dpkg работал! И если вы посмотрите, есть архивы каждой стандартной библиотеки на каждом этапе выпуска / обновления системы. Путем осторожных итераций загрузки пакета, установки / принудительного возврата к этой версии, повторной проверки зависимостей, повторной загрузки мы смогли снова связать систему с точно такой же версией всех соответствующих библиотек, которые у нас были в то время. Я думаю, что нам однажды пришлось использовать опцию «удержания», чтобы циклическая зависимость не вызывала проблем. На это ушло несколько часов, но мы вернули систему в исходное состояние. Затем мы выполнили перезагрузку (на всякий случай - с момента последней перезагрузки прошло 253 дня), а затем стандартное обновление, чтобы получить последнюю версию Ubuntu 10.04 LTS, и снова перезагрузились. Вуаля - спасено.

Какой кошмар!

Уроки выучены:

  1. относитесь к этому более серьезно, когда кто-то случайно начинает обновлять вашу систему;
  2. убедитесь, что при входе в систему все машины четко идентифицируются;
  3. обязательно следите за небольшими выпусками, так как они бы не пошли в архивы;
  4. Спасибо сумасшедшим людям, которые хранят архивы каждой версии библиотеки для каждого выпуска системы!