Рубрики
Работа

Обновление Debian 7 Wheezy до 8 Jessie и далее до 9 Stretch в 2020 году

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

1. Резервная копия

Тут по вкусу, я просто сделал снапшот системы перед всеми последующими действиями. Для восстановления хватило бы сделать mysqldump --all-databases, сохранить /etc и /var/www и унести это всё на внешний носитель.

2. Обновление Wheezy до актуального состояния

Перед началом нужно обновить Wheezy. Репозитории с 2018 переехали в архив, поэтому /etc/apt/sourcel-list надо поправить.

deb http://archive.debian.org/debian/ wheezy main
deb-src http://archive.debian.org/debian/ wheezy main

deb http://archive.debian.org/debian-security wheezy/updates main

Обновляем пакеты

apt-get update

Получаем вот такую ошибку

E: Release file for http://archive.debian.org/debian-security/dists/wheezy/updates/Release is expired (invalid since 337d 14h 7min 18s). Updates for this repository will not be applied.

Устраняем

echo "Acquire::Check-Valid-Until false;" | tee -a /etc/apt/apt.conf.d/10-nocheckvalid

Повторяем

apt-get update

apt-get upgrade

Удостоверимся, что все пакеты установились корректно

dpkg --audit
dpkg --get-selections | grep hold

Эти команды должны выполниться без какого-либо вывода. Пусто — едем дальше.

3. Обновляем до Jessie

Снова правим /etc/apt/sources-list

deb http://ftp.debian.org/debian/ jessie main
deb-src http://ftp.debian.org/debian/ jessie main

deb http://security.debian.org/debian-security jessie/updates main

deb http://security.debian.org/ jessie/updates main
deb-src http://security.debian.org/ jessie/updates main

#jessie-updates, previously known as 'volatile'
deb http://ftp.debian.org/debian/ jessie-updates main
deb-src http://ftp.debian.org/debian/ jessie-updates main

Попытка обновить данные пакетов дает ошибку

# apt-get update
Get:1 http://ftp.debian.org jessie Release.gpg [1652 B]
Get:2 http://ftp.debian.org jessie-updates Release.gpg [833 B]
Get:3 http://ftp.debian.org jessie Release [77.3 kB]
Get:4 http://security.debian.org jessie/updates Release.gpg [1601 B]
Get:5 http://ftp.debian.org jessie-updates Release [15.4 kB]
Get:6 http://security.debian.org jessie/updates Release.gpg [1601 B]
Get:7 http://ftp.debian.org jessie/main Sources [7063 kB]
Get:8 http://security.debian.org jessie/updates Release [43.3 kB]
Get:9 http://security.debian.org jessie/updates Release [43.3 kB]
Get:10 http://security.debian.org jessie/updates/main amd64 Packages [758 kB]
Get:11 http://ftp.debian.org jessie/main amd64 Packages [6818 kB]
Get:12 http://security.debian.org jessie/updates/main Translation-en [388 kB]
Get:13 http://ftp.debian.org jessie/main Translation-en [4581 kB]
Get:14 http://security.debian.org jessie/updates/main Sources [341 kB]
Get:15 http://security.debian.org jessie/updates/main amd64 Packages [758 kB]
Get:16 http://ftp.debian.org jessie-updates/main Sources [20 B]
Get:17 http://ftp.debian.org jessie-updates/main amd64 Packages [20 B]
Get:18 http://ftp.debian.org jessie-updates/main Translation-en [14 B]
Get:19 http://security.debian.org jessie/updates/main Translation-en [388 kB]
Fetched 21.3 MB in 4s (4317 kB/s)
Reading package lists... Done
W: There is no public key available for the following key IDs:
AA8E81B4331F7F50
W: There is no public key available for the following key IDs:
AA8E81B4331F7F50

Получаем нужный открытый ключ и пробуем снова


# gpg --recv-keys AA8E81B4331F7F50
gpg: requesting key 331F7F50 from hkp server keys.gnupg.net
gpg: key 8AE22BA9: public key "Debian Security Archive Automatic Signing Key (9/stretch) <ftpmaster@debian.org>" imported
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)

# gpg --export AA8E81B4331F7F50 | apt-key add -
OK

# apt-get update
Hit http://ftp.debian.org jessie Release.gpg
Hit http://ftp.debian.org jessie-updates Release.gpg
Hit http://ftp.debian.org jessie Release
Hit http://ftp.debian.org jessie-updates Release
Hit http://security.debian.org jessie/updates Release.gpg
Hit http://ftp.debian.org jessie/main Sources
Hit http://ftp.debian.org jessie/main amd64 Packages
Hit http://security.debian.org jessie/updates Release.gpg
Hit http://ftp.debian.org jessie/main Translation-en
Hit http://security.debian.org jessie/updates Release
Hit http://ftp.debian.org jessie-updates/main Sources
Hit http://security.debian.org jessie/updates Release
Hit http://ftp.debian.org jessie-updates/main amd64 Packages
Hit http://ftp.debian.org jessie-updates/main Translation-en
Hit http://security.debian.org jessie/updates/main amd64 Packages
Hit http://security.debian.org jessie/updates/main Translation-en
Hit http://security.debian.org jessie/updates/main Sources
Hit http://security.debian.org jessie/updates/main amd64 Packages
Hit http://security.debian.org jessie/updates/main Translation-en
Reading package lists... Done

Дальше обновляем Wheezy до Jessie, опять в два приема

apt-get upgrade
apt-get dist-upgrade

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

reboot

Наблюдаем установленный Debian 8 Jessie

# cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 8 (jessie)"
NAME="Debian GNU/Linux"
VERSION_ID="8"
VERSION="8 (jessie)"
ID=debian
HOME_URL="http://www.debian.org/"
SUPPORT_URL="http://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

Проверяем работоспособность www mysql (mariadb) и что там еще используется. Если сохранять старые файлы настроек, то что-нибудь точно нужно будет править. Или отложить этот процесс до завершения обновления.

Едем дальше.

4. Обновляем до Stretch

Шаги те же, в принципе.

nano /etc/apt/sources.list
deb http://ftp.debian.org/debian/ stretch main
deb-src http://ftp.debian.org/debian/ stretch main

deb http://security.debian.org/debian-security stretch/updates main

deb http://security.debian.org/ stretch/updates main
deb-src http://security.debian.org/ stretch/updates main

# stretch-updates, previously known as 'volatile'
deb http://ftp.debian.org/debian/ stretch-updates main
deb-src http://ftp.debian.org/debian/ stretch-updates main

Скачиваем новые данные apt.

apt-get update

NB: Полезная команда для предварительной оценки того, что будет обновлено. Такой dry-run.

apt-get -u upgrade --assume-no

И еще одна, выводит список того, что можно обновить

apt list --upgradable

Апгрейдим, отступать некуда. Обновляем пакеты, обновляем дистрибутив.

apt-get upgrade
apt-get dist-upgrade
reboot

Если все прошло нормально (нет), то наслаждаемся

# cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 9 (stretch)"
NAME="Debian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
VERSION_CODENAME=stretch
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

Но скорее всего нужно будет править конфиги mariadb, php, nginx и что там ещё есть в хозяйстве. Достсточно тривиальные правки, гугл помогает, но в итоге получается не вполне оптимальная конфигурация. Неизбежная плата за скорость и удобство обновления в сравнении с чистой установкой, миграцией и настройкой.

PS: Уже вышел Debian 10, но так далеко мы пока не поедем.

Добавить комментарий

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