Глава 4. Обновление с предыдущих выпусков

Содержание

4.1. Подготовка к обновлению
4.1.1. Создание резервной копии всех данных и настроек
4.1.2. Предварительное информирование пользователей
4.1.3. Подготовка к восстановлению
4.1.4. Подготовка безопасного окружения для обновления
4.1.5. Подготовка initramfs для LILO
4.2. Проверка состояния системы
4.2.1. Просмотр отложенных действий менеджера пакетов
4.2.2. Отключение фиксации в APT
4.2.3. Проверка состояния пакетов
4.2.4. Секция proposed-updates
4.2.5. Неофициальные источники и адаптации (backports)
4.3. Снятие пометки с пакетов вручную
4.4. Подготовка источников APT
4.4.1. Добавление интернет-источников в APT
4.4.2. Добавление локального зеркала в качестве источника APT
4.4.3. Добавление компакт-диска или DVD в качестве источника APT
4.5. Обновление пакетов
4.5.1. Запись сеанса
4.5.2. Обновление списка пакетов
4.5.3. Проверка доступного пространства для обновления
4.5.4. Приоритетное обновление apt и/или aptitude
4.5.5. Использование списка aptitude для автоматически установленных пакетов в apt
4.5.6. Минимальное обновление системы
4.5.7. Обновление остальной системы
4.5.8. Возможные проблемы во время обновления
4.6. Обновление ядра и сопутствующих пакетов
4.6.1. Установка метапакета ядра
4.6.2. Переопределение нумерации устройств
4.6.3. Проблемы с синхронизацией при загрузке
4.7. Перед перезагрузкой
4.7.1. Перезапуск lilo
4.8. Если загрузка системы останавливается на сообщении Waiting for root file system
4.8.1. Как избежать проблемы перед обновлением
4.8.2. Как решить проблему после обновления
4.9. Подготовка к следующему выпуску
4.10. Устаревшие пакеты
4.10.1. Пакеты-пустышки

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

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

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

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

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

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

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

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

4.1.1.1. Выбор подходящего ядра

Версия glibc в lenny не заработает с ядрами старее чем 2.6.8 на любой архитектуре, а для некоторых архитектур требования ещё выше. Мы настоятельно советуем обновить и протестировать ядро версии 2.6.18 или 2.6.24 из etch или самосборное ядро версии 2.6.18 до начала процесса перехода на новую версию дистрибутива.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

4.1.5. Подготовка initramfs для LILO

Для пользователей, использующих LILO в качестве системного загрузчика, заметим, что при настройках initramfs-tools по умолчанию теперь генерируется initramfs, который слишком большой для загрузки из LILO. В этом случае необходимо, или перейти на использование grub, или отредактировать файл /etc/initramfs-tools/initramfs.conf, изменив строку

MODULES=most

на

MODULES=dep

Однако, заметим, что при такой настройке initramfs-tools будет устанавливать в initramfs только те модули, которые требуются для аппаратного обеспечения данной системы; если вы захотите создать загрузочный носитель, который должен работать на большем количестве аппаратного обеспечения, чем имеется при сборке, оставьте строку

MODULES=most

и убедитесь, что не используете LILO.

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

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

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

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

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

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

Для выполнения этой проверки запустите 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, чтобы отменить фиксацию.

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

4.2.4. Секция proposed-updates

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

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

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

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

4.2.5.1. Использование пакетов с backports.org

backports.org — это полуофициальный репозиторий разработчиков Debian GNU/Linux, который предоставляет современные версии пакетов для стабильного выпуска, пересобранные из пакетов «тестируемого» архива.

В репозитории backports.org, в основном, содержатся пакеты из «тестируемого» выпуска, но с уменьшенными версиями, что позволяет обновляться с etch на lenny. Однако, есть несколько пакетов собранных из нестабильной ветви: обновления безопасности и следующие исключения: Firefox, ядро Linux, OpenOffice.org и X.Org.

If you do not use one of these exceptions, you can safely upgrade to lenny. If you use one of these exceptions, set the Pin-Priority (see apt_preferences(5)) temporarily to 1001 for all packages from lenny, and you should be able to do a safe dist-upgrade too.

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

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

