Глава 4. Обновление с Debian 7 (wheezy)

Содержание

4.1. Подготовка к обновлению
4.1.1. Создание резервной копии всех данных и настроек
4.1.2. Предварительное информирование пользователей
4.1.3. Подготовка к перерыву в работе служб
4.1.4. Подготовка к восстановлению
4.1.5. Подготовка безопасного окружения для обновления
4.2. Проверка состояния системы
4.2.1. Просмотр отложенных действий менеджера пакетов
4.2.2. Отключение фиксации в APT
4.2.3. Проверка состояния пакетов
4.2.4. Секция proposed-updates
4.2.5. Неофициальные источники
4.3. Подготовка источников APT
4.3.1. Добавление интернет-источников в APT
4.3.2. Добавление локального зеркала в качестве источника APT
4.3.3. Добавление оптического носителя в качестве источника APT
4.4. Обновление пакетов
4.4.1. Запись сеанса
4.4.2. Обновление списка пакетов
4.4.3. Проверка доступного пространства для обновления
4.4.4. Минимальное обновление системы
4.4.5. Обновление системы
4.5. Возможные проблемы во время обновления
4.5.1. Dist-upgrade завершается с ошибкой «Could not perform immediate configuration»
4.5.2. Ожидаемые удаления
4.5.3. Конфликты или зацикливание в требованиях предварительной установки
4.5.4. Файловые конфликты
4.5.5. Изменение настроек
4.5.6. Изменение консоли сеанса
4.5.7. Повышенное внимание для определённых пакетов
4.6. Обновление ядра и сопутствующих пакетов
4.6.1. Установка метапакета ядра
4.6.2. Изменения в монтировании и проверке корневой файловой системы и файловой системы /usr
4.7. Перед перезагрузкой
4.8. Подготовка к следующему выпуску
4.8.1. Вычистка удалённых пакетов
4.9. Исключённые компоненты
4.10. Устаревшие пакеты
4.10.1. Пакеты-пустышки

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

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

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

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

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

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

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

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

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

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

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

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

4.1.3. Подготовка к перерыву в работе служб

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

Точное время простоя служб будет зависеть от количества обновляемых в системе пакетов, а также от времени, затрачиваемое администратором для ответов на вопросы о настройке. Заметим, что если процесс обновления оставить без внимания и не следить за запросами системы,то высока вероятность увеличить недоступность служб[1] на значительный промежуток времени.

Если обновляемая система предоставляет критически важные службы для пользователей или сети[2], то вы можете сократить время простоя, если сначала выполните минимальное обновление системы (см. Раздел 4.4.4, «Минимальное обновление системы»), затем обновите ядро и перезагрузитесь, а затем обновите пакеты, связанные с вашими критическими службами. Описание обновления этих пакетов перед полным обновлением смотрите в Раздел 4.4.5, «Обновление системы». Такой порядок позволяет оставить работающими критические службы на время прохождения полного обновления и сократить время простоя.

4.1.4. Подготовка к восстановлению

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

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

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

Обычно мы рекомендуем использовать режим восстановления из программы установки Debian jessie. Преимущество в использовании программы установки в том, что вы можете выбирать из множества методов установки тот, который лучше подходит в вашей ситуации. Дополнительная информация приведена в разделе «Восстановление сломанной системы» главы 8 руководства по установке и в ЧаВО по программе установки Debian.

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

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

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

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

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

4.1.4.2. Отладочная оболочка во время загрузки с использованием systemd

Если не удаётся загрузиться под systemd, можно запустить командную оболочку с правами суперпользователя, изменив строку команд ядра. Если базовая загрузка завершается успешно, но некоторые службы не запускаются, может быть полезным добавить команду systemd.unit=rescue.target к параметрам ядра.

В противном случае параметр ядра systemd.unit=emergency.target как можно раньше предоставит вам командную оболочку с правами суперпользователя. Тем не менее, это выполняется до монтирования корневой файловой системы с правами на чтение. Вам придётся выполнить это вручную с помощью следующей команды:

mount -o remount,rw /

Дополнительная информация об отладке сломанной загрузки под systemd может быть найдена в статье Диагностирования проблем загрузки.

Если ничего не получается, вы можете загрузиться с помощью старой системы инициализации, sysvinit. Для этого необходимо, чтобы пакет был установлен sysvinit, а двоичный файл /lib/sysvinit/init был добавлен в initramfs. Если эти требования выполнены, добавьте параметр init=/lib/sysvinit/init в командную строку ядра, это приведёт к загрузке через sysvinit.

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

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

