[ назад ] [ Содержание ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ A ] [ вперед ]


Информация о выпуске Debian GNU/Linux 4.0 ("etch") для архитектуры S/390
Глава 4 - Обновление с предыдущих выпусков


4.1 Подготовка к обновлению

Перед обновлением мы рекомендуем вам также прочитать информацию в Что надо знать о etch, Глава 5. В этом разделе дано описание потенциальных проблем, которые не имеют прямого отношения к процессу обновления, но всё же важно знать об этом.


4.1.1 Создание резервной копии всех данных и настроек

Перед обновлением настоятельно рекомендуется сделать резервную копию всей системы или, по крайней мере, всех данных и настроек, которые вы не может позволить себе потерять. Инструменты для обновления и сам процесс достаточно надёжны, но сбой аппаратного обеспечения в ходе обновления может привести к серьёзному повреждению системы.

В первую очередь необходимо сделать резервные копии содержимого каталогов /etc, /var/lib/dpkg, /var/lib/aptitude/pkgstates и результат работы команды dpkg --get-selections "*" (кавычки необходимы).

Обновление само по себе никак не затрагивает каталог /home. Однако некоторые приложения (в частности, некоторые приложения Mozilla, окружения рабочего стола GNOME и KDE) при первом запуске новой версии перезаписывают существующие пользовательские настройки новыми настройками по умолчанию. На всякий случай стоит сделать резервную копию скрытых файлов и каталогов ("точечных файлов") из домашних каталогов пользователей. Это поможет вам в случае необходимости восстановить старые настройки. Не лишним будет предупредить пользователей об этой проблеме.

Установка любого пакета должна производиться с привилегиями суперпользователя. Поэтому вы должны, либо войти в систему под именем суперпользователя (root), либо использовать программы su или sudo, чтобы получить необходимые права.

Для обновления есть несколько предварительных условий; проверьте, что они соблюдаются.


4.1.2 Предварительное информирование пользователей

Желательно заранее сообщить всем пользователям о любых планируемых обновлениях, хотя пользователи, работающие в системе через ssh, не должны испытать особых проблем в процессе обновления и вполне могут продолжать работу.

Если вы хотите принять дополнительные меры предосторожности, создайте резервную копию каталога с файлами пользователей (/home) или перед обновлением размонтируйте раздел, где он расположен.

Вероятно при обновлении до etch вам потребуется обновить ядро, поэтому перезагрузка чаще всего нужна. Обычно, это делается после завершения обновления.


4.1.3 Подготовка к откату

Так как ядро в sarge и etch сильно различается, а именно: в драйверах, определении оборудования, именовании и порядке файлов устройств, есть реальная опасность возникновения проблем после перезагрузки в обновлённую систему. Большая часть возможных проблем описана здесь и далее в следующих главах информации о выпуске.

Поэтому имеет смысл проверить, что вы сможете откатиться назад, если система не сможет загрузиться или, для систем, управляемых удалённо, не заработает сеть.

Если обновление производится удалённо через канал ssh, то настоятельно рекомендуем вам предусмотреть подключение к серверу через удалённый последовательный терминал. Может случиться так, что после обновления ядра и перезагрузки, некоторые устройства будут переименованы (это описывается в Переопределение нумерации устройств, раздел 4.6.4) и вы сможете исправить системные настройки через локальную консоль. Также, если система случайно перезагрузится в середине процесса обновления, в этом случае вам потребуется использовать локальную консоль для восстановления.

Очевидно, что сначала нужно попробовать загрузиться со старым ядром. Однако, по различными причинам, описанным в разных частях этого документа, это не обязательно сработает.

Если загрузиться не удалось, вам может потребоваться альтернативный способ загрузки системы для доступа к ней и восстановления. Для этого можно воспользоваться специальным образом восстановления или Linux лайв CD. После загрузки каким-то способом, вы сможете смонтировать имеющуюся корневую файловую систему и выполнить в неё chroot, чтобы найти и исправить ошибку.

Также мы хотим порекомендовать вам воспользоваться режимом восстановления программы установки Debian etch. Преимущество в использовании программы установки в том, что вы можете выбрать из разных методов установки, тот который лучше подходит в вашем случае. Подробная информация приведена в разделе "Восстановление неработающей системы" главы 8 руководства по установке и в FAQ по программе установки Debian.


4.1.3.1 Отладочная оболочка из initrd во время загрузки

initramfs-tools включает отладочную оболочку[6] в создаваемый initrd. Пример: если initrd не удастся смонтировать корневую файловую систему, то вы попадёте в этy отладочную оболочку, в которой доступны основные команды, которые помогут вам выяснить в чём дело и, возможно, даже всё исправить.

Что нужно проверить: наличие правильных файлов устройств в каталоге /dev; какие модули загружены (cat /proc/modules); проверить в выводе dmesg нет ли ошибок при загрузке драйверов. Вывод dmesg также покажет, какие файлы устройств были назначены каким дискам; убедитесь, что результатом cat $ROOT является ожидаемое устройство для корневой файловой системы.

Если вы решили проблему, для выхода из отладочной оболочки наберите exit, и процесс загрузки продолжится с место останова. Естественно, вам нужно устранить причину проблемы и регенерировать initrd для, того чтобы следующая загрузка стала удачной.


4.1.4 Подготовка безопасного окружения для обновления

Обновление дистрибутива возможно как локально через виртуальную текстовую консоль (или подключённого напрямую последовательного терминала), так и удалённо через ssh.

Чтобы ещё более повысить безопасность, мы предлагаем запускать обновление в виртуальной консоли, созданной с помощью программы screen, которая позволяет безопасно переподключаться и таким образом обновление не будет прервано, даже если произойдёт обрыв связи.