# aptitude unmarkauto openoffice.org vim

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

# aptitude unmarkauto $(dpkg-query -W 'linux-image-2.6.*' | cut -f1)
[Замечание]Замечание

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

# aptitude search '~i~M'

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

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

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

[Подсказка]Подсказка

Вам может потребоваться добавить исключение проверки GPG для DVD и CD-ROM дисков. Добавьте следующую строку в /etc/apt/apt.conf, если её уже нет в /etc/apt/apt.conf.d/00trustcdrom:

APT::Authentication::TrustCDROM "true";

Однако это не сработает для файлов образов DVD/CD-ROM.

На выпуск Debian часто ссылаются по его кодовому имени (например, etch, lenny) или по его статусу (например, 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. Просматривая содержимое зеркала веб-браузером или FTP-клиентом, можно заметить, что основные каталоги организованы следующим образом:

http://mirrors.kernel.org/debian/dists/lenny/main/binary-amd64/...
http://mirrors.kernel.org/debian/dists/lenny/contrib/binary-amd64/...

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

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

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

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

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

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

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

/var/ftp/debian/dists/lenny/main/binary-amd64/...
/var/ftp/debian/dists/lenny/contrib/binary-amd64/...

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

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

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

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

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

Если вы хотите использовать только компакт-диски, закомментируйте все присутствующие в файле /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) ссылаются, либо на lenny, либо на stable. Не должно быть источников, указывающих на etch.

[Замечание]Замечание

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

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

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

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

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

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

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

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

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

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

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

# aptitude update

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

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

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

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

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

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

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

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

  • Удалить забытые пакеты. Если у вас установлен пакет popularity-contest, то с помощью команды popcon-largest-unused можно получить список пакетов, которые вы не используете в системе и которые занимают наибольшее количество места. Также вы можете использовать deborphan или debfoster, чтобы найти устаревшие пакеты (см. Раздел 4.10, «Устаревшие пакеты»). Ещё вы можете запустить aptitude в «интерактивном режиме» и найти устаревшие пакеты в меню «Устаревшие и пакеты, созданные локально».

  • Удалить пакеты, которые занимают слишком много места и в которых нет срочной необходимости (вы всегда можете переустановить их после обновления). Список пакетов, которые занимают большую часть дискового пространства, можно получить с помощью программы dpigs (из пакета debian-goodies) или wajig (запустив wajig size).

    You can list packages that take up most of the disk space with aptitude. Start aptitude into «visual mode», select ViewsNew Flat Package List (this menu entry is available only after etch version), press l and enter ~i, press S and enter ~installsize, then it will give you nice list to work with. Doing this after upgrading aptitude should give you access to this new feature.

  • Удалить переводы и файлы локализации из системы, если они ненужны. Вы можете установить и настроить пакет 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.

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

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

4.5.4. Приоритетное обновление apt и/или aptitude

Several bug reports have shown that the versions of the aptitude and apt packages in etch are often unable to handle the upgrade to lenny. In lenny, apt is better at dealing with complex chains of packages requiring immediate configuration and aptitude is smarter at searching for solutions to satisfy the dependencies. These two features are heavily involved during the dist-upgrade to lenny, so it is necessary to upgrade these two packages before upgrading anything else.

The following command will upgrade both aptitude and apt:

# aptitude install aptitude apt dpkg

This step will also automatically upgrade libc6 and locales. At this point, some running services will be restarted, including xdm, gdm and kdm. As a consequence, local X11 sessions might be disconnected.

[Замечание]Upgrading with apt

Please note that using apt-get is not recommended for the upgrade from etch to lenny. If you do not have aptitude installed you are recommended to install it first.

If you want to perform the upgrade with apt or if the upgrade with aptitude failed and you want to try the upgrade with apt' dependency chain resolution algorithm, you should run:

# apt-get install apt

Note that you will have to adapt other aptitude commands to use apt-get instead.

4.5.5. Использование списка aptitude для автоматически установленных пакетов в apt

aptitude поддерживает список пакетов, которые были установлены автоматически (например, для других пакетов из-за зависимостей). В lenny это свойство появилось и у apt.