[Важно]Важно

Если вы используете одну из служб VPN (такую как tinc), то они могут быть недоступны во время обновления, см. Раздел 4.1.3, «Подготовка к перерыву в работе служб».

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

[Важно]Важно

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

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

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

Непосредственные обновления с выпусков Debian старее 7 (wheezy) не поддерживаются. Сначала выполните инструкции, описанные в информации о выпуске для Debian 7, чтобы выполнить обновление до 7.

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

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

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

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

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

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

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

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

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

# dpkg --audit

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

# dpkg -l | pager

или

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

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

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

# aptitude search "~ahold" 

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

# dpkg --get-selections | grep 'hold$'

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

Состояние фиксации («hold») пакета через apt-get может быть изменено с помощью:

# echo имя_пакета hold | dpkg --set-selections

Замените hold на install, чтобы отменить фиксацию.

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

4.2.4. Секция proposed-updates

Если вы добавляли секцию proposed-updates в файл /etc/apt/sources.list, то вам нужно удалить её перед тем как начать обновление системы. Эта предосторожность уменьшит вероятность конфликтов.

4.2.5. Неофициальные источники

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

У некоторых пользователей могут быть установлены неофициальные перенесённые «более новые» версии пакетов, собранные для wheezy. Такие пакеты, скорее всего, станут причиной проблем при обновлении, так как они могут вызвать конфликты файлов[4]. В Раздел 4.5, «Возможные проблемы во время обновления» содержится некоторая информация о том, что делать, если возникли файловые конфликты.

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

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

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

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

4.3.1. Добавление интернет-источников в APT

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

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

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

http://mirrors.kernel.org/debian/dists/jessie/main/binary-ppc64el/...
http://mirrors.kernel.org/debian/dists/jessie/contrib/binary-ppc64el/...

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

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

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

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

4.3.2. Добавление локального зеркала в качестве источника APT

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

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

/var/ftp/debian/dists/jessie/main/binary-ppc64el/...
/var/ftp/debian/dists/jessie/contrib/binary-ppc64el/...

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

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

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

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

4.3.3. Добавление оптического носителя в качестве источника APT

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

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

/dev/sr0 /media/cdrom auto noauto,ro 0 0

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

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

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

Затем выполните команду

# apt-cdrom add

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

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

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

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

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

Затем надо проверить и перепроверить, что источники APT (в /etc/apt/sources.list) ссылаются, либо на jessie, либо на stable. Не должно быть источников, указывающих на wheezy.

[Примечание]Примечание

Строки источников для CD-ROM часто ссылаются на «unstable», хоть это может показаться странным, но исправлять их не нужно.

4.4.1. Запись сеанса

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

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

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

Запись также поможет вам прочитать информацию, которая вышла за пределы экрана. Если вы находитесь перед монитором компьютера просто переключитесь на вторую консоль VT2 (нажав Alt+F2) и, войдя в систему, запустите less -R ~root/upgrade-jessie.script для просмотра файла.

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

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

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

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

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

# apt-get update

4.4.3. Проверка доступного пространства для обновления

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

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

# apt-get -o APT::Get::Trivial-Only=true dist-upgrade
[ ... ]
XXX пакетов обновлено, XXX установлено новых, XXX пакетов отмечено для удаления и XXX пакетов не обновлено.
Необходимо получить xx.xMБ/yyyMБ архивов.
После распаковки будет использовано AAAMБ.
[Примечание]Примечание

Запуск этой команды в начале процесса обновления может приводить к ошибке по причинам, описанным далее. В этом случае, запуск команды оценки дискового пространства нужно провести после выполнения минимального обновления системы (см. Раздел 4.4.4, «Минимальное обновление системы») и обновления ядра.

Если вам не хватает места для обновления, apt-get предупредит об этом:

E: Недостаточно свободного места в /var/cache/apt/archives/.

