Сразу устанавливайте apt-listchanges перед переходом на Stretch. Без этого потеряете из виду критичные уведомления от пакетов. Никто вас не предупредит – получите баг на ровном месте. Особенно касается серверов с кастомными конфигурациями.
Уберите backports из sources.list до начала. Не уследите – потянется несовместимая зависимость. Потом ищите, кто виноват. Официальные зеркала Jessie и Stretch кардинально различаются по составу бинарей.
Отключите все сторонние репозитории. Все до одного. Любая лишняя строка – потенциальная точка сбоя. Хотите лишиться boot-загрузки из-за libpng? Пожалуйста. Особенно если используете старые DEB-пакеты, собранные вручную.
Внимание! Перед сменой версии сделайте полный снимок системы через
rsyncилиclonezilla. Не думайте, что не пригодится. Пригодится.
Среди изменений – переход на MariaDB по умолчанию. Кто не уследил – остался без MySQL. Конфликты в миграции конфигов, проблемы с пользовательскими правами, несовместимость с кастомными скриптами. Проверяйте: systemctl status mariadb – должно быть зелёным. Нет – вы в ловушке.
udev пересобран. Изменены правила именования сетевых интерфейсов. Привычный eth0 может превратиться в enp0s3. Сломается всё, где жёстко прописан MAC или имя. Скрипты – в мусор. Проверьте /etc/network/interfaces и перезапустите networking.service вручную.
Переход с Python 2.x на Python 3.x в приоритете. Половина обвязки скриптов в системах мониторинга – устарела. Проверяйте shebang в своих bash-обвязках. Старый /usr/bin/python больше не гарантирует обратную совместимость. Кто не переписал – потерял контроль над логикой.
Важно помнить: большинство конфликтов после перехода – результат человеческой халатности в конфигурациях. Не обновляйте на живом проде без стендовых тестов.
В systemd появились жёсткие таймауты и изменения в логике journalctl. Не читаете логи – не управляете ситуацией. Да, всё по-другому. Автоматические таймауты на юниты, логика перезапуска служб – обновлена. Проверьте свои unit-файлы. Ваша конфигурация – больше не гарантия загрузки.
Содержание статьи
Как безопасно выполнить обновление с Debian 8 до Debian 9
Сначала отключите все сторонние репозитории в /etc/apt/sources.list и в /etc/apt/sources.list.d/. Оставьте только официальные URL Jessie. Всё остальное – бомба замедленного действия.
Проверьте, нет ли сломанных пакетов:
dpkg --audit
apt-get check
apt-mark showhold
Найдёте хоть что-то – чините сразу. С переходом будет хуже.
Проверьте статус systemd:
systemctl list-units --failed
Любая мёртвая служба до смены версии – это потенциальный отказ на старте после перезагрузки.
Снимите слепок корневой точки:
rsync -aAXv / /mnt/backup --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"}
Важно! Никогда не используйте live-сервер для перехода без полной копии. Откат невозможен.
Далее: замените Jessie на Stretch в /etc/apt/sources.list.
sed -i 's/jessie/stretch/g' /etc/apt/sources.list
Обновите индекс пакетов:
apt-get update
Установите aptitude, если его нет. Он точнее определяет конфликты.
Установите минимальный набор:
apt-get upgrade
А теперь – всё остальное:
apt-get dist-upgrade
Очистите остатки:
apt-get autoremove
apt-get autoclean
Завершите перезагрузкой:
reboot
Помните! После первого запуска проверьте
dmesgиjournalctl -p err. Не доверяйте внешнему виду – интерфейс может подняться, а служба упасть в тихом режиме.
Дополнительно: проверьте /etc/apt/preferences и наличие ручных пинов. Это может блокировать нужные версии и ломать зависимость. Ловушка для невнимательных.
Что изменилось в системе управления пакетами APT в Debian 9
apt install nginx
Теперь показывает зависимости, объём загрузки, сохраняет цветовую схему. Меньше шансов пропустить важную информацию. Да, apt-get остался, но он – пережиток. Не нужен без крайней необходимости.
Добавлена защита от неконтролируемого удаления. Случайный apt remove --purge больше не убьёт половину окружения. Покажет предупреждение. Если игнорируете – сами виноваты.
Изменения в файлах настроек apt.conf и preferences. Теперь используется более строгая проверка формата. Ошибка в синтаксисе – полный отказ запуска. Проверяйте через:
apt-config dump
Да, раньше прокатывало. Теперь – нет.
Добавлен параметр apt autoremove --purge. Теперь можно чистить вместе с конфигами без dpkg --purge. Ускоряет обслуживание. Примерно так:
apt autoremove --purge
Система кэширования изменилась. По умолчанию теперь не сохраняются устаревшие версии DEB-файлов. Меньше мусора в /var/cache/apt/archives. Но если вы используете локальный прокси или зеркала – это может стать проблемой.
Важно помнить: если у вас собственный кэш-сервер или проксирующий apt-cacher-ng, проверьте его совместимость. Поведение изменилось. Ломаются привычные схемы доставки пакетов.
Новый формат выхода при apt list --upgradable. Теперь включает больше данных, но не подходит для скриптов. Хардкорщики, которые парсили его через awk или cut, получат сбой. Используйте apt list --upgradable -qq для машинной обработки.
Формат логов /var/log/apt/history.log обновлён. Больше данных, но менее пригоден для grep без фильтров. Да, визуально удобно. Но автоматизация рвёт зубы. Проверьте свои скрипты мониторинга.
Помните! Новая версия APT агрессивнее в отношении неподписанных репозиториев. Отказ без уведомления. Проверьте ключи GPG. Без них – тишина и пустота.
Добавлена поддержка параллельной загрузки пакетов:
Acquire::Queue-Mode "access";
Вставьте в /etc/apt/apt.conf.d/99parallel – ускорите доставку. Но не переборщите: слабые CPU или медленные диски начнут задыхаться при множестве параллельных процессов.
Поддержка нового оборудования и драйверов в Debian 9
Ставьте ядро минимум 4.9. Всё ниже – бесполезный балласт. Именно с этим релизом начинается полноценная работа с современными чипсетами Intel, контроллерами NVMe и графикой от AMD поколения Polaris.
Проверьте текущее ядро:
uname -r
Если ниже – обновляйте вручную:
apt install linux-image-4.9.0-16-amd64
Теперь по железу. Самые ощутимые сдвиги:
- Wi-Fi: Модуль iwlwifi обновлён. Добавлена поддержка Intel 7265, 8260, 3168. Без backports. Работает из коробки. Но без
firmware-iwlwifi– пустота. Установите пакет вручную:
apt install firmware-iwlwifi
- Видео: Встроенные графические ядра Intel (6-е и 7-е поколения Skylake/Kaby Lake) работают стабильно. Но требуются
intel-microcodeиfirmware-misc-nonfree. AMD – черезxf86-video-amdgpu, вместо radeon. Проверяйте Xorg лог, ищите строку:
(II) AMDGPU(0): [KMS]
- NVMe: Контроллеры Samsung 960 EVO и подобные – поддержка появилась. Старые версии ядра игнорировали их как SATA-призраков. Теперь доступ к ним как к полноценным блочным устройствам:
lsblk | grep nvme
- USB: Контроллеры xHCI ревизии 1.1 работают корректно. Проблемы с подгрузкой модулей решены. Пакет
usbutils– для диагностики. Не установлен? Установите.
apt install usbutils
- Звук: Поддержка HDA-кодеков обновлена. Особенно Realtek ALC2xx. Работает только при наличии
firmware-realtek. Не ставите – нет звука. Всё просто.
Внимание! Без
non-freeрепозитория большая часть встроенного железа не стартует. Добавьте его в/etc/apt/sources.list, иначе будете воевать с чёрным экраном.
Проверка прошивки на загрузке:
dmesg | grep -i firmware
Если видите failed to load – система не получила нужный blob. Решение – найти соответствующий пакет и установить его вручную. Или собрать прошивку из исходников. Удачи.
Сетевые адаптеры Realtek RTL8111/8168 теперь обрабатываются natively через r8169. В теории. На практике – лаги, обрывы, высокий ping. Решение:
- Удалить r8169:
modprobe -r r8169 - Скачать и собрать r8168-dkms:
apt install r8168-dkms - Заблокировать r8169:
echo "blacklist r8169" >> /etc/modprobe.d/blacklist.conf
Важно помнить: если оборудование не определяется – это не баг, это вы что-то не дочитали. Начинайте с
lspciиlsmod. Без этого вы слепы.
Как настроить систему после обновления для стабильной работы
Сначала – перегенерация initramfs. Старый образ может содержать модули, уже не совместимые с текущим ядром. Запускаем:
update-initramfs -u -k all
Далее – проверьте конфигурацию загрузчика. GRUB часто затирается при пересборке. Открываем /etc/default/grub, проверяем параметры GRUB_CMDLINE_LINUX и GRUB_TIMEOUT. После правки:
update-grub
Перепроверьте сетевые интерфейсы. Названия могли смениться с eth0 на enp0s3 или подобные. Не работают сервисы? Первым делом смотрите:
ip link show
А потом конфиг /etc/network/interfaces и /etc/systemd/network/, если вы используете systemd-networkd.
Теперь – автозапуск. Проверьте systemctl list-unit-files | grep enabled. Там часто остаются неиспользуемые демоны, поднятые по инерции. Не нужно – отключайте:
systemctl disable apache2
Внимание! Оставленные лишние службы – дыры в безопасности. Особенно если открыт наружный порт, а вы об этом забыли.
Далее – проверка зависимостей. Удаляем пакеты, оставшиеся как мусор:
apt autoremove
Проверка конфигураций. Сравнивайте вручную. Используйте diff или vimdiff для просмотра конфликтов в /etc. Особенно важно проверить:
/etc/ssh/sshd_config/etc/fstab/etc/cron.*/etc/systemd/system/
Проверьте планировщик заданий. Cron может быть заменён на systemd timers, и старые задачи не будут исполняться. Ищите совпадения, проверяйте наличие таймеров:
systemctl list-timers
Права. Раз в год и палка стреляет, а sudo ломается. Проверяйте файл /etc/sudoers и группы пользователей:
getent group sudo
Важно помнить: после смены базовых библиотек многие утилиты могут вести себя иначе. Скрипты, работавшие годами, теперь молча падают. Проверяйте вручную. Тестируйте всё, что связано с автоматикой.
Логирование. Настройте logrotate и убедитесь, что rsyslog или journald не накапливают гигабайты мусора. Смотрим статус:
journalctl --disk-usage
Если выше 500M – чистим:
journalctl --vacuum-size=200M
Проверка безопасности: пересканируйте систему на открытые порты.
ss -tulnp
Ничего подозрительного? Отлично. Есть сюрпризы – ищите в /lib/systemd/system/ или в /etc/rc.local, если он ещё не вырезан.
Финал: перезапуск всей службы cron, ssh, nginx, или любой, что участвует в вашей схеме доступа и расписаний. Не перезапустили – работаем на авось.