Внимание! Ни в коем случае не обновляйте систему через telnet, rlogin, rsh или из графического сеанса под управлением xdm, gdm, kdm и т.д., запущенного на обновляемой системе. Это связано с тем, что все эти сервисы могут быть перезапущены при обновлении, что может привести к недоступности системы, обновлённой только наполовину.


4.1.5 Прекращение поддержки ядер версий 2.2

Если у вас работает ядро с версией меньшей 2.4.1, то перед тем как обновлять glibc, вам нужно провести обновление до ветки 2.4 (как минимум). Это лучше сделать до начала обновления. Рекомендуется обновить ядро до версии 2.6.8, доступной в sarge, вместо обновления до ветки 2.4.


4.2 Проверка состояния системы

При описании процесса обновления в этой главе предполагалось, что производится обновление с "чистого" sarge без установленных пакетов сторонних производителей. В частности, из-за перехода на X.Org (Переход с XFree86 на X.Org, раздел 5.3), возникают проблемы со сторонними пакетами, программы которых установлены в /usr/X11R6/bin/. Для большей надёжности проведения процесса обновления лучше удалить сторонние пакеты из системы.

Эта процедура также предполагает, что ваша система обновлена до последнего выпуска sarge. Если это не так или вы в этом не уверены, следуйте инструкциям раздела Обновление системы sarge, раздел A.1.


4.2.1 Проверка отложенных действий менеджера пакетов

Иногда, использование apt-get для установки пакетов вместо aptitude, может привести к тому, что aptitude считает пакет "неиспользуемым" и планирует его удалить. В общем, система должна быть полностью обновлена и считаться "чистой".

Во-первых, вы должны проверить, не ожидается ли каких-нибудь действий в менеджере пакетов aptitude. Если для пакета запланировано удаление или обновление в менеджере пакетов, то это может отрицательно сказаться на процедуре обновления. Заметим, что исправление возможно, пока в вашем sources.list указаны sarge;, а не stable или etch; смотрите Проверка списка источников APT, раздел A.2.

Для этого запустите aptitude в интерактивном режиме и нажмите 'g' ("Начали"). Если после этого будет предложено что-то сделать, вам нужно просмотреть, что именно и, или отменить эти действия, или подтвердить их выполнение. Если никаких действий совершить не предлагается, то будет показано сообщение "Ни одного пакета не будет установлено, обновлено или удалено".


4.2.2 Отключение фиксации APT

Если вы настроили APT на установку некоторых пакетов из дистрибутива, отличного от стабильного (например, тестируемого), вам, возможно, придётся изменить конфигурацию APT (сохранённую в файле /etc/apt/preferences), чтобы было возможно обновление пакетов до версии в новом стабильном выпуске. Более подробную информацию о фиксации пакетов в APT можно найти в apt_preferences(5).


4.2.3 Проверка состояния пакетов

Независимо от способа обновления, рекомендуется сначала проверить состояние всех пакетов и убедиться, что все пакеты могут быть обновлены. Следующая команда покажет частично установленные (Half-Installed) пакеты, пакеты, настройка которых не удалась (Failed-Config), а также все пакеты в ошибочных состояниях.

     # dpkg --audit

Можно также проверить состояние всех пакетов системы с помощью программ dselect, aptitude или таких команд, как

     # dpkg -l | pager

или

     # dpkg --get-selections "*" > ~/curr-pkgs.txt

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

Заметим, что aptitude использует отличный от apt-get и dselectметод регистрации зафиксированных пакетов. Определить, какие пакеты зафиксированы через aptitude, можно с помощью

     # aptitude search "~ahold" | grep "^.h"

Если вы хотите проверить, какие пакеты зафиксированы через apt-get, используйте

     # dpkg --get-selections | grep hold

Если вы изменяли и перекомпилировали пакет локально, но при этом не переименовали его и не добавили "эпоху" к версии пакета, то его нужно зафиксировать, чтобы предотвратить обновление.

Состояние фиксации пакета ("hold") для aptitude может быть изменено с помощью:

     # aptitude hold имя_пакета

Замените hold на unhold, чтобы сбросить состояние "hold".

Если вам нужно что-то изменить, то лучше сначала убедиться, что ваш sources.list всё ещё ссылается на sarge, как объясняется в разделе Проверка списка источников APT, раздел A.2.


4.2.4 Неофициальные источники и адаптации (backports)

Если вы устанавливали некоторые пакеты не из репозиториев Debian, то знайте, что при обновлении они могут быть удалены по причине конфликтующих зависимостей. Если для установки пакетов вы добавляли записи в файл /etc/apt/sources.list, проверьте, содержит ли этот источник пакеты для etch и соответственно исправьте строку источника вместе со строками остальных источников пакетов Debian.

У некоторых пользователей могут быть уже установлены более "новые" версии пакетов Debian, собранные для sarge. Такие пакеты, скорее всего, станут причиной проблем при обновлении, так как они могут вызвать конфликты файлов[7]. В разделе Возможные проблемы во время обновления, раздел 4.5.8 дана некоторая информация о том, что делать при конфликте файлов, если они возникают.


4.3 Снятие пометки с пакетов вручную

Чтобы не дать aptitude удалить некоторые пакеты, которые были установлены для разрешения зависимостей, вам нужно вручную снять с них пометку авто. К таким пакетам относятся OpenOffice и Vim при установке на рабочую станцию:

     # aptitude unmarkauto openoffice.org vim

Также это касается образов ядра 2.6, если вы устанавливали их с помощью ядерного метапакета:

     # aptitude unmarkauto $(dpkg-query -W 'kernel-image-2.6.*' | cut -f1)

Примечание: чтобы посмотреть какие пакеты отмечены в aptitude как авто, выполните:

     # aptitude search 'i~M <имя пакета>'

4.4 Подготовка источников APT