В этом случае освободите место заранее. Вы можете:

  • Удалить пакеты, которые были ранее скачаны для установки (из каталога /var/cache/apt/archives). При очистке кэша пакетов с помощью команды apt-get clean удаляются все ранее скачанные файлы пакетов.

  • Удалить забытые пакеты. Если в wheezy вы использовали aptitude или apt-get для установки пакетов вручную, то этот факт был запомнен, и поэтому будут помечены как устаревшие только те пакеты, которые были установлены только для удовлетворения зависимостей и которые больше не нужны, если пакет, который от них зависел, был удалён. Пакеты, установленные вручную, не будут помечены как устаревшие. Для удаления автоматически установленных пакетов, которые больше не используются, запустите:

    # apt-get autoremove
    

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

  • Удалить пакеты, которые занимают слишком много места и в данный момент не нужны (вы всегда можете установить их снова после обновления). Если установлен пакет popularity-contest, то вы можете использовать команду popcon-largest-unused для получения списка неиспользуемых пакетов, но занимающих больше всего места. Вы можете найти пакеты, которые занимают больше всего дискового пространства с помощью dpigs (из пакета debian-goodies) или wajig (запустив wajig size). Также вы можете получить список пакетов, которые занимают больше всего места, с помощью aptitude. Запустите aptitude в интерактивном режиме, выберите ОкнаНовый плоский список пакетов, нажмите l и введите ~i, нажмите S и введите ~installsize. После этого вы получите список для изучения.

  • Удалить переводы и файлы локализации из системы, если они ненужны. Вы можете установить и настроить пакет localepurge, который поможет удалить неиспользуемые системные локали. Это сократит использование дискового пространства в /usr/share/locale.

  • Временно перенести на другую машину или удалить системные журналы из /var/log/.

  • Использовать временный каталог /var/cache/apt/archives: вы можете использовать временный каталог под кэш на другой файловой системе (USB-носителе, временно подключённом жёстком диске, уже используемой файловой системе, ...)

    [Примечание]Примечание

    Не используйте файловые системы NFS, так как при обновлении могут возникнуть перебои в работе сети.

    Например, если у вас есть USB-диск, смонтированный в /media/usbkey:

    1. Удалите пакеты, которые были скачаны при установке ранее:

      # apt-get clean

    2. Скопируйте каталог /var/cache/apt/archives на USB-диск:

      # cp -ax /var/cache/apt/archives /media/usbkey/

    3. Смонтируйте временный каталог кэша:

      # mount --bind /media/usbkey/archives /var/cache/apt/archives

    4. После обновления восстановите оригинальный каталог /var/cache/apt/archives:

      # umount /media/usbkey/archives

    5. Удалите оставшийся /media/usbkey/archives.

    Можно создать временный каталог кэша в любой файловой системе, уже смонтированной в системе.

  • Выполнить минимальное обновление системы (см. Раздел 4.4.4, «Минимальное обновление системы») или частичное обновление, а затем полное обновление. После частичного обновления можно очистить кэш пакетов и приступить к полному обновлению.

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

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

В некоторых случаях выполнение сразу полного обновления (как описано далее) может привести к удалению большого числа пакетов, которые вы хотите оставить. Поэтому мы рекомендуем производить обновление в две стадии — сначала минимальное обновление, чтобы разобраться с конфликтами, а затем полное обновление, как описано в Раздел 4.4.5, «Обновление системы».

Для этого сначала выполните:

# apt-get upgrade
[Примечание]Примечание

В некоторых предыдущих выпусках для обновления рекомендовалось использовать aptitude. Данный инструмент не рекомендуется для обновления с wheezy до jessie.

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

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

Если установлен пакет apt-listchanges, то он показывает важную информацию об обновляемых пакетах в пейджере (при настройках по умолчанию). Для выхода из пейджера и продолжения обновления нажмите q после прочтения.

4.4.5. Обновление системы

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

# apt-get dist-upgrade
[Примечание]Примечание

В некоторых предыдущих выпусках для обновления рекомендовалось использовать aptitude. Данный инструмент не рекомендуется для обновления с wheezy до jessie.

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

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

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

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

В следующем разделе описаны известные проблемы, которые могут возникнуть при обновлении до jessie.

4.5.1. Dist-upgrade завершается с ошибкой «Could not perform immediate configuration»

В некоторых случаях команда apt-get dist-upgrade может завершиться с ошибкой после скачивания пакетов:

E: Could not perform immediate configuration on 'пакет'.  Please see man 5 apt.conf under APT::Immediate-Configure for details.

Если это произошло, запустите apt-get dist-upgrade -o APT::Immediate-Configure=0 для продолжения обновления.

Другое возможное решение этой проблемы: временно добавьте источники, и для wheezy, и для jessie в sources.list и выполнение apt-get update.

4.5.2. Ожидаемые удаления

В процессе обновления до jessie может потребоваться удалить пакеты в системе. Точный список пакетов будет зависеть от набора установленных в системе пакетов. В данном документе даны общие советы об удалении, но если у вас имеются сомнения, то перед тем как продолжить, рекомендуется проверить все пакеты, которые предлагаются к удалению. Дополнительную информацию об устаревших пакетах в jessie см. в Раздел 4.10, «Устаревшие пакеты».

