Источник: https://www.debian.org/releases/stable/i386/release-notes/ch-upgrading.ru.html
Содержание
- 4.1. Подготовка к обновлению
- 4.2. Проверка состояния системы
- 4.3. Подготовка источников APT
- 4.4. Обновление пакетов
- 4.5. Возможные проблемы во время обновления
-
- 4.5.1. Поддержка cryptoloop не включена в Linux-ядро squeeze
- 4.5.2. Ожидаемые удаления
- 4.5.3. Ошибки при работе aptitude или apt-get
- 4.5.4. Конфликты или зацикливание в требованиях предварительной установки
- 4.5.5. Файловые конфликты
- 4.5.6. Изменение настроек
- 4.5.7. Изменение консоли сеанса
- 4.5.8. Повышенное внимание для определённых пакетов
- 4.6. Обновление ядра и сопутствующих пакетов
- 4.7. Подготовка к следующему выпуску
- 4.8. Исключённые компоненты
- 4.9. Устаревшие пакеты
Перед обновлением мы рекомендуем вам также прочитать Глава 5, Что нужно знать о squeeze. Этот раздел описывает потенциальные проблемы,
которые не имеют прямого отношения к процессу обновления, но всё же важно
узнать о них до установки.
Перед обновлением настоятельно рекомендуется сделать резервную копию всей
системы или, по крайней мере, всех данных и настроек, которые вы не можете
позволить себе потерять. Инструменты для обновления и сам процесс достаточно
надёжны, но сбой аппаратного обеспечения в ходе обновления может привести к
серьёзному повреждению системы.
В первую очередь необходимо сделать резервную копию содержимого каталогов
/etc
, /var/lib/dpkg
,
/var/lib/apt/extended_states
и результата работы
команды dpkg --get-selections "*"
(кавычки важны). Если
для управления пакетами вы используете aptitude, то также
сделайте резервную копию /var/lib/aptitude/pkgstates
.
Обновление само по себе никак не затрагивает каталог
/home
. Однако некоторые приложения (в частности,
некоторые приложения Mozilla, окружения рабочего стола GNOME и KDE) при
первом запуске новой версии перезаписывают имеющиеся пользовательские
настройки новыми настройками по умолчанию. На всякий случай стоит сделать
резервную копию скрытых файлов и каталогов (название которых начинается с
точки) из домашних каталогов пользователей. Это поможет вам в случае
необходимости восстановить старые настройки. Не лишним будет предупредить
пользователей об этой проблеме.
Установка любого пакета должна производиться с привилегиями
суперпользователя. Поэтому вы должны либо войти в систему под именем
суперпользователя root
, либо использовать программы
su или sudo, чтобы получить
необходимые права.
Для проведения обновления есть несколько предварительных требований;
проверьте, что они соблюдаются.
Желательно заранее сообщать всем пользователям о любых планируемых
обновлениях, хотя пользователи, работающие в системе через
ssh, не должны испытать особых проблем в процессе
обновления и вполне могут продолжать работу.
Если вы хотите принять дополнительные меры предосторожности, создайте
резервную копию и размонтируйте раздел /home
перед
обновлением.
При обновлении до squeeze потребуется обновить ядро, поэтому
потребуется перезагрузка.
При обновлении может потребоваться обновить пакеты для работающих на данной
машине служб. В этом случае работа служб будет прервана на время обновления,
замены и настройки пакетов.
Точное время простоя служб будет зависеть от количества обновляемых в
системе пакетов, а также от времени, затрачиваемое администратором для
ответов на вопросы о настройке. Заметим, что если процесс обновления
оставить без внимания и не следить за запросами системы,то высока
вероятность увеличить недоступность служб[4] на значительный период времени.
Если выполняется обновление системы с критически важными службами для
пользователей или сети[5], то вы можете сократить простой, если сначала выполните
минимальное обновление системы (см. Раздел 4.4.4, «Минимальное обновление системы»),
затем обновите ядро и перезагрузитесь (см. Раздел 4.4.5, «Обновление ядра и udev»), а затем обновите пакеты, связанные с вашими
критическими службами. Описание полного обновления этих пакетов см. в Раздел 4.4.6, «Обновление системы». Такой порядок позволяет оставить работающими
критические службы на время прохождения полного обновления и сократить время
простоя.
Так как ядра в lenny и squeeze сильно различаются, а
именно: в драйверах, определении оборудования, именовании и порядке файлов
устройств, есть реальная опасность возникновения проблем после перезагрузки
в обновлённую систему. Большая часть возможных проблем описана здесь и далее
в следующих главах информации о выпуске.
Поэтому лучше удостовериться, что вы сможете вернуть систему в прежнее
состояние, если она не сможет загрузиться или, для систем управляемых
удалённо, не заработает сеть.
Если обновление производится удалённо через ssh,
настоятельно рекомендуем вам предусмотреть подключение к локальной консоли
сервера через удалённый последовательный терминал. Может случиться так, что
после обновления ядра и перезагрузки, некоторые устройства будут
переименованы (см. Раздел 4.6.2, «Переопределение нумерации устройств»), и вы сможете исправить
системные настройки через локальную консоль. Если система случайно
перезагрузится в середине процесса обновления, вам также потребуется
локальная консоль для восстановления.
Очевидно, что сначала нужно попробовать загрузиться со старым ядром. Однако,
по различными причинам, описанным в разных частях этого документа, это не
обязательно сработает.
Если загрузиться не удалось, вам может потребоваться альтернативный способ
загрузки системы для доступа и восстановления. Для этого можно
воспользоваться специальным образом восстановления или Linux-live CD. После
загрузки каким-то из способов, вы сможете смонтировать имеющуюся корневую
файловую систему и выполнить в неё chroot
, чтобы найти и
исправить ошибку.
Также мы хотим порекомендовать вам режим восстановления
из программы установки Debian squeeze. Преимущество в использовании
программы установки в том, что вы можете выбрать из разных методов установки
тот, который лучше подходит в вашем случае. Подробная информация приведена в
разделе «Восстановление неработающей системы» главы 8 руководства по установке и в FAQ по программе установки
Debian.
initramfs-tools
включает отладочную
оболочку[6] в создаваемый initrd. Например, если initrd не удастся
смонтировать корневую файловую систему, то вы попадёте в эту отладочную
оболочку; она предоставляет основные команды, которые помогут вам выяснить в
чём дело и, возможно, даже всё исправить.
Что нужно проверить: наличие правильных файлов устройств в каталоге
/dev
; какие модули загружены (cat
/proc/modules); проверить в результатах dmesg
отсутствие ошибок при загрузке драйверов. Вывод dmesg
также покажет соответствие назначенных файлов устройств дискам; убедитесь,
что результатом echo $ROOT
является ожидаемое устройство
для корневой файловой системы.
Если вы решили проблему, для выхода из отладочной оболочки наберите
exit
, и процесс загрузки продолжится с места
останова. Естественно, вам нужно устранить причину и пересоздать initrd для
того, чтобы следующая загрузка прошла без проблем.
Обновление дистрибутива возможно как локально через виртуальную текстовую
консоль (или подключённый напрямую терминал к последовательному порту), так
и удалённо через ssh.
Важно | |
---|---|
Если вы используете одну из служб VPN (такую как tinc ), то они могут быть недоступны во времяобновления, см. Раздел 4.1.3, «Подготовка к перерыву в работе служб». |
Чтобы ещё более усилить безопасность, советуем запускать обновление в
виртуальной консоли, созданной с помощью программы
screen, которая позволяет безопасно переподключаться и
таким образом обновление не будет прервано, даже если произойдёт обрыв
связи.
Важно | |
---|---|
Ни в коем случае не обновляйте систему через telnet, rlogin, rsh или из графического сеанса под управлением xdm, gdm, kdm и т.д., запущенного на обновляемой системе. Это связано с тем, что все эти службы могут быть перезапущены при обновлении, что может привести к недоступности системы, обновлённой только наполовину. |
Из-за ошибки #512951 пакет splashy
должен быть вычищен перед обновлением.
# apt-get purge splashy
При описании процесса обновления в этой главе предполагается, что
производится обновление с «чистого» lenny без
установленных пакетов сторонних производителей. Для большей надёжности перед
обновлением лучше удалить сторонние пакеты из системы.
Непосредственные обновления с выпусков Debian старее 5.0
(lenny) не поддерживаются. Сначала выполните инструкции,
описанные Debian GNU/Linux
5.0 — информация о выпуске, для обновления до
5.0.
Эта процедура также предполагает, что ваша система обновлена до последнего
выпуска lenny. Если это не так или вы в этом не уверены, следуйте
инструкциям из Раздел A.1, «Обновление системы lenny».
Иногда, использование apt-get для установки пакетов
вместо aptitude, может привести к тому, что
aptitude посчитает некоторые пакеты
«неиспользуемыми» и запланирует их удаление. В общем, перед
переходом на следующий выпуск система должна быть полностью обновлена и
считаться «чистой».
Поэтому проверьте, нет ли каких-нибудь отложенных действий в менеджере
пакетов aptitude. Если для пакета запланировано удаление
или обновление в менеджере пакетов, это может отрицательно сказаться на
процедуре обновления. Заметим, что исправление возможно, пока в вашем
sources.list
указан
lenny, а не stable или
squeeze; см. Раздел A.2, «Проверка списка источников APT».
Для выполнения этой проверки запустите aptitude в
«интерактивном режиме» и нажмите g
(«Начали»). Если после этого будет предложено что-то сделать,
вам нужно просмотреть, что именно и, или отменить эти действия, или
подтвердить их выполнение. Если никаких действий совершить не предлагается,
то будет показано сообщение «Ни одного пакета не будет установлено,
обновлено или удалено».
Если вы настроили APT на установку некоторых пакетов из дистрибутива,
отличного от стабильного (например, тестируемого), вам, возможно, придётся
изменить настройки фиксации в APT (хранятся в файле
/etc/apt/preferences
), чтобы стало возможным обновление
пакетов до версии нового стабильного выпуска. Более подробную информацию о
фиксации пакетов в APT можно найти в apt_preferences(5).
Независимо от способа обновления, рекомендуется сначала проверить состояние
всех пакетов и убедиться, что всем пакетам разрешено обновляться. Следующая
команда покажет пакеты установленные частично (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») пакета через
apt-get может быть изменено с помощью:
# echo имя_пакета
hold | dpkg --set-selections
Замените hold
на install
, чтобы
отменить фиксацию.
Если вам нужно что-то исправить, то лучше сначала убедиться, что ваш
sources.list
всё ещё указывает на lenny, как
объясняется в Раздел A.2, «Проверка списка источников APT».
Если вы добавляли секцию proposed-updates
в файл
/etc/apt/sources.list
, то вам нужно удалить её перед
тем как начать обновление системы. Эта предосторожность уменьшит вероятность
конфликтов.
Если вы устанавливали некоторые пакеты не из репозиториев Debian, то знайте,
что при обновлении они могут быть удалены по причине конфликтующих
зависимостей. Если для установки дополнительных пакетов вы добавляли записи
в файл /etc/apt/sources.list
, проверьте, содержит ли
этот архив также пакеты для squeeze и, соответственно, исправьте
строку источника вместе со строками остальных источников пакетов Debian.
У некоторых пользователей могут быть уже установлены «более
новые» версии пакетов Debian, собранные для lenny. Такие
пакеты, скорее всего, станут причиной проблем при обновлении, так как они
могут вызвать конфликты файлов[7]. Описание действий при возникновении файловых конфликтов см. в
Раздел 4.5, «Возможные проблемы во время обновления».
Перед началом процесса обновления вы должны настроить файл конфигурации
apt
,
/etc/apt/sources.list
.
Пакет apt
при запросе на установку
выберет самую последнюю версию пакета из тех, которые можно найти в
источниках, указанных в строках «deb
» этого
файла. При равных версиях приоритет будет иметь строка, находящаяся в файле
раньше (таким образом, в случае использования нескольких зеркал, обычно
лучше первым указать каталог на локальном жёстком диске, затем
CD-ROM и, наконец, зеркала HTTP/FTP).
На выпуск Debian часто ссылаются по его кодовому имени (например,
lenny
, squeeze
) или
по его статусу (например, oldstable
(старый стабильный),
stable
(стабильный), testing
(тестируемый), unstable
(нестабильный)). Ссылки на выпуск
по кодовому имени имеют то преимущество, что вы никогда неожиданно для себя
не начнёте пользоваться новым выпуском. Поэтому мы здесь так и делаем. В
этом случае вам, конечно, придётся самим следить за анонсами новых
выпусков. Если вы будете ссылаться на дистрибутив по его статусному имени,
то после выхода нового выпуска вы просто увидите большое количество
обновлённых пакетов.
Настройка по умолчанию позволяет произвести установку с главных
Интернет-серверов Debian, но вы можете изменить файл
/etc/apt/sources.list
и использовать другие
серверы-зеркала. Лучше использовать ближайший к вам (в смысле скорости
передачи данных) сервер-зеркало.
Адреса HTTP- и FTP-зеркал Debian можно найти по адресу https://www.debian.org/distrib/ftplist (см. раздел «Список зеркал
Debian»). HTTP-зеркала обычно быстрее, чем FTP.
Предположим, что ближайшим к вам зеркалом Debian является
https://mirrors.kernel.org
. Просматривая содержимое зеркала
веб-браузером или FTP-клиентом, можно заметить, что основные каталоги
организованы следующим образом:
https://mirrors.kernel.org/debian/dists/squeeze/main/binary-i386/... https://mirrors.kernel.org/debian/dists/squeeze/contrib/binary-i386/...
Чтобы использовать это зеркало в apt
, добавьте в файл
sources.list
:
deb https://mirrors.kernel.org/debian squeeze main contrib
Заметим, что dists
добавляется автоматически, а параметры
после имени выпуска используются для дополнения сетевого пути до реальных
каталогов.
После того, как вы добавили новый источник, отключите присутствовавшие ранее
в файле sources.list
строки
«deb
», поставив в начале каждой строки
символ решётки (#
).
Вместо HTTP- и FTP-зеркал можно использовать зеркало на локальном диске,
изменив соответствующим образом файл
/etc/apt/sources.list
(диск может быть смонтирован с
помощью NFS).
Например, если ваше зеркало пакетов находится в каталоге
/var/ftp/debian/
, то его основные каталоги будут
называться:
/var/ftp/debian/dists/squeeze/main/binary-i386/... /var/ftp/debian/dists/squeeze/contrib/binary-i386/...
Чтобы пакет apt
мог использовать
этот источник пакетов, добавьте в файл sources.list
:
deb file:/var/ftp/debian squeeze main contrib
Заметим, что dists
добавляется автоматически, а параметры
после имени выпуска используются для дополнения сетевого пути до реальных
каталогов.
После того, как вы добавили новый источник, отключите присутствовавшие ранее
в файле sources.list
строки
«deb
», поставив в начале каждой строки
символ решётки (#
).
Если вы хотите использовать только компакт-диски,
закомментируйте все присутствующие в файле
/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.
Для обновления Debian GNU/Linux до нового выпуска рекомендуется использовать
программу управления пакетами apt-get. В предыдущих
выпусках для этой цели рекомендовалось использовать
aptitude, но новые версии apt-get
предоставляют такие же возможности, а также чаще выдают желаемый результат
при обновлении.
Не забудьте смонтировать все необходимые разделы (в первую очередь, корневой
раздел и каталог /usr
) на чтение и запись. Это можно
сделать командой
# mount -o remount,rw /точка_монтирования
Затем надо проверить и перепроверить, что источники APT (в
/etc/apt/sources.list
) ссылаются, либо на
squeeze
, либо на stable
. Не
должно быть источников, указывающих на lenny.
Замечание | |
---|---|
Строки источников для CD-ROM часто ссылаются на « unstable », хоть это может показатьсястранным, но исправлять их не нужно. |
Для записи ваших действий при обновлении настоятельно рекомендуем
использовать программу /usr/bin/script. В этом случае,
при возникновении каких-либо проблем у вас будет журнал произошедших
событий, и если понадобится, вы сможете включить эту информацию в отчёт об
ошибке. Чтобы начать запись, выполните команду:
# script -t 2>~/upgrade-squeeze.time -a ~/upgrade-squeeze.script
или похожую. Не размещайте файл с записью во временных каталогах, таких как
/tmp
и /var/tmp
(файлы в этих
каталогах могут быть удалены при обновлении или перезагрузке).
Запись также поможет вам прочитать информацию, которая вышла за пределы
экрана. Если вы находитесь перед монитором компьютера просто переключитесь
на вторую консоль VT2 (нажав Alt+F2) и, войдя
в систему, запустите less -R
~root/upgrade-squeeze.script для просмотра файла.
После завершения обновления можно остановить script,
набрав exit
в командной строке.
Если параметром к script указать -t,
то вы сможете воспользоваться программой scriptreplay для
повтора всего сеанса:
# scriptreplay ~/upgrade-squeeze.time ~/upgrade-squeeze.script
Во-первых, нужно обновить список доступных пакетов нового выпуска. Это
делается командой:
# apt-get update
Перед обновлением всей системы, как описано в Раздел 4.4.6, «Обновление системы», убедитесь, что у вас достаточно места на
диске. Сначала все нужные для установки пакеты скачиваются из сети и
сохраняются в /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 удаляются все ранее
скачанные файлы пакетов. - Удалить забытые пакеты. Если у вас установлен пакет
popularity-contest
, то с помощью команды
popcon-largest-unused можно получить список пакетов,
которые вы не используете в системе и которые занимают наибольшее количество
места. Также вы можете использовать deborphan или
debfoster, чтобы найти устаревшие пакеты (см. Раздел 4.9, «Устаревшие пакеты»). Ещё вы можете запустить aptitude в
«интерактивном режиме» и найти устаревшие пакеты в меню
«Устаревшие и пакеты, созданные локально». - Удалить пакеты, которые занимают слишком много места и в которых нет срочной
необходимости (вы всегда можете переустановить их после обновления). Список
пакетов, которые занимают большую часть дискового пространства, можно
получить с помощью программы 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
:- Удалите пакеты, которые были скачаны при установке ранее:
# apt-get clean
- Скопируйте каталог
/var/cache/apt/archives
на
USB-диск:# cp -ax /var/cache/apt/archives /media/usbkey/
- Смонтируйте временный каталог кэша:
# mount --bind /media/usbkey/archives /var/cache/apt/archives
- После обновления восстановите оригинальный каталог
/var/cache/apt/archives
:# umount /media/usbkey/archives
- Удалите оставшийся
/media/usbkey/archives
.
Можно создать временный каталог кэша в любой файловой системе, уже
смонтированной в системе. - Удалите пакеты, которые были скачаны при установке ранее:
- Выполнить минимальное обновление системы (см. Раздел 4.4.4, «Минимальное обновление системы») или частичное обновление, а затем полное
обновление. После частичного обновления можно очистить кэш пакетов и
приступить к полному обновлению.
Заметим, что для безопасного удаления пакетов рекомендуется в
sources.list
исправить источники обратно на
lenny, как объясняется в Раздел A.2, «Проверка списка источников APT».
В некоторых случаях выполнение сразу полного обновления (как описано далее)
может привести к удалению большого числа пакетов, которые вы хотите
оставить. Поэтому мы рекомендуем производить обновление в две стадии —
сначала минимальное обновление, чтобы разобраться с конфликтами, а затем
полное обновление, как описано в Раздел 4.4.6, «Обновление системы».
Для этого сначала выполните:
# apt-get upgrade
Это приведёт к обновлению только тех пакетов, которые можно обновить без
необходимости удаления или установки других пакетов.
Минимальное обновление системы также может оказаться полезным если в системе
мало свободного места, и полное обновление запустить из-за этого невозможно.
Для версии udev
в squeeze
требуется ядро версии 2.6.26 или новее с выключенным параметром
CONFIG_SYSFS_DEPRECATED
и включёнными параметрами
CONFIG_INOTIFY_USER
и
CONFIG_SIGNALFD
. Так как в стандартных ядрах Debian в
lenny (версия 2.6.26) параметр
CONFIG_SYSFS_DEPRECATED
включён, и версия udev
в lenny не предоставляет всех
возможностей, требуемых последними версиями ядер, во время обновления нужно
выполнить специальные действия, чтобы не обновить систему до незагружаемого
состояния.
Загрузка ядра 2.6.26 из lenny с udev
из squeeze может привести
неправильному назначению имён сетевым дискам и не будут включены
определённые дополнительные ограничения на блочные устройства (например,
доступ для группы disk
). Само ПО будет казаться рабочим,
но некоторые правила (например, правила для сети) будут загружены
неправильно. Поэтому настоятельно рекомендуется сначала обновить ядро до
совместимой версии, а только затем обновлять udev
.
Для обновления ядра выполните:
# apt-get install linux-image-2.6-вариант
Информация из Раздел 4.6.1, «Установка метапакета ядра» поможет вам определить
нужный вариант пакета с ядром для установки.
Пользователи системного загрузчика grub
должны убедиться, что при обновлении ядра
была запущена команда update-grub или запустить её
вручную.
Сразу после обновления ядра вы должны установить новый udev
, чтобы уменьшить риск возникновения других
несовместимостей, которые могут возникнуть при использовании старого udev и
нового ядра [8]. Это можно сделать запустив:
# apt-get install udev
После выполнения предыдущих шагов теперь можно приступить, собственно, к
обновлению. Выполните команду:
# apt-get dist-upgrade
Замечание | |
---|---|
В других выпусках для обновления рекомендовалось использовать aptitude. Данный инструмент не рекомендуется для обновления с lenny до squeeze. |
Эта команда произведёт полное обновление системы, т.е. установку последних
доступных версий всех пакетов и разрешение всех изменившихся между выпусками
зависимостей. При необходимости будут установлены новые пакеты (обычно, это
новые версии библиотек или переименованные пакеты) и удалены все вызывающие
конфликты устаревшие пакеты.
При обновлении с набора компакт-дисков система несколько раз попросит вас
вставить в привод соответствующий диск. Возможно, вам придётся вставлять
один и тот же диск несколько раз. Это вызвано тем, что взаимосвязанные
пакеты могут находиться на разных дисках.
Новые версии уже установленных пакетов, которые нельзя обновить не меняя
состояния других пакетов, не будут установлены (программа выведет сообщение,
что пакет зафиксирован, «held back»). Разрешить ситуацию можно,
либо отметив такой пакет как подлежащий установке с помощью
aptitude, либо выполнив команду apt-get -f
install пакет
.
В следующем разделе описаны известные проблемы, которые могут возникнуть при
обновлении до squeeze.
Поддержка cryptoloop была исключена из пакетов с ядрами Linux, входящих в
Debian 6.0. Если используется cryptoloop, то перед обновлением нужно
перейти на dm-crypt.
В процессе обновления до squeeze может потребоваться удалить
пакеты. Точный список пакетов будет зависеть от набора установленных в
системе пакетов. В данном документе даны общие советы об удалении, но если
есть сомнения, то перед тем как продолжить, рекомендуется проверить все
пакеты, которые предлагаются к удалению, каждым методом.
Вот некоторые пакеты, которые обычно предлагаются к удалению: autofs
(заменён на autofs5
), dhcp3
(заменён на isc-dhcp
), madwifi-source
, python-setuptools
и python2.4
(заменён на python2.6
). Полный список устаревших пакетов в
squeeze см. Раздел 4.9, «Устаревшие пакеты».
Если работа с 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 для временного удаления
пакетов первой необходимости, если возникает циклическая зависимость при
конфликте/требовании предварительной установки. Программа
apt-get сообщит об этом и прекратит обновление. Чтобы
решить эту проблему, следует указать в командной строке
apt-get параметр -o
APT::Force-LoopBreak=1.
Возможна ситуация, когда структура зависимостей в системе может быть
настолько нарушена, что потребуется ручное вмешательство. Обычно это
делается с помощью apt-get или
# dpkg --remove имя_пакета
чтобы удалить «проблемные» пакеты или
# apt-get -f install # dpkg --configure --pending
В чрезвычайных случаях вам может потребоваться принудительная переустановка
командой типа
# dpkg --install /путь/к/имя_пакета.deb
При обновлении с «чистого» lenny конфликтов файлов
быть не должно, но они вполне возможны, если у вас установлены неофициальные
адаптации (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.
Во время обновления система будет задавать вопросы о настройке или
перенастройке некоторых пакетов. Если вас спросят, нужно ли заменить
какой-то файл в каталоге /etc/init.d
или
/etc/manpath.config
, версией, предоставленной
сопровождающим пакета, обычно следует ответить «да», поскольку
иначе будет нарушена целостность системы. Вы всегда сможете вернуть старые
настройки, потому что предыдущие файлы настройки будут сохранены с
расширением .dpkg-old
.
Если вы не знаете, что делать, запишите имя пакета или файла и разберитесь с
проблемой позднее. Информацию, выводившуюся на экран во время обновления, вы
сможете найти в файле записи программы script.
Если вы выполняете обновление через локальную системную консоль, то можете
обнаружить, что в некоторые моменты во время обновления консоль
переключается на другую и вы потеряли визуальный контроль над процессом
обновления. Например, это случается на настольных системах при перезапуске
gdm.
Чтобы восстановить консоль, на которой запущено обновление, нажмите
Ctrl+Alt+F1
для перехода обратно на виртуальный терминал 1 (если вы видите графический
экран входа в систему) или используйте Alt+F1 (если вы
видите локальную консоль в текстовом режиме). Вместо F1 нажмите
функциональную клавишу с номером виртуального терминала, в котором запущено
обновление. Также вы можете использовать Alt+стрелка влево
или Alt+стрелка
вправо для переключения между терминалами в текстовом
режиме.
В большинстве случаев пакеты lenny должны обновляться до
squeeze без проблем. Есть несколько случаев когда может потребоваться
дополнительное действие, или до, или во время обновления; они будут описаны
далее по каждому пакету отдельно.
Версия evolution (почтовый клиент GNOME Desktop) была обновлена с
2.22
до 2.30
. Из-за этого изменился
формат, который использует пакет для хранения локальных данных, и есть
вероятность потери данных, если обновление выполняется при запущенном
evolution
. Завершение приложения
может быть недостаточно,так как в фоновом режиме останутся работать его
различные компоненты. Чтобы избежать возможных проблем, рекомендуется выйти
из окружения рабочего стола перед началом обновления до squeeze.
В время обновления пакета evolution
производится проверка на отсутствие запущенных процессов и будет выдана
рекомендация их закрыть. Затем будет выполнена повторная проверка; если
потребуется, будет предложено принудительно завершить оставшиеся процессы
или прервать обновление, чтобы решить проблему вручную.
В этом разделе описано как обновить ядро и указаны потенциальные проблемы,
связанные с этим. Вы можете установить один из пакетов linux-image-*
, предоставленных Debian, или
скомпилировать ядро из исходного кода самостоятельно.
Заметим, что большая часть информации раздела основана на предположении, что
вы будете использовать одно из модульных ядер Debian вместе с initramfs-tools
и udev
. Если вы будете использовать своё
собственное ядро, которому не требуется initrd, или вы используете другой
генератор initrd, то некоторая информация может быть для вас несущественна.
При dist-upgrade с lenny до squeeze настоятельно
рекомендуется установить новый метапакет 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.6.26-2-686
, то рекомендуется установить linux-image-2.6-686
. Для выбора подходящего из
предоставляемых пакетов, вы можете также воспользоваться
apt-cache, чтобы посмотреть подробное описание каждого
пакета. Например:
# apt-cache show linux-image-2.6-686
Ядро нужно устанавливать командой apt-get install
. Чтобы
воспользоваться преимуществами новой версии ядра, следует перезагрузить
систему при первой возможности.
Для любящих приключения в Debian GNU/Linux есть лёгкий способ собрать ядро
самостоятельно. Установите пакет kernel-package
и прочтите документацию из
каталога /usr/share/doc/kernel-package
. Или же вы
можете использовать исходный код ядра из пакета linux-source-2.6
. Для сборки двоичного пакета
можно использовать цель deb-pkg
из makefile. Данные
способы имеют некоторые различия, обратитесь к документации из
соответствующих пакетов.
Если возможно, предпочтительней обновлять ядро отдельно от основной операции
dist-upgrade
, чтобы уменьшить шансы получить временно
незагружаемую систему. Заметим, что это нужно выполнять только после
процесса минимального обновления, описанного в Раздел 4.4.4, «Минимальное обновление системы».
В lenny, и более новых выпусках Debian новый механизм ядра для
обнаружения аппаратных может изменять порядок устройств, обнаруживаемых в
системе при каждой перезагрузке, что повлияет на назначенные имена
устройств. Например, если у вас есть две сетевые карты, которые работают
через разные драйверы, то устройства eth0 и eth1 могут поменяться местами.
Для сетевых устройств такое изменение исправляется определениями в
/etc/udev/rules.d/70-persistent-net.rules
из пакета
udev
. Так как эти правила уже есть в
lenny, то при обновлении до squeeze для получения
стабильного именования сетевых устройств дополнительных действий не
требуется. Однако заметим, что данный механизм udev жёстко привязывает имя
сетевого устройства с конкретным оборудованием; если вы, например, замените
адаптеры ethernet при развёртывании squeeze, то новый адаптер получит
новое имя интерфейса вместо использования существующего. Для повторного
использования сетевого имени с новым оборудованием, вам нужно удалить
соответствующую запись из
/etc/udev/rules.d/70-persistent-net.rules
.
Для устройств хранения данных можно избежать переназначения с помощью
initramfs-tools
и настройки загрузки
драйверов модулей в одном и том же порядке, в котором они загружены в данный
момент. Однако, из-за других изменений в подсистеме хранения ядра Linux,
описанных в Раздел 5.1.1, «Переход в драйверах дисков от IDE к подсистеме PATA», это обычно не даёт
желаемого эффекта, и вместо данного способа рекомендуется использовать имена
устройств, которые всегда постоянны, например псевдонимы UUID[9] из каталога /dev/disk/by-uuid/
или имена
устройств LVM из /dev/mapper/
.
Если для запуска системы используется initrd, созданный с помощью
initramfs-tools
, то в некоторых
случаях создание файлов устройств с помощью udev
происходит слишком поздно — после
отработки сценариев загрузки, которые с ними работают.
Обычно, признаком такого поведения является отказ загрузки системы из-за
невозможности смонтировать корневую файловую систему и переход в отладочную
оболочку. Но если проверить нужные устройства, то окажется, что в
/dev
всё есть. Это наблюдалось, когда корневая файловая
система была расположена на диске USB или
RAID, особенно при использовании
LILO.
Эту проблему можно решить добавив параметр загрузки
rootdelay=
. Значение задержки9
(в секундах) может потребоваться изменить.
Для подготовки к следующему выпуску после обновления можно сделать несколько
вещей.
- Удалите устаревшие и неиспользуемые пакеты как это описано в Раздел 4.9, «Устаревшие пакеты». Проверьте, какие файлы настройки они использовали и
подумайте над вычисткой пакетов вместе с их файлами настройки.
При обновлении вам предложат выбрать загрузку GRUB 2 «по цепочке»: при этом
старая версия GRUB остаётся в качестве основного системного загрузчика, но в
меню добавляется пункт для загрузки GRUB 2, который запускает систему
Debian GNU/Linux. Это позволяет проверить, что GRUB 2 работоспособен, перед тем
начать использовать его постоянно.
После того, как вы убедились, что GRUB 2 работает, вам нужно перейти на его
использование: настройка загрузки по цепочке считается временной. Для этого
запустите upgrade-from-grub-legacy.
Руководство GRUB содержит более
подробное описание различий между GRUB Legacy и GRUB 2, из-за
некоторых может потребоваться изменить сложные случаи настройки. Если вы не
изменяли настройку системного загрузчика, то вам не нужно ничего делать в
дальнейшем.
Начиная со следующего выпуска Debian GNU/Linux 7.0 (wheezy),
некоторые возможности будут исключены. Пользователям потребуется перейти на
их альтернативы, чтобы избежать проблем при обновлении до 7.0.
Это относится к следующим возможностям:
- OpenVZ и Linux-Vserver: Debian GNU/Linux 6.0 будет последним выпуском,
включающим набор для виртуализации ядра Linux, которого нет в основной ветви
ядра Linux. Это означает, что наборы OpenVZ и Linux-Vserver должны считаться
исключаемыми, и пользователи должны перейти на linux-2.6, в котором есть
различные решения для виртуализации, такие как KVM, Linux Containers или
Xen. - Пакет
gdm
(GNOME Display Manager
версии 2.20) будет заменён наgdm3
— его переписанную версию. Подробней см. Раздел 5.6, «Поддержка и изменения рабочего стола GNOME».
Вместе с появлением нескольких тысяч новых пакетов, более четырёх тысяч
пакетов из состава lenny с появлением squeeze
устаревают. Устаревшие пакеты не будут больше обновляться. Ничто не мешает
вам продолжать пользоваться этими пакетами, но приблизительно через год
после выхода squeeze проект Debian, обычно, прекращает выпускать для
них исправления[10] и больше не оказывает никакой поддержки. Рекомендуется перейти
на использование альтернативных пакетов, если есть такая возможность.
Пакет может быть удалён из дистрибутива по многим причинам: разработка
программы прекращена, пакет неинтересен никому из разработчиков Debian,
программа вытеснена другой, более функциональной программой или версией
программы, пакет содержит ошибки, из-за которых пока не может быть включён в
squeeze. В последнем случае пакет может быть доступен в
«нестабильной» ветви дистрибутива.
Определить «устаревшие» пакеты в обновлённой системе очень
легко, так как их отмечают программы управления пакетами. Если вы
используете aptitude, то полный список этих пакетов
находится в разделе «Устаревшие и локально созданные пакеты». В
программе dselect есть аналогичный раздел, но список
пакетов в нём может несколько отличаться.
Также, если в lenny вы использовали aptitude
или apt-get для установки пакетов вручную, то этот факт
был запомнен, и поэтому будут помечены как устаревшие только те пакеты,
которые были установлены только для удовлетворения зависимостей и которые
больше не нужны, если пакет, который от них зависел, был удалён. По
сравнению от deborphan, aptitude и
apt
не помечает устаревшими пакеты,
которые вы установили вручную, в отличие от тех, которые были установлены
автоматически для удовлетворения зависимостей. Для удаления автоматически
установленных пакетов, которые больше не используются, запустите:
# apt-get autoremove
Существуют и другие инструменты для определения неиспользуемых пакетов,
например, deborphan, debfoster и
cruft. Советуем использовать
deborphan, хотя по умолчанию он ищет только ненужные
библиотеки (пакеты в секциях «libs
» и
«oldlibs
», от которых не зависит ни один
другой пакет). Не удаляйте подряд все пакеты, найденные такими инструментами
(в особенности, если при запуске вы указали параметры, отличные от
умолчательных), чтобы не удалить что-нибудь нужное. Настоятельно рекомендуем
перед удалением внимательно просмотреть список предложенных пакетов
(прочесть описание, посмотреть входящие файлы и размер).
В системе отслеживания ошибок Debian зачастую
содержится дополнительная информация о причинах удаления пакета. Просмотрите
архив сообщений об ошибках интересующего вас пакета, а также архивированные
ошибки на псевдо-пакет
ftp.debian.org.
Список устаревших пакетов:
- Набор управления содержимым
plone
. Сделано по запросу разработчиков, которые
используют Unified Installer для Linux, который они рассматривают как
единственную поддерживаемую платформу развёртывания. Рекомендуемым
инструментов для установки Plone на Debian GNU/Linux является Unified Installer,
доступный с https://plone.org/ - Сканирующий на уязвимости сервер
nessus
, связанные с ним библиотеки и другое
ПО. Исключён в пользу ПО, предоставляемого OpenVAS,openvas-server
иopenvas-client
. Автоматического способа
обновления нет, установите OpenVAS и вручную перенесите настройки службы
Nessus (учётные записи, сертификаты и т.д.) в OpenVAS. - Вместо
postgresql-8.3
предлагается
использоватьpostgresql-8.4
. - Вместо
mysql-server-5.0
предлагается
использоватьmysql-server-5.1
. - Вместо
python2.4
предлагается
использоватьpython2.6
. - Набор Java 5, состоящий из пакетов
sun-java5-jre
иsun-java5-bin
, заменён на Java 6:sun-java6-jre
и соответствующими пакетами. - Пакет
apt-proxy
больше не
предоставляется, в качестве альтернативы можно использоватьapt-cacher-ng
,apt-cacher
иapprox
. Автоматического способа обновления нет,
пользователямapt-proxy
нужно
самостоятельно установить один из предлагаемых пакетов. - Некоторых видео-драйверов Xorg нет в squeeze из-за устаревания. Сюда
входят:xserver-xorg-video-cyrix
,
xserver-xorg-video-i810
,xserver-xorg-video-imstt
,xserver-xorg-video-nsc
,xserver-xorg-video-sunbw2
иxserver-xorg-video-vga
. Они могут быть удалены
при обновлении. Вместо них пользователи должны установить пакетxserver-xorg-video-all
. - Утилита
usplash
, используемая в
lenny для показа графической заставки при загрузке, больше
недоступна. Она заменена пакетомplymouth
.
Многие пакеты из lenny в squeeze были разделены на
несколько пакетов, чаще всего, для облегчения сопровождения системы. Для
простоты обновления в состав squeeze нередко входит
«пакет-пустышка» (пустой пакет с именем старого пакета из
lenny). При установке такого пакета устанавливаются новые пакеты
по зависимостям. Сразу же после установки, «пустышки»
становятся неиспользуемыми и их можно спокойно удалять.
В описании большинства (но не всех) пакетов-пустышек ясно указано их
предназначение. К сожалению, никаких правил для описания пустышек нет,
поэтому для их обнаружения вам может пригодиться
deborphan с параметром
--guess-
. Некоторые пустышки*
удалять после обновления не нужно, так как они впоследствии используются для
определения установленной версии программы.
[4] Если приоритет debconf установлен в самый высокий уровень, то ответов на
вопросы о настройке можно избежать, но возможна ситуация, при которой ответы
по умолчанию могут оказаться некорректны в вашей системе и службы могут не
запуститься.
[5] Например: службы DNS или DHCP, особенно когда не предусмотрены резервные
серверы. В отсутствии DHCP пользователи могут быть отключены от сети, если
время аренды меньше чем время, затрачиваемое на обновление.
[6] Эту возможность можно выключить, добавив параметр panic=0
в параметры загрузки.
[7] Обычно, система управления пакетами Debian не позволяет пакету удалить или
заменить файл, принадлежащий другому пакету, за исключением случаев, когда
явно указано, что один пакет заменяет другой.
[8] Также известны несовместимости старого ядра и нового udev
. Если у вас возникли проблемы после
перезагрузки с новым ядром, установите старую версию udev
, чтобы использовать старое ядро.
[9] Некоторые устройства, используемые в crypt, RAID или LVM, имеют постоянные
не UUID-идентификаторы. В этих случаях вам нужно использовать имена
устройств, которые уже определены и постоянны.
[10] Или при появлении нового выпуска Debian. Обычно поддержку получают
одновременно не более двух стабильных выпусков.
Просмотров: 1337