В этом документе описан процесс обновления системы с версии ALT Linux Master 2.0 до ALT Linux Master 2.2 Введение в проблему ~~~~~~~~~~~~~~~~~~~ Каждая установленная система состоит из большого количества программ, организованных в виде пакетов. Между пакетами существуют сложные зависимости. Со времени, как вы поставили Master 2.0, многое уже поменялось: изменились имена пакетов, изменились зависимости между ними. Можете представить себе, какой сложный путь вам предстоит пройти для того чтобы привести систему в современное состояние. К счастью, существует мощная система APT, которая большую часть работы выполнит за вас автоматически. Однако, есть несколько факторов, на которые следует обратить особое внимание: 1. Каждый пользователь имеет свою уникальную конфигурацию системы. К сожалению, невозможно протестировать корректность обновления на десятках тысяч возможных конфигураций, поэтому мы были вынуждены ограничиться только несколькими самыми распространёнными; 2. Возможно, вы ставили какие-то сторонние программы из других дистрибутивов Linux и самостоятельно видоизменяли системные настройки. Опять-таки, невозможно предугадать, что творится в вашей системе, как изменились зависимости между пакетами по сравнению с оригинальным Master 2.0; 3. К великому сожалению, все версии инсталляторов от Mandrake устанавливают систему без учёта конфликтующих пакетов и некоторых зависимостей. Вам придётся сперва поработать над приведением системы в целостное состояние. В связи с вышеизложенным мы надеемся, что вы проникнетесь всей сложностью проблемы обновления и будете производить его очень внимательно. Шаг1. Приведение системы в целостное состояние ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Сначала вам требуется привести систему в целостное состояние, то есть освободить её от конфликтующих пакетов, а также поломанных зависимостей (то есть не должно быть пакетов, требующих отсутствующие пакеты). Для выявления этих проблем запустите команду "apt-get check": [root@localhost /]# apt-get check Reading Package Lists... Building Dependency Tree... Возможно, Вам потребуется запустить `apt-get -f install' для исправления. Извините, но следующие пакеты имеют неудовлетворённые зависимости: Zope-pcgi: Conflicts: Zope-zserver, однако 2.3.0-ipl2mdk установлен Zope-zserver: Conflicts: Zope-pcgi, однако 2.3.0-ipl2mdk установлен glimmer: Obsoletes: latte, однако 0.9.12-ipl3mdk установлен lesstif: Conflicts: openmotif, однако 2.1.30-ipl7mdk установлен lesstif-devel: Conflicts: openmotif-devel, однако 2.1.30-ipl7mdk установлен openmotif: Obsoletes: lesstif, однако 0.92.6-ipl4mdk установлен openmotif-devel: Obsoletes: lesstif-devel, однако 0.92.6-ipl4mdk установлен E: Неудовлетворённые зависимости. Попробуйте опцию -f. Если были выявлены нарушенные зависимости, то их необходимо устранить до установки новых пакетов. Сделать это вам поможет команда "apt-get -f install". В продолжении примера из предыдущего этапа, это может выглядеть так: [root@localhost /]# apt-get -f install Reading Package Lists... Building Dependency Tree... Исправление зависимостей... Завершено Следующие пакеты будут УДАЛЕНЫ: Zope-zserver latte openmotif openmotif-devel 0 пакетов будет обновлено, 0 будет добавлено новых, 4 будет удалено и 85 не будет обновлено. Необходимо получить 0B архивов. После распаковки 7022kБ будет освобождено. Продолжить? [Y/n] Executing RPM (-e)... Вот ещё одна проблемная ситуация, когда один пакет требует другой, но не по прямому имени, а косвенному, например: rpm -qp --requires ispell-3.1.20-alt2.i586.rpm ispell-dictionary /bin/sh /bin/sh rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rpmlib(CompressedFileNames) <= 3.0.4-1 libc.so.6 libc.so.6(GLIBC_2.0) libc.so.6(GLIBC_2.1) libncurses.so.5 libtinfo.so.5 Пакета с именем ispell-dictionary нет, но зато есть несколько, которые его предоставляют: rpm -qp --provides ispell-en-3.1.20-alt2.i586.rpm ispell-dictionary ispell-en = 1:3.1.20-alt2 rpm -qp --provides ispell-de-3.1.20-ipl18mdk.noarch.rpm ispell-dictionary ispell-de = 3.1.20-ipl18mdk Вам необходимо либо доустановить один из этих пакетов, либо корректно удалить ispell вместе со всеми пакетами, которые от него зависят. Выбирайте, что вам проще. После очередной правки снова запускайте "apt-get check" и продолжайте исправления до тех пор, пока эта команда не пройдёт успешно. Шаг2. Обновление до промежуточного состояния ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Для начала вам требуется обновить сам APT. Ни в коем случае не пропускайте этот этап: та версия, которая находится в оригинальном Master 2.0, недостаточно функциональна для того, чтобы корректно произвести обновление всей системы . a) смонтируйте диск номер 8 командой: mount /mnt/cdrom b) перенастройте APT на мини-репозиторий (банк пакетов), для чего в конфигурационном файле /etc/apt/sources.list закомментируйте все строчки и напишите новую: rpm [alt] file:/mnt/cdrom i586 upgrade c) обновите базу APT командой "apt-get update" d) обновите систему командой "apt-get dist-upgrade" Если вы уже обновляли свою систему из Сизифа, то, возможно, какие-то версии пакетов в вашей системе уже новее, чем на CD-ROM, и их обновление из мини-репозитория не произойдёт. Мы не можем знать состав вашей системы, но в любом случае версия APT обязана быть не старее, чем в мини-репозитории. Шаг3. Большое обновление ~~~~~~~~~~~~~~~~~~~~~~~~ a) Первым делом размонтируйте все стандартные каталоги монтирования устройств (/mnt/disk /mnt/floppy /mnt/cdrom и т.д.) командой "umount <каталог>". Сделайте это даже в том случае, если никакие компакт-диски и дискеты не были вставлены в приводы. Откорректируйте /etc/apt/sources.list, закомментировав все строчки, в том числе и добавленную на предыдущем шаге. b) Пополните базу APT информацией о дисках c Master 2.2. Выполните команду "apt-cdrom add" для первых четырёх дисков c ALT Linux Master 2.2. с) Выйдите из XFree86, зайдите как администратор на любую из свободных консолей. d) Запустите обновление командой "apt-get dist-upgrade". Внимательно прочитайте, какие пакеты APT предлагает вам поставить/удалить/обновить. Если будет предложено удалить какой-то пакет, а вы этого не желаете, то: - если это какая-либо важная системная библиотека, НИЧЕГО ДАЛЕЕ НЕ ПРЕДПРИНИМАЙТЕ; лучше обратитесь в списки рассылки с вопросом; ваша система, возможно, пока ещё жива, переходите к пункту (h); - если это какое-нибудь средство разработки, графическая утилита конфигурирования или что-то ещё второстепенное, то запомните её имя и лучше потом доустановите вручную (команда "apt-get install <имя-пакета>"). Если вас попросят ввести фразу "Yes, do as I say", введите её и следуйте дальнейшим инструкциям на экране. Вас попросят вставить диски с ALT Linux Master 2.2, а затем произойдёт обновление. g) Обновите меню (команда "update-menus -n") h) Проверьте состояние основных системных сервисов (например xfs, klogd, syslogd) командой "service <имя> статус" и, если они не запущены, запустите их командой "service <имя> restart". k) На всякий случай переустановите системный загрузчик. В случае использования lilo - команда "lilo"; В случае использования grub - команда "sh /boot/grub/install.sh". l) Обратите внимание, что поддержка графики в загрузчике сильно изменилась, поэтому лучше перенастроить их для запуска в текстовом режиме. m) Обратите внимание, что ядро автоматически обновлено не будет. Пользуйтесь командой "apt-get install <точное название ядра>" для установки новой версии. Например "apt-get install kernel24-up#2.4.20-alt5@i586". Шаг4. Корректировка целостности и проверка работоспособности ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Первым делом на соседней консоли убедитесь, что можете корректно войти в систему пользователем root и в случае возникновения проблем ни в коем случае не выходите из системы до их исправления. Так как в некоторых пакетах из Master 2.0 могли быть грубые ошибки, то эти пакеты могут даже не удалиться. В результате у вас останутся по две копии одного и того же пакета разных версий. Выявите эти пакеты при помощи все той же команды "apt-get check". Затем дайте команду "rpm -q <имя пакета>". В результате вы узнаете полное имя старого пакета-дубликата. Удалите дубликат командой: rpm -e <полное имя дубликата> Если не получится, то командой: rpm -e <полное имя дубликата> --noscripts (не выполнять скрипты после удаления). Если не получится, то командой: rpm -e <полное имя дубликата> --noscripts --notriggers (не выполнять скрипты и триггеры после удаления). Что не обновится ~~~~~~~~~~~~~~~~ Во-первых, ядро. Вам требуется самостоятельно поставить его и перезагрузить систему. Будьте предельно внимательны, так как имена драйверов изменились со времён Master 2.0. Во-вторых, база данных urpmi. Если вы привыкли пользоваться утилитами MandrakeSoft типа printerdrake, то самостоятельно обновите базу urpmi. А ещё лучше - забудьте о *drake* и пользуйтесь аналогичными им и даже превосходящими их по функциональности утилитами (в данном случае apt, foomatic). ---------------------------- ALT Linux Team