4.5.3. Конфликты или зацикливание в требованиях предварительной установки

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

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

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

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

# apt-get -f install
# dpkg --configure --pending

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

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

4.5.4. Файловые конфликты

При обновлении с «чистого» wheezy конфликтов файлов быть не должно, но они вполне возможны, если у вас установлены неофициальные адаптации (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 имя_пакета

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

4.5.5. Изменение настроек

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

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

4.5.6. Изменение консоли сеанса

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

Чтобы восстановить консоль, на которой запущено обновление, нажмите Ctrl+Alt+F1 для перехода обратно на виртуальный терминал 1 (если вы видите графический экран входа в систему) или используйте Alt+F1 (если вы видите локальную консоль в текстовом режиме). Вместо F1 нажмите функциональную клавишу с номером виртуального терминала, в котором запущено обновление. Также вы можете использовать Alt+стрелка влево или Alt+стрелка вправо для переключения между терминалами в текстовом режиме.

4.5.7. Повышенное внимание для определённых пакетов

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

4.5.7.1. systemd

Обновление Debian с wheezy до jessie по умолчанию изменит вашу систему инициализации с SysV на systemd. В зависимости от вашей системы и её настройки вам может потребоваться внести некоторые изменения вручную. Имеется подробный список известных проблем в Раздел 5.6, «Обновление приводит к установке новой системы инициализации по умолчанию для Jessie».

4.5.7.2. LXC

Если у вас установлен LXC, может потребоваться особое внимание при обновлении вашей системы и ваших контейнеров. Ознакомьтесь с известными проблемами и их решениями в Раздел 5.8, «Обновление узлов и контейнеров LXC».

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

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

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

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

При выполнении dist-upgrade с wheezy до jessie настоятельно рекомендуется установить метапакет linux-image-* (если вы не сделали этого ранее). Этот метапакет будет автоматически загружать более новую версию ядра во время установки обновления. Вы можете проверить, установлен у вас этот метапакет или нет, с помощью следующей команды:

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

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

# apt-cache search linux-image- | grep -i meta | grep -v transition

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

# apt-cache show linux-image-amd64

Затем вам следует использовать команду apt-get install для его установки. Когда новое ядро будет установлено, вам следует перезагрузиться, чтобы получить все преимущества нового ядра. Тем не менее, ознакомьтесь с Раздел 4.7, «Перед перезагрузкой» до выполнения первой перезагрузки после обновления.

Для любящих приключения в Debian есть лёгкий способ собрать ядро самостоятельно. Установите пакет linux-source. Для сборки двоичного пакета можно использовать цель deb-pkg из makefile. Дополнительную информацию можно найти в Debian Linux Kernel Handbook из пакета debian-kernel-handbook.

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

4.6.2. Изменения в монтировании и проверке корневой файловой системы и файловой системы /usr

Пакет initramfs-tools теперь запускает fsck для корневой файловой системы до её монтирования. Если в качестве системы инициализации выбран systemd и имеется отдельная файловая система /usr, она также будет проверена с помощью fsck и примонтирована.

  • Если /usr является отдельной файловой системой на RAID-устройстве, а опция INITRDSTART в /etc/default/mdadm имеет значение, отличное от 'all', вам нужно будет изменить её так, чтобы данное устройство было в ней указано.

  • Если /usr является отдельной файловой системой на логическом томе LVM, а строка для /usr в /etc/fstab содержит указание на устройство через UUID или LABEL, вам следует изменить эту строку так, чтобы ваше устройство было указано в виде /dev/mapper/VG-LV или /dev/VG/LV.

  • Более невозможно смонировать файловую систему /usr с созданием синонима.

  • Если RTC (часы реального времени) установлены на локальное время, а локальное время перед UTC, e2fsck выведет предупреждение во время загрузки об изменении времени назад (bug #767040). Вы можете отключить это, поместив следующие строки в /etc/e2fsck.conf:

    [options]
    broken_system_clock=1
    

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

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

  • При обновлении с Wheezy до Jessie лучше вычистить старые пакеты before до первой перезагрузки. В частности, устаревшие сценарии инициализации могут приводить к возникновению ошибок. Подробности о том, как находить и вычищать удалённые пакеты, см. в Раздел 4.8.1, «Вычистка удалённых пакетов».

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

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

4.8.1. Вычистка удалённых пакетов

Как правило, рекомендуется вычистить удалённые пакеты. Это особенно справедливо в случае, если они были удалены при обновлении более раннего выпуска (напр., при обновлении до wheezy), или если они были предоставлены третьими лицами. В частности, старые сценарии init.d могут вызывать проблемы.

[Внимание]Внимание

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

Следующие команды отображают список всех удалённых пакетов, чьи файлы настройки всё ещё остаются в системе (если таковые имеются):

# dpkg -l | awk '/^rc/ { print $2 }'

Эти пакеты могут быть удалены с помощью команды apt-get purge. Допустим, вы хотите вычистить все эти пакеты за один раз, для этого можно использовать следующую команду:

# apt-get purge $(dpkg -l | awk '/^rc/ { print $2 }')

Если вы используете aptitude, вы можете использовать следующие альтернативы приведённым выше командам:

$ aptitude search '~c'
$ aptitude purge '~c'

4.9. Исключённые компоненты

Начиная со следующего выпуска Debian 9 (stretch), некоторые возможности будут исключены. Пользователям потребуется перейти на их альтернативы, чтобы избежать проблем при обновлении до 9.

Это относится к следующим возможностям:

  • Пакет hardening-wrapper устарел и будет удалён в Stretch.

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

Вместе с появлением множества новых пакетов, довольно много пакетов, которые входили в wheezy, были удалены. Устаревшие пакеты не будут больше обновляться. Ничто не мешает вам продолжать пользоваться устаревшими пакетами, но приблизительно через год после выхода jessie проект Debian обычно прекращает выпускать для них исправления безопаности[5], и оказывать другую своевременную поддержку. Рекомендуется заменить их на доступные альтернативные пакеты (если таковые имеются).

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

Определить «устаревшие» пакеты в обновлённой системе очень легко, так как их отмечают программы управления пакетами. Если вы используете aptitude, то полный список этих пакетов находится в разделе «Устаревшие и локально созданные пакеты».

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

Список устаревших пакетов:

  • Наследником пакета postgresql-9.1 является пакет postgresql-9.4. После завершения обновления операционной системы, вам следует запланировать обновление кластеров базы данных PostgreSQL 9.1 до новой версии PostgreSQL 9.4, обновление выполняется с помощью инструмента pg_upgradecluster. Пользователям процедурного языка PL/perl выпуск jessie предоставляет обновлённый пакет postgresql-plperl-9.1, связанный с версией libperl из jessie, это сделано для того, чтобы можно было выполнить обновление до новой версии perl, доступной в jessie, но сохранить старые функции базы данных PL/perl до момента обновления самой базы данных.

  • Наследником пакета python3.2 является python3.4. Версия 2.7 поддерживается и в wheezy, и в jessie.

  • Наследником пакетов ruby1.8 и ruby1.9.1; является ruby2.1. Установите пакет ruby для автоматического отслеживания текущей версии ruby.

  • Альтернативами пакета mplayer; являются пакеты mplayer2 и mpv (новый пакет в jessie). Хотя первый пакет по большей части совместим в mplayer в плане аргументов командной строки и настроек (а также добавляет несколько новых возможностей), последний добавляет гораздо больше новых возможностей и улучшений, а также активно сопровождается основной веткой разработки.

  • Вместо пакета openoffice.org; предлагается использовать libreoffice.

  • Наследником пакета squid является squid3.

  • Наследником пакета libjpeg-progs является libjpeg-turbo-progs.

  • Наследником пакета openjdk-6-* является openjdk-7-*.

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

Некоторые пакеты из wheezy в jessie были разделены на несколько пакетов, чаще всего, для облегчения сопровождения системы. Для простоты обновления в состав jessie нередко входит «пакет-пустышка» (пустой пакет с именем старого пакета из wheezy). При установке такого пакета устанавливаются новые пакеты по зависимостям. Сразу же после установки, «пустышки» становятся неиспользуемыми и их можно спокойно удалять.

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



[1] Если приоритет debconf установлен в самый высокий уровень, то ответов на вопросы о настройке можно избежать, но возможна ситуация, при которой ответы по умолчанию могут оказаться некорректны в вашей системе и службы могут не запуститься.

[2] Например: службы DNS или DHCP, а именно, когда не предусмотрены резервные серверы. В отсутствии DHCP пользователи могут быть отключены от сети, если время аренды меньше чем время, затрачиваемое на обновление.

[3] Эту возможность можно выключить, добавив параметр panic=0 в параметры загрузки.

[4] Обычно, система управления пакетами Debian не позволяет пакету удалить или заменить файл, принадлежащий другому пакету, за исключением случаев, когда явно указано, что один пакет заменяет другой.

[5] Или при появлении нового выпуска Debian. Обычно поддержку получают одновременно не более двух стабильных выпусков.