При первом запуске версия aptitude из lenny прочитает список автоматически установленных пакетов и преобразует его для работы apt из lenny. Если у вас установлен aptitude, то вам нужно запустить команду aptitude хотя бы один раз для выполнения преобразования. Одним из способов это сделать является поиск несуществующего пакета:

# aptitude search "?false"

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

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

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

# aptitude safe-upgrade

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

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

Вот некоторые пакеты, которые обычно предлагаются к удалению: base-config, hotplug, xlibs, netkit-inetd, python2.3, xfree86-common и xserver-common. Полный список устаревших пакетов в lenny см. Раздел 4.10, «Устаревшие пакеты».

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

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

# aptitude dist-upgrade

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

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

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

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 /путь/к/имя_пакета.deb

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

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

При dist-upgrade с etch до lenny настоятельно рекомендуется установить новый метапакет 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.18-6-686', то рекомендуется установить linux-image-2.6-686. (Заметим, что варианта k7 больше не существует; если в данный момент вы пользуетесь вариантом ядра k7, то вместо него должны установить вариант 686.) Для выбора подходящего из предоставляемых пакетов, вы можете также воспользоваться apt-cache, чтобы посмотреть подробное описание каждого пакета. Например:

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

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

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

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

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

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

Изменений в нумерации сетевых устройств можно избежать с помощью правил udev через определения в файле /etc/udev/rules.d/70_persistent-net.rules[4]. Или же вы можете воспользоваться утилитой ifrename, чтобы при загрузке системы к устройствам привязывались определённые имена. Подробней см. в ifrename(8) и iftab(5). Эти два метода (udev и ifrename) не должны использоваться одновременно.

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

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

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

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

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

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

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

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

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

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

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

4.7.1. Перезапуск lilo

Если в качестве системного загрузчика используется lilo (загрузчик по умолчанию некоторых установок etch), то настоятельно рекомендуется перезапустить lilo после обновления:

# /sbin/lilo

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

Также, просмотрите содержимое файла /etc/kernel-img.conf и убедитесь, что в нём есть строчка do_bootloader = Yes. Благодаря ей системный загрузчик будет перезапускаться каждый раз после обновления ядра.

Если возникли какие-то проблемы при запуске lilo, проверьте символические ссылки на vmlinuz и initrd в /, а также содержимое файла /etc/lilo.conf на соответствие с ними.

Если вы забудете перезапустить lilo перед перезагрузкой, или система случайно перезагрузится до того как вы смогли сделать это вручную, система может больше не загрузиться. При запуске системы вместо приглашения вы увидите только LI[5]. Для восстановления работоспособности обратитесь к Раздел 4.1.3, «Подготовка к восстановлению».

4.8. Если загрузка системы останавливается на сообщении Waiting for root file system

Процедура восстановления, если /dev/hda стал /dev/sda

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

В этом случае загрузка системы будет останавливаться на таком сообщении:

Waiting for root file system ...

и через несколько секунд выводится приглашение busybox.

Эта проблема может возникать, если при обновлении ядра начинает использоваться новое поколение IDE драйверов. В старых драйверах дискам назначались имена hda, hdb, hdc, hdd. Новые драйверы дают им, соответственно, следующие имена: sda, sdb, sdc, sdd. Проблема возникает, когда при обновлении не создаётся новый файл /boot/grub/menu.lst с новыми именами дисков. Во время загрузки, Grub передаст корневой раздел системы ядру, который ядро не сможет найти.

Если вы столкнулись с этой проблемой при обновлении перейдите в Раздел 4.8.2, «Как решить проблему после обновления». Чтобы избежать этой проблемы перед обновлением, читайте дальше.

4.8.1. Как избежать проблемы перед обновлением

Можно полностью избежать этой проблемы, если использовать идентификатор для корневой файловой системы, который не изменяется при перезагрузках. Есть два способа достичь этого: с помощью меток файловой системы, или используя универсальный уникальный идентификатор файловой системы (UUID). Эти способы поддерживаются в Debian начиная с выпуска etch.

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