Перед началом процесса обновления вы должны настроить файл конфигурации apt /etc/apt/sources.list.

Пакет apt при запросе на установку установит самую новую версию пакета из тех, которые можно найти в источниках, соответствующих строкам deb этого файла. При равных версиях приоритет будут иметь строки, находящиеся в файле выше (таким образом, в случае использования нескольких зеркал обычно лучше первым указать каталог на локальном жёстком диске, затем компакт-диск и, наконец, зеркала HTTP/FTP).

На выпуск Debian часто ссылаются по его кодовому имени (например, "sarge" или "etch") или по его статусу (например, "oldstable" ("старый стабильный"), "stable" ("стабильный"), "testing" ("тестируемый"), "unstable" ("нестабильный")). Ссылки на выпуск по его кодовому имени имеют то преимущество, что вы никогда неожиданно для себя не начнёте пользоваться новым выпуском. Поэтому мы здесь так и делаем. В этом случае, вам, конечно, придётся самим следить за новыми выпусками. Если вы будете ссылаться на дистрибутив по его статусному имени, то после выхода нового выпуска вы просто увидите большое количество обновлённых пакетов.


4.4.1 Как добавить Интернет-источник APT

Конфигурация по умолчанию позволяет произвести установку с главных серверов Debian, но вы можете изменить файл /etc/apt/sources.list и использовать другие серверы-зеркала. Лучше использовать ближайший к вам (в смысле скорости передачи данных) сервер-зеркало.

Адреса HTTP- и FTP-зеркал Debian можно найти по адресу http://www.debian.org/distrib/ftplist (см. раздел "Список зеркал Debian"). HTTP-зеркала обычно быстрее, чем FTP.

Допустим, к примеру, что ближайшим к вам зеркалом Debian является http://mirrors.kernel.org/debian. Просматривая содержимое зеркала веб-браузером или FTP-клиентом, можно заметить, что основные каталоги организованы следующим образом:

     http://mirrors.kernel.org/debian/dists/etch/main/binary-s390/...
     http://mirrors.kernel.org/debian/dists/etch/contrib/binary-s390/...

Чтобы использовать это зеркало в программе apt, добавьте в файл sources.list:

     deb http://mirrors.kernel.org/debian etch main contrib

Заметим, что `dists' добавляется автоматически, а параметры после имени выпуска используются для дополнения сетевого пути до реальных каталогов.

После того, как вы добавили новый источник, отключите присутствовавшие ранее в файле sources.list строки deb, поставив в начале каждой строки решётку (#).


4.4.2 Как добавить локальное зеркало APT

Вместо HTTP- и FTP-зеркал, можно использовать зеркало на локальном диске (возможно, смонтированном по сети), изменив соответствующим образом файл /etc/apt/sources.list.

Например, если ваше зеркало пакетов находится в каталоге /var/ftp/debian/, то его основные каталоги будут называться:

     /var/ftp/debian/dists/etch/main/binary-s390/...
     /var/ftp/debian/dists/etch/contrib/binary-s390/...

Чтобы программа apt могла использовать этот источник пакетов, добавьте в файл sources.list:

     deb file:/var/ftp/debian etch main contrib

Заметим, что `dists' добавляется автоматически, а параметры после имени выпуска используются для дополнения сетевого пути до реальных каталогов.

После того, как вы добавили новый источник, отключите присутствовавшие ранее в файле sources.list строки deb, поставив в начале каждой строки решётку (#).


4.4.3 Как добавить источник APT на компакт-диске или DVD

Если вы хотите использовать только компакт-диски, закомментируйте все присутствующие в файле /etc/apt/sources.list строки deb, поставив в начале каждой строки знак диеза (#).

Убедитесь в том, что в файле /etc/fstab есть строка, позволяющая смонтировать компакт-диск в каталог /cdrom (программа apt-cdrom требует монтирования именно в этом каталоге). Например, если файлом устройства вашего привода чтения компакт-дисков служит /dev/hdc, то файл /etc/fstab должен содержать строку:

     /dev/hdc /cdrom auto defaults,noauto,ro 0 0

Обратите внимание на то, что между словами defaults,noauto,ro в четвёртом поле строки не должно быть пробелов.

Чтобы проверить, что строка fstab написана верно, вставьте компакт-диск в привод и выполните команды

     # mount /cdrom    # эта команда примонтирует CD к точке монтирования
     # ls -alF /cdrom  # эта команда должна показать корневой каталог CD-диска
     # umount /cdrom   # эта команда размонтирует CD

Затем запустите команду

     # apt-cdrom add

для каждого компакт-диска Debian Binary, чтобы добавить все диски в базу данных APT.


4.5 Обновление пакетов

Для обновления Debian GNU/Linux до нового выпуска рекомендуется использовать программу управления пакетами aptitude. Этот инструмент принимает более безопасные решения об установке пакетов, чем при запуске непосредственно apt-get.

Не забудьте смонтировать все необходимые разделы (в первую очередь, корневой раздел и каталог /usr) для чтения и записи. Это можно сделать командой

     # mount -o remount,rw /точка_монтирования

Затем надо проверить и перепроверить, что источники APT (в /etc/apt/sources.list) ссылаются, либо на "etch", либо на "stable". Не должно быть источников, указывающих на sarge. Примечание: обратите внимание, источники на CD-ROM часто ссылаются на дистрибутив "unstable", хоть это и странно, но исправлять их не нужно.


4.5.1 Запись сессии

Настоятельно рекомендуем использовать программу /usr/bin/script для записи ваших действий при обновлении. В этом случае, при возникновении каких-либо проблем у вас будет журнал произошедших событий, и если понадобится, вы сможете включить эту информацию в отчёт об ошибке. Чтобы начать запись, выполните команду

     # script -t 2>~/upgrade-etch.time -a ~/upgrade-etch.script

или похожую. Не размещайте файл с записью во временных каталогах, таких как /tmp и /var/tmp (файлы в этих каталогах могут быть удалены при обновлении или перезагрузке).

Запись также поможет вам прочитать информацию, которая была "промотана" за границу экрана. Просто переключитеcь на вторую консоль (VT2, нажав Alt-F2) и, войдя в систему, запустите less -R ~root/upgrade-etch.script для просмотра файла.

После завершения обновления, можно остановить script, набрав exit в командной строке.

Если параметром к script указать -t, то вы сможете воспользоваться программой scriptreplay для повтора всей сессии:

     # scriptreplay ~/upgrade-etch.time ~/upgrade-etch.script

4.5.2 Обновление списка пакетов

Во-первых, нужно обновить список доступных пакетов нового выпуска. Это делается командой:

     # aptitude update

Запуск команды в первый раз для новых источников приведёт к выводу нескольких предупреждений о доступности источников. Эти предупреждения безобидны и больше не появятся при последующих запусках команды.


4.5.3 Проверка достаточности места для обновления

Перед обновлением всей системы, как описано в Обновление остальной системы, раздел 4.5.6, вы должны убедиться, что у вас достаточно места на диске. Сначала все нужные для установки пакеты скачиваются из сети и сохраняются в /var/cache/apt/archives (и на время скачивания, в подкаталог partial/), поэтому вы должны проверить место на разделе, который содержит /var/, так как туда будут временно записываться загружаемые пакеты для установки. После загрузки вам, вероятно, понадобится больше места в других разделах файловой системы для установки обновляемых пакетов (которые могут содержать больше данных) и новых пакетов, которые будут установлены из-за обновлений. Если в системе не будет достаточного места, то в конечном счёте это приведёт к неполному обновлению, что позднее бывает сложно исправить.

И aptitude, и apt отображают подробную информацию о количестве требуемого места для установки. Перед выполнением обновления вы можете увидеть размер необходимого места, запустив:

     # aptitude -y -s -f --with-recommends dist-upgrade
     [ ... ]
     XXX пакетов обновлено, XXX установлено новых, XXX пакетов отмечено для удаления и XXX пакетов не обновлено.
     Необходимо получить xx.xMБ/yyyMБ архивов. После распаковки будет использовано AAAMБ.
     Будет выполнена загрузка/установка/удаление пакетов.

[8]

Если вам не хватает места для обновления — освободите место заранее. Вы можете:

Заметим, что для безопасного удаления пакетов рекомендуется в sources.list исправить источники обратно на sarge, как объясняется в разделе Проверка списка источников APT, раздел A.2.


4.5.4 Минимальное обновление системы

Так как определённые необходимые пакеты конфликтуют при обновлении sarge до etch, непосредственный запуск aptitude dist-upgrade часто приводит к удалению большого числа пакетов, которые вы хотели бы сохранить. Поэтому мы рекомендуем производить обновление в две стадии — сначала минимальное обновление, чтобы разобраться с конфликтами, а затем полный dist-upgrade.

Сначала запустите:

     # aptitude upgrade

Это приведёт к обновлению только тех пакетов, которые можно обновить без необходимости удаления или установки других пакетов.

Затем минимальное обновление с помощью:

     # aptitude install initrd-tools

По этой команде автоматически обновится libc6 и locales и вытянутся библиотеки поддержки SE linux (libselinux1). После этого будут перезапущены некоторые работающие сервисы, включая xdm, gdm и kdm, а следовательно, будут прерваны локальные сеансы X11.

Следующий шаг зависит от набора установленных пакетов. В данном документе даны общие советы о том, какие методы должны быть использованы, но если есть сомнения, то перед тем как продолжить, рекомендуется проверить каждым методом предлагаемые к удалению пакеты.

Некоторые общие пакеты, которые будут удалены: base-config, hotplug, xlibs, netkit-inetd, python2.3, xfree86-common и xserver-common. Полный список устаревших пакетов в etch смотрите Устаревшие пакеты, раздел 4.10.


4.5.4.1 Обновление настольной системы

Этот способ обновления проверен на системах sarge с установленной задачей рабочий стол. Вероятно, это лучший метод для систем с установленной задачей рабочий стол или установленными пакетами gnome или kde.

Вероятно, это неправильный метод, если у вас не установлены пакеты libfam0c102 и xlibmesa-glu:

     # dpkg -l libfam0c102 | grep ^ii
     # dpkg -l xlibmesa-glu | grep ^ii

Если у вас установлена полная настольная система, выполните:

     # aptitude install libfam0 xlibmesa-glu

4.5.4.2 Обновление системы с несколькими установленными пакетами для X

Для систем с установленными только несколькими пакетами для X, не полной с задачейрабочий стол, требуется другой метод. Этот метод, в основном, применяется к системам с установленным пакетом xfree86-common, включая некоторые серверные системы, для которых с помощью tasksel были установлены инструменты управления сервером с графическим интерфейсом. Это, вероятно, корректный метод для систем с запущенными X, но без установленной полностью задачирабочий стол.

     # dpkg -l xfree86-common | grep ^ii

Во-первых, проверьте, что установлены пакеты libfam0c102 и xlibmesa-glu.

     # dpkg -l libfam0c102 | grep ^ii
     # dpkg -l xlibmesa-glu | grep ^ii

Если у вас не установлен libfam0c102 не включайте libfam0 в командную строку ниже. Если у вас не установлен xlibmesa-glu не включайте его в командную строку ниже. [9]

     # aptitude install x11-common libfam0 xlibmesa-glu

Заметим, что при установке libfam0 также устанавливается монитор слежения за состоянием файлов (fam), а также RPC portmapper (portmap), если их ещё нет в системе. Оба пакета предоставляют новый сетевой сервис в системе, хотя их можно настроить на работу через (внутреннее) сетевое устройство обратной петли.


4.5.4.3 Обновление системы без установленных пакетов для X

Если в системе не установлены X, то дополнительная команда aptitude installне нужна, и вы можете переходить к следующему шагу.


4.5.5 Обновление ядра

Версия udev из etch не поддерживает ядра версий менее 2.6.15 (в sarge включены ядра версии 2.6.8), и наоборот, версия udev из sarge не заработает с последними версиями ядер. Как следствие, ядро из предыдущего ядерного пакета, вероятно, не загрузится после обновления. Также, установка udev из etch приводит к принудительному удалению пакета hotplug, который используется ядрами Linux ветки 2.4.

В результате, предыдущий пакет с ядром, вероятно, больше не сможет загрузить машину после обновления. Также, образуется промежуток времени, в котором udev уже обновлён, а ядро ещё нет. Если система будет перезагружена в этот момент, в середине обновления, то она может больше не загрузиться, так как устройства буду не найдены и драйверы не загрузятся. (Смотрите в Подготовка безопасного окружения для обновления, раздел 4.1.4 рекомендации по подготовке к этому, если вы производите обновление удалённо.)

Если в системе установлена задача рабочий стол или другие пакеты, которые могут привести к неприемлемо большому числу удаляемых пакетов, рекомендуется обновлять ядро отдельно от всего остального.

Для обновления ядра выполните:

     # aptitude install linux-image-2.6-flavor

Информация из Установка ядерного метапакета, раздел 4.6.1 поможет вам определить нужный вариант пакета с ядром для установки.

В случае рабочей станции, к сожалению, невозможно гарантировать, что пакет с ядром установит сразу после обновления udev, поэтому этот промежуток времени неопределённой длины когда система не имеет установленного ядра с полной поддержкой автоопределения оборудования. Обратитесь к Обновление ядра и сопутствующих пакетов, раздел 4.6 за информацией по настройке системы, которая не зависит от автоопределения оборудования при загрузке.


4.5.6 Обновление остальной системы

Теперь можно приступить собственно к обновлению. Выполните команду:

     # aptitude dist-upgrade

Эта команда произведёт полное обновление системы, т.е. установку последних доступных версий всех пакетов и разрешение всех изменившихся между выпусками зависимостей. При необходимости будут установлены новые пакеты (обычно это новые версии библиотек или переименованные пакеты) и удалены все вызывающие конфликты устаревшие пакеты.

При обновлении с набора компакт-дисков система несколько раз попросит вас вставить в привод соответствующий диск. Возможно, вам придётся вставлять один диск несколько раз. Это вызвано тем, что взаимосвязанные пакеты могут находится на разных дисках.

Новые версии уже установленных пакетов, которые нельзя обновить не меняя состояние других пакетов, не будут установлены (программа выведет сообщение, что пакет зафиксирован, "held back"). Разрешить ситуацию можно, либо отметив такой пакет как подлежащий установке с помощью aptitude, либо выполнив команду aptitude -f install пакет.


4.5.7 Получение подписей пакетов

После обновления с новой версией apt теперь вы можете обновить информацию о пакетах, в которой теперь есть новый механизм проверки подписей пакетов:

     # aptitude update

При обновлении уже выполняется получение и активация ключей с подписями для архивов пакетов Debian. Если у вас добавлены другие (неофициальные) источники пакетов, то apt будет выдавать предупреждение о невозможности проверки и требовать подтверждения, что пакеты загружены из правильных источников и не были подделаны. Подробней об этом смотрите в Управление пакетами, раздел 2.1.1.

При использовании новой версии apt, вы заметите, что скачиваются файлы различий (pdiff), а не полный список пакетов. Подробней об этой возможности читайте в Медленно обновляются пакетные индексные файлы APT, раздел 5.1.4.


4.5.8 Возможные проблемы во время обновления

Если работа с aptitude, apt-get или dpkg завершается с ошибкой

     E: Dynamic MMap ran out of room

то это значит, что размера кэша по умолчанию недостаточно. Проблему можно решить, либо удалив ненужные записи в файле /etc/apt/sources.list, либо увеличив размер кэша. Увеличить размер кэша можно с помощью параметра APT::Cache-Limit в файле /etc/apt/apt.conf. Следующая команда увеличит кэш до размера, достаточного для обновления:

     # echo 'APT::Cache-Limit "12500000";' >> /etc/apt/apt.conf

Здесь предполагается, что эта переменная раньше не была указана в файле.

Иногда необходимо активизировать параметр APT::Force-LoopBreak в APT, для того чтобы можно было временно удалять пакеты первой необходимости при возникновении циклической зависимости типа конфликт/требование предварительной установки. Программа aptitude сообщит об этом и прекратит обновление. Чтобы решить эту проблему, следует указать в командной строке aptitude параметр -o APT::Force-LoopBreak=1.

Возможна ситуация, когда структура зависимостей в системе может быть настолько нарушена, что потребуется ручное вмешательство. Обычно это делается с помощью aptitude или

     # dpkg --remove имя_пакета

чтобы удалить "проблемные" пакеты или

     # aptitude -f install
     # dpkg --configure --pending

В чрезвычайных случаях вам может потребоваться принудительная переустановка командой типа

     # dpkg --install /path/to/имя_пакета.deb

При обновлении с "чистого" sarge конфликтов файлов быть не должно, но они вполне возможны, если у вас установлены неофициальные адаптации (backports). При конфликте файлов появляются ошибки:

     Unpacking <package-foo> (from <package-foo-file>) ...
     dpkg: error processing <package-foo> (--install):
      trying to overwrite `<some-file-name>',
      which is also in package <package-bar>
     dpkg-deb: subprocess paste killed by signal (Broken pipe)
      Errors were encountered while processing:
      <package-foo>

Конфликт файлов можно попытаться разрешить принудительным удалением пакета, указанного в последней строке сообщения об ошибке:

     # dpkg -r --force-depends имя_пакета

После исправления ошибок вы можете продолжить обновление, повторив ранее описанные команды aptitude.

Во время обновления система будет задавать вопросы о настройке или перенастройке некоторых пакетов. Если вас спросят, нужно ли заменить какой-то файл в каталоге /etc/init.d или /etc/terminfo, или файл /etc/manpath.config версией, предоставленной сопровождающим пакета, обычно следует ответить`да', поскольку иначе будет нарушена целостность системы. Вы всегда сможете вернуть старые настройки, потому что файлы конфигурации будут сохранены с расширением .dpkg-old.

Если вы не уверены в том, что нужно делать, запишите имя пакета или файла и разберитесь с проблемой позднее. Информацию, выводившуюся на экран во время обновления, вы сможете найти в файле транскрипта.


4.6 Обновление ядра и сопутствующих пакетов

В этом разделе описано как обновить ядро и выявить потенциальные проблемы, связанные с этим. Вы можете установить один из пакетов linux-image-*, предоставленных Debian, или скомпилировать ядро из исходников самостоятельно.

Заметим, что большая часть информации раздела основана на предположении, что вы будете использовать одно из модульных ядер Debian вместе с initramfs-tools и udev. Если вы будете использовать своё собственное ядро, которому не требуется initrd, или вы используете другой генератор initrd, то некоторая информация может быть для вас не существенна.

Заметим также, что если udev не установлен в системе, то для обнаружения устройств всё ещё возможно использовать hotplug.

Если вы используете ядро 2.4, внимательно прочитайте Обновление ядра до версии 2.6, раздел 5.2.


4.6.1 Установка ядерного метапакета

При dist-upgrade с sarge до etch настоятельно рекомендуется установить новый метапакет linux-image-2.6-*. Этот пакет может быть установлен автоматически в процессе dist-upgrade. Вы можете проверить это командой:

     # dpkg -l "linux-image*" | grep ^ii

Если в результате вы ничего не увидели, то вам нужно установить новый пакет linux-image вручную. Чтобы увидеть список доступных метапакетов linux-image-2.6, выполните:

     # apt-cache search linux-image-2.6- | grep -v transition

Если вы не знаете какой пакет выбрать, запустите uname -r и поищите пакет с похожим именем. Например, если вы увидели '2.4.27-3-686', то рекомендуется установить linux-image-2.6-686. Для выбора подходящего из возможных, вы можете воспользоваться apt-cache, чтобы посмотреть подробное описание каждого пакета. Например:

     # apt-cache show linux-image-2.6-686

Ядро нужно устанавливать с помощью aptitude install. Чтобы воспользоваться преимуществами новой версии ядра, следует перезагрузить систему при первой возможности.

Если вы не боитесь трудностей, то можете скомпилировать ядро самостоятельно из исходного кода. Установите пакет kernel-package и прочитайте документацию в каталоге /usr/share/doc/kernel-package.


4.6.2 Обновление ядра версии 2.6

Если вы используете ядро ветки 2.6 из sarge, то его обновление будет выполнено автоматически только после полного обновления пакетов системы (как описано в Обновление пакетов, раздел 4.5).

Если возможно, то предпочтительно обновлять ядро отдельно от основного dist-upgrade, чтобы уменьшить шансы получить временно незагружаемую систему. Описание этого процесса смотрите в Обновление ядра, раздел 4.5.5. Заметим, что это нужно выполнять только после процесса минимального обновления, описанного в Минимальное обновление системы, раздел 4.5.4.

Также это сработает, если вы используете ядро собственной сборки и хотели бы перейти на ядро из etch. Если ваша версия ядра не поддерживается пакетом udev, то рекомендуется выполнять обновление после минимального обновления. Если ваша версия поддерживается udev, то вы можете ожидать благополучного окончания полного обновления системы.


4.6.3 Обновление с ядра версии 2.4

Если у вас установлено ядро 2.4 и для определения оборудования система полагается на hotplug, то перед выполнением обновления сначала вы должны обновить ядро до ветки 2.6 из sarge. Перед выполнением обновления убедитесь, что ядро ветки 2.6 загружается на вашей системе, и всё оборудование определяется правильно. При выполнении полного обновления пакет hotplug заменяется другим (udev). Если перед этим вы не выполните процедуру обновления ядра, то система может не загрузиться. После выполнения обновления ядра до ветки 2.6 из sarge, вы можете выполнить обновление ядра как это описано в Обновление ядра версии 2.6, раздел 4.6.2.

Если в вашей системе нет hotplug[10], то в можете отложить обновление ядра и сделать это после обновления всей системы по описанию в Обновление остальной системы, раздел 4.5.6. После того как система обновлена, вы можете сделать следующее (замените <flavor> в имени пакета ядра на подходящее значение для вашей системы):

     # aptitude install linux-image-2.6-<flavor>

4.6.4 Переопределение нумерации устройств

В etch встроен более мощный механизм обнаружения аппаратных средств, чем в предыдущих выпусках. Однако это может приводить к изменению порядка устройств обнаруженных в системе, что повлияет на назначенные имена устройств. Например, если у вас есть две сетевые карты, которые работают через разные драйверы, то устройства eth0 и eth1 могут поменяться местами. Обратите внимание на то, что новый механизм работает так, что если вы, например, поставите другую карту ethernet в систему с etch, то новой карте будет присвоено новое имя интерфейса.

Для сетевых устройств вы можете избежать этого переназначения с помощью правил udev, определив устройства в файле /etc/udev/rules.d/z25_persistent-net.rules[11]. Также для решения можно воспользоваться утилитой ifrename, привязав физические устройства к определённым именам во время загрузки. Подробности смотрите в ifrename(8) и iftab(5). Оба варианта (ifrename и udev) нельзя использовать одновременно.

Для устройств хранения данных можно избежать переназначения с помощью утилиты initramfs-tools и настройки загрузки драйверов модулей в одном и том же порядке, в котором они загружены в данный момент. Для этого определите порядок модулей устройств хранения в системе с помощью команды lsmod. lsmod выводит список модулей в обратном порядке, в котором они загружались, то есть первые модули в списке были загружены последними. Заметим, что это работает только для устройств, которые ядро нумерует стабильным порядком (как устройства PCI).

Однако на этот порядок также влияет удаление и перезагрузка модулей после первоначальной загрузки. Также некоторые драйвера могут быть включены в ядро статически, и их названия не появятся в результатах lsmod. Вы можете определить имена таких драйверов и их порядок загрузки, проанализировав файл /var/log/kern.log или результат команды dmesg.

Добавьте имена этих модулей в файл /etc/initramfs-tools/modules в том порядке, в котором они должны быть загружены во время запуска машины. Некоторые имена модулей в etch могут называться не так как в sarge. Например, sym53c8xx_2 теперь sym53c8xx.

Затем вам нужно будет перегенерировать образ(ы) initramfs запустив update-initramfs -u -k all.

После загрузки ядра из etch и udev, вы можете перенастроить доступ к дискам системы через псевдонимы, которые не зависят от порядка загрузки драйверов. Эти псевдонимы находятся в подкаталогах /dev/disk/.


4.6.5 Проблемы с синхронизацией при загрузке

Если для запуска системы используется initrd, созданный initramfs-tools, то в некоторых случаях создание файлов устройств с помощью udev происходит слишком поздно, после отработки сценариев загрузки, которые с ними работают.

Обычно, признаком такого поведения является отказ загрузки системы из-за невозможности смонтировать корневую файловую систему и переход в отладочную оболочку. Но если проверить нужные устройства, то окажется, что в /dev всё есть. Это наблюдалось, когда корневая файловая система была расположена на диске USB или RAID, особенно при использовании lilo.

Эту проблему можно решить добавив параметр загрузки rootdelay=9. Значение задержки (в секундах) может потребоваться изменить.


4.7 Перед перезагрузкой

Когда команда aptitude dist-upgrade закончила работу, формально обновление завершено, но перед перезагрузкой следует проделать ещё несколько действий.


4.7.1 Переход с devfs

Ядра Debian больше не содержат поддержку devfs, поэтому пользователям devfs нужно вручную преобразовать их системы перед обновлением до ядра из etch.

Если вы видите строку 'devfs' в файле /proc/mounts, то почти наверняка используется devfs. Имена в стиле devfs во всех конфигурационных файлах нужно заменить на соответствующие имена в стиле udev. Имена в стиле devfs обычно есть в файлах /etc/fstab, /etc/lilo.conf, /boot/grub/menu.lst и /etc/inittab.

Подробности о возможных проблемах есть в отчёте об ошибке #341152.


4.7.2 Настройка оборудования S/390

Не всё оборудование S/390 может быть настроено автоматически. Для ядер из etch для правильной настройки устройств используется sysconfig-hardware. К сожалению, документация для этой утилиты и файлов конфигурации пока недоступна. Файлы конфигурации для sysconfig-hardware можно найти в каталоге /etc/sysconfig/.

Если в системе работает ядро ветки2.4, то получения правильной конфигурации может быть особенно сложным. Если вам нужна помощь обратитесь в список рассылки Debian по S/390.

Во-первых, установите утилиту регенерируйте initramfs initrd, так как утилита предоставляет несколько сценариев, которые должны быть включены в initrd:

     # aptitude install sysconfig-hardware
     # update-initramfs -u -k all

4.7.2.1 Настройка дисков

Данная процедура выполняется через изменение файла /etc/zipl.conf. Утилита sysconfig может использовать путь к устройству для включения корневого устройства, которое означает, что этот путь нужно передать в качестве загрузочных параметров ядру. Для обычного dasd, путь состоит из:

     <шина>-<устройство>

Для параметра root в путь должен быть добавлен раздел. Например, если ваш dasda это 0.0.0122, то вместо root=/dev/dasda1 вы должны включить следующие параметры строки в /etc/zipl.conf:

     root=/dev/disks/by-path/ccw-0.0.0122-part1

Или же вы можете использовать параметр enable, чтобы указать устройство, которое должно быть включено; в этом случае раздел:

     root=/dev/dasda1 enable=ccw-0.0.0122

Используемые пути могут различаться для разных устройств. Например, для дисков на адаптере zFCP fiberchannel, путь состоит из шины, устройства, драйвера, wwpn и lun. Параметры для RAID1 будут выглядеть так (в одну строку):

     root=/dev/md0 enable=ccw-0.0.2900-zfcp-0x21000020371c93a5:0
     enable=ccw-0.0.2900-zfcp-0x21000020371d8f94:0

Другие устройства dasd (dasds не нужно создавать в корневой файловой системе) активируются через конфигурационные файлы в /etc/sysconfig/hardware/. Для обычного dasd нужно просто создать файл с путём устройства в его имени:

     # cd /etc/sysconfig/hardware
     # touch config-ccw-0.0.0122

Для дисков на адаптере zFCP fiberchannel отдельные устройства перечисляются внутри файла. Для примера выше, создайте файл config-ccw-0.0.2900 содержащий (второе устройство не показано для читаемости):

     ZFCP_DEVICES=(0x21000020371c93a5:0x0000000000000000 0x2100...:0x...)

4.7.2.2 Настройка сетевых устройств

Сетевые устройства активируются через конфигурационные файлы в /etc/sysconfig/hardware/. Для сетевого устройства ctc с протоколом канала чтения 0.0.0a00 и каналом записи 0.0.0a01 и используя протокол S/390, создайте файл config-ccw-0.0.0a00 содержащий:

     CCWGROUP_CHANS=(0.0.0a00 0.0.0a01)
     CTC_PROTOCOL=0

Для сетевого устройства qeth с включённым режимом layer2, в файл config-ccw-0.0.0600 нужно записать:

     CCWGROUP_CHANS=(0.0.0600 0.0.0601 0.0.0602)
     QETH_OPTIONS=(layer2)

Поддерживаемые параметры для ctc: CTC_PROTOCOL и CTC_BUFFER; для qeth: QETH_PORTNAME, QETH_PORTNO и QETH_OPTIONS.

Так как сетевые устройства на S/390 не имеют стабильного MAC адреса, невозможно использовать постоянное именование устройств с помощью udev. Вместо этого, вы можете добавить параметр INTERFACE_NAME в конфигурационный файл для переименования интерфейса.


4.7.3 Обновление mdadm

Для mdadm теперь нужен конфигурационный файл для составления MD массивов (RAID) с первоначального ramdisk и во время процесса инициализации системы. Прочитайте и выполните инструкции из /usr/share/doc/mdadm/README.upgrading-2.5.3.gz после обновления пакета и до перезагрузки. Последняя версия этого файла доступна по адресу http://svn.debian.org/wsvn/pkg-mdadm/mdadm/trunk/debian/README.upgrading-2.5.3?op=file; обратитесь к ней, если возникнут проблемы.


4.8 Подготовка к следующему выпуску

После обновления можно сделать несколько вещей для подготовки к следующему выпуску.


4.9 Исключаемые пакеты

Начиная с выпуска Lenny, большое число серверных пакетовбудет исключено, так как переход на новые версии теперь можно выполнить без проблем при переходе на Lenny.

Это относится к следующим пакетам:


4.10 Устаревшие пакеты

Вместе с появлением девяти тысяч новых пакетов, более двух тысяч пакетов из состава sarge с появлением etch устаревают. Устаревшие пакеты не включены в etch и не будут больше обновляться. Ничто не мешает вам продолжить пользоваться этими пакетами, но приблизительно через год [12] после выхода etch команда безопасности прекратит выпускать для них исправления. Мы рекомендуем перейти на использование альтернативных пакетов, если есть такая возможность.

Пакет может быть удалён из дистрибутива по многим причинам: разработка программы прекращена, пакет не интересен никому из разработчиков Debian, программа вытеснена другой, более функциональной программой или версией программы, пакет содержит ошибки, из-за которых пока не может быть включён в etch. В последнем случае пакет может быть доступен в нестабильном ("unstable") дистрибутиве.

Определить, какие пакеты в обновлённой системе устарели очень легко, так как программы управления помечают их как "устаревшие". Если вы используете aptitude, то полный список этих пакетов находится в разделе "Устаревшие и локально созданные пакеты". В программе dselect есть аналогичный раздел, но список пакетов в нём может несколько отличаться. Также, если в sarge вы использовали aptitude для установки пакетов вручную, то aptitude помнит об этих пакетах, и сможет пометить как устаревшие те пакеты, которые были установлены только для удовлетворения зависимостей и которые больше не нужны, если пакет, который от них зависел, был удалён. В отличие от deborphan, aptitude не помечает устаревшими пакеты, которые вы установили вручную, в отличие от тех, которые были установлены автоматически для удовлетворения зависимостей.

Существуют и другие инструменты для определения неиспользуемых пакетов. В их число входят deborphan, debfoster и cruft. Советуем использовать deborphan, хотя по умолчанию он ищет только ненужные библиотеки (пакеты в секциях "libs" и "oldlibs", от которых не зависит ни один другой пакет). Не удаляйте подряд все пакеты, найденные такими инструментами (в особенности, если при запуске вы указали опции, отличные от опций по умолчанию), чтобы не удалить что-нибудь нужное. Настоятельно рекомендуем перед удалением внимательно просмотреть список предложенных пакетов (прочесть описание, посмотреть входящие файлы).

В системе отслеживания ошибок Debian зачастую содержится дополнительная информация о причинах удаления пакета. Просмотрите архив сообщений об ошибках интересующего вас пакета, а также архивированные ошибки для псевдо-пакета ftp.debian.org.


4.10.1 Пакеты-пустышки

Многие пакеты из sarge в etch были поделены на несколько разных пакетов, чаще всего чтобы облегчить поддержку системы. Для простоты обновления в состав etch нередко входит "пакет-пустышка" (пустой пакет с именем старого пакета из sarge). Такой пакет при установке устанавливает новые пакеты, от которых зависит. Сразу же после установки "пустышки" становятся неиспользуемыми и их можно спокойно удалять.

В описании большинства (но не всех) пакетов-пустышек ясно указано их предназначение. К сожалению, никаких правил для описания пустышек нет, поэтому для их обнаружения вам может пригодиться deborphan с опцией --guess. Некоторые пустышки удалять после обновления не нужно, так как они впоследствии используются для определения установленной версии программы.


[ назад ] [ Содержание ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ A ] [ вперед ]


Информация о выпуске Debian GNU/Linux 4.0 ("etch") для архитектуры S/390

Josip Rodin, Bob Hilliard, Adam Di Carlo, Anne Bezemer, Rob Bradford, Frans Pop (текущее издание) Andreas Barth (текущее издание), Javier Fernández-Sanguino Peña (текущее издание), Steve Langasek (текущее издание)
debian-doc@lists.debian.org