В примерах далее мы предполагаем, что корневая файловая система располагается на /dev/hda6. Также предполагается, что используется udev и файловые системы ext2 или ext3.

Чтобы реализовать подход через метки:

  1. Задайте метку файловой системе (имя должно быть менее 16 символов) с помощью команды: e2label /dev/hda6 rootfilesys

  2. Отредактируйте /boot/grub/menu.lst и измените строку:

    # kopt=root=/dev/hda6 ro

    на

    # kopt=root=LABEL=rootfilesys ro

    [Замечание]Замечание

    Не удаляйте символ # из начала строки, он нужен.

  3. Обновите строки kernel в menu.lst, запустив команду update-grub.

  4. Отредактируйте /etc/fstab и измените строку, которая монтирует раздел /, например:

    /dev/hda6     /     ext3  defaults,errors=remount-ro 0 1

    на

    LABEL=rootfilesys     /     ext3  defaults,errors=remount-ro 0 1

    Здесь изменяется только первая колонка, остальные не затрагиваются.

Чтобы реализовать подход через UUID:

  1. Find out the universally unique identifier of your filesystem by issuing: ls -l /dev/disk/by-uuid | grep hda6. You can also use vol_id --uuid /dev/hda6 (in etch) or blkid /dev/hda6 (if already upgraded to lenny).

    У вас должна отобразиться строчка вида:

    lrwxrwxrwx 1 root root 24 2008-09-25 08:16 d0dfcc8a-417a-41e3-ad2e-9736317f2d8a -> ../../hda6

    UUID — это символическая ссылка на /dev/hda6, то есть: d0dfcc8a-417a-41e3-ad2e-9736317f2d8a.

    [Замечание]Замечание

    Для вашей файловой системы UUID будет иметь другое значение.

  2. Отредактируйте /boot/grub/menu.lst и измените строку:

    # kopt=root=/dev/hda6 ro

    на

    # kopt=root=UUID=d0dfcc8a-417a-41e3-ad2e-9736317f2d8 ro

    [Замечание]Замечание

    Не удаляйте символ # из начала строки, он нужен.

  3. Обновите строки kernel в menu.lst, запустив команду update-grub.

  4. Отредактируйте /etc/fstab и измените строку, которая монтирует раздел /, например:

    /dev/hda6     /     ext3  defaults,errors=remount-ro 0 1

    на

    UUID=d0dfcc8a-417a-41e3-ad2e-9736317f2d8  /  ext3  defaults,errors=remount-ro 0 1

    Здесь изменяется только первая колонка, остальные не затрагиваются.

4.8.2. Как решить проблему после обновления

4.8.2.1. Способ 1

В данном способе используется меню Grub, в котором отображаются варианты загрузки. Если такое меню не появляется, попробуйте нажать клавишу Esc до того, как ядро начнёт загружаться. Если вы не смогли получить это меню, попробуйте Раздел 4.8.2.2, «Способ 2» или Раздел 4.8.2.3, «Способ 3».

  1. В меню Grub выделите пункт с системой, которую хотите загрузить. Нажмите клавишу e, чтобы отредактировать параметры данного пункта. Вы увидите что-то вроде:

    root (hd0,0)
    kernel /vmlinuz-2.6.26-1-686 root=/dev/hda6 ro
    initrd /initrd.img-2.6.26-1-686

  2. Выделите строку

    kernel /vmlinuz-2.6.26-1-686 root=/dev/hda6 ro

    нажмите клавишу e и замените hdX на sdX (под X подразумевается буква a, b, c или d, в зависимости от системы). Для нашего примера строка станет:

    kernel /vmlinuz-2.6.26-1-686 root=/dev/sda6 ro

    Затем нажмите Enter, чтобы сохранить изменения. Если в других строках есть hdX, то измените и их. Не изменяйте строки с root (hd0,0). После внесения всех изменений, нажмите клавишу b. Ваша система должна загрузиться как обычно.

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

4.8.2.2. Способ 2

Загрузитесь с установочного носителя Debian GNU/Linux (CD/DVD) и в появившемся приглашении к загрузке наберите rescue для запуска режима восстановления. Выберите язык, расположение, клавиатурную раскладку, результат настройки сети не важен. После этого вас попросят выбрать раздел, который вы хотели бы использовать в качестве корневой файловой системы. Предлагаемый выбор будет выглядеть, например, так:

/dev/ide/host0/bus0/target0/lun0/part1
/dev/ide/host0/bus0/target0/lun0/part2
/dev/ide/host0/bus0/target0/lun0/part5
/dev/ide/host0/bus0/target0/lun0/part6

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

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

Теперь вы должны получить доступ к оболочке, права суперпользователя root и смонтированную корневую файловую систему в /target. Вам нужен доступ к содержимому каталогов /boot, /sbin и /usr жёсткого диска, которое сейчас должно быть доступно в /target/boot, /target/sbin и /target/usr. Если к этим каталогам нужно подмонтировать другие разделы — сделайте это (если не помните, что нужно монтировать, посмотрите в /etc/fstab).

Перейдите к Раздел 4.8.1, «Как избежать проблемы перед обновлением» и выполните одну из двух предложенных процедур. Затем наберите exit чтобы выйти из оболочки восстановления и выберите Перезагрузка для перезагрузки системы (не забудьте удалить загрузочный носитель).

4.8.2.3. Способ 3

  1. Загрузите любимый дистрибутив LiveCD, например, Debian Live, Knoppix или Ubuntu Live.

  2. Смонтируйте раздел, на котором находится каталог /boot. Если не знаете какой выбрать, воспользуйтесь выводом команды dmesg для определения диска с именем hda, hdb, hdc, hdd или sda, sdb, sdc, sdd. После выяснения нужного диска, например, sdb, выполните следующую команду для вывода таблицы разделов диска в поисках нужного раздела: fdisk -l /dev/sdb.

  3. Предполагая, что вы смонтировали нужный раздел в каталог /mnt и этот раздел содержит каталог /boot с своими файлами, отредактируйте файл /mnt/boot/grub/menu.lst.

    Найдите секцию, похожую на эту:

    ## ## End Default Options ##
    
    title           Debian GNU/Linux, kernel 2.6.26-1-686
    root            (hd0,0)
    kernel          /vmlinuz-2.6.26-1-686 root=/dev/hda6 ro
    initrd          /initrd.img-2.6.26-1-686
    
    title           Debian GNU/Linux, kernel 2.6.26-1-686 (single-user mode)
    root            (hd0,0)
    kernel          /vmlinuz-2.6.26-1-686 root=/dev/hda6 ro single
    initrd          /initrd.img-2.6.26-1-686
    
    ### END DEBIAN AUTOMAGIC KERNELS LIST

    и замените все hda, hdb, hdc, hdd на, соответственно, sda, sdb, sdc, sdd. Не изменяйте строки, похожие на:

    root            (hd0,0)

  4. Перезагрузите систему, вытащите LiveCD и система должна запуститься корректно.

  5. После загрузки выполните одну из двух предложенных процедур в Раздел 4.8.1, «Как избежать проблемы перед обновлением» для исправления этой проблемы навсегда.

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

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

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

    # aptitude unmarkauto $(dpkg-query -W 'linux-image-2.6-*' | cut -f1)
    
  • Удалите устаревшие и неиспользуемые пакеты как это описано в Раздел 4.10, «Устаревшие пакеты». Проверьте, какие файлы настройки они использовали и подумайте над вычисткой пакетов вместе с их файлами настройки.

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

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

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

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

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

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

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

The list of obsolete packages includes:

  • вместо apache (1.x) предлагается использовать apache2

  • bind (8), successor is bind9

  • вместо php4 предлагается использовать php5

  • вместо postgresql-7.4 предлагается использовать postgresql-8.1

  • exim (3), successor is exim4

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

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

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



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

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

[4] Для обеспечения постоянства имён сетевых интерфейсов эти правила автоматически создаются сценарием /etc/udev/rules.d/75_persistent-net-generator.rules. Удаление данной символической ссылки выключит постоянство в именах сетевых интерфейсов (NIC) в udev.

[5] Подробней о кодах ошибок lilo смотрите The Linux Bootdisk HOWTO.

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