Saudações.
Esse tutorial é um guia de upgrade a quente do Debian 12 (bookworm) para o Debian 13 (trixie).
O conteúdo a seguir acumula minhas experiências no assunto.
1 – Cuidados com rollback
Antes de atualizar você precisa estar ciente de que há um risco do sistema quebrar.
É uma ótima ideia montar um novo sistema do zero na versão nova (13) e migrar os dados e aplicações e ao final, aposentar o sistema antigo (arquivar, jamais destruir).
Cuidados:
- Backup: Analise os softwares em execução e faça backup das configurações e dos arquivos;
- Relatório: Tenha um tutorial próprio de montagem de cada serviço e experimente em laboratório se tudo funciona bem com as novas versões;
- Snapshot: Se seu sistema está rodando em VM, faça um snapshot quente (com a VM ligada), depois desligue-a e faça um snapshot frio, ligue-a e veja se tudo funciona;
Se você sentir o risco não continue e estude mais.
2 – Pre-Upgrade
Para que o Debian salte da versão 12 para a versão 13 ele deve estar completamente atualizado na versão 12 atual.
- RUIM: Debian 12.2 => Upgrade para Debian 13.4;
- BOM: Debian 12.2 => Upgrade até Debian 12.14 => Upgrade geral para 13.4;
2.1 – Cuidado com os programas
Embora pareça simples, o maior problema acontece nos pacotes individuais instalados no sistema.
Se você instalou o MariaDB na versão 12.2, precisará atualizá-lo para a versão mais nova do MariaDB da versão 12.14, o que pode significar mudanças profundas entre as versões do MariaDB e conflitos entre a configuração moderna e sua configuração legado.
Todos os softwares rodando no sistema precisam ser analisados e atualizados individualmente.
2.2 – Cuidado com o Kernel Linux
Outro ponto importante é o KERNEL, atualizar o kernel pode quebrar drivers, principalmente os drivers compilados no framework KMS (Kernel Mode Setting).
Eu enfrentei esse problema ao atualizar dois programas:
- OpenVPN;
- NVidia GPU.
Nos dois casos o problema foi da mesma natureza:
- 1. Ao instalar no Debian 12 (12.8) o pacote compilou o driver DCO para a versão do kernel presente no sistema;
- 2. Ao realizar o upgrade, um novo kernel foi instalado e ficou no bootloader aguardando o reboot para subir, o que não fiz imediatamente;
- 3. Os softwares continuaram rodando no kernel atual;
- 4. Quando a VM reiniciou, o novo kernel subiu e os softwares não tinham o pacote DKMS para ele;
- 5. Sistema quebrou (parou de rodas minhas IAs na GPU, o OpenVPN ficou sem DCO).
Solução: Sempre reiniciar imediatamente após o upgrade e forçar a atualização dos programas que usam drivers e KSM.
2.4 – Parar serviços
Pare todos os programas. Isso impede que o softwares continuem rodando e gerem arquivos, transações, operações externas que poderão ser perdidas caso você volte ao snapshot anterior ao início do upgrade.
# Lista todos os serviços ativos
systemctl list-units --type=service --state=running;
# Obs.:
# - ignore "ssh" e "sshd" caso esteja fazendo o upgrade remotamente
# - ignore "bind", "named", "dns" ou "unbound" caso esteja rodando DNS local
# Parar servico, exemplo:
systemctl stop nome_do_servico_aqui;
# - Exemplo: Parando "apache2"
systemctl stop apache2;
Atenção: Anote todos os serviços que você parou com “systemctl stop nome_do_servico” para iniciá-los ao final do tutorial.
2.5 – Preparativos de sanidade
Alguns procedimentos devem ser realizados para garantir que o update e upgrade não passe para versões superiores com problemas não resolvidos na versão atual.
# Corrige pacotes com problemas
apt --fix-broken install;
# Finaliza configurações pendentes
dpkg --configure -a;
# Verifica o espaco em disco (recomendavel ter no minimo 5 GB livres)
df -h;
df -h /;
# Anotar a lista de pacotes instalados
NOWDT=$(date "+%Y-%m-%d-%T");
dpkg --get-selections '*' > /root/dpkg-packet-list-$NOWDT.txt;
2.6 – Atualizar todos os programas
Vamos atualizar os softwares e o kernel primeiro.
# Atualizar indice de pacotes
apt -y update;
# Atualizar pacotes instalados para suas respectivas versoes correntes
apt -y upgrade;
apt -y upgrade --without-new-pkgs;
# Atualizar base do debian (ainda dentro da versao corrente)
apt -y dist-upgrade;
apt -y full-upgrade;
# Limpar pacotes velhos:
apt -y autoremove;
apt -y clean;
Execute os comandos acima várias vezes (copie e cole tudo, aguarde, cole tudo novamente). Faça isso até que não haja mais procedimentos de update de pacotes.
CUIDADO: Se o sistema corrompeu ou apresentou falhas em qualquer comando acima, pare. Analise com cuidado e se não conseguir resolver faça rollback da VM (recupere o snapshot).
CONTINUANDO: Se os updates e upgrades de pacotes terminaram com sucesso, faça o reboot para subir o kernel atualizado:
# Reiniciar para subir kernel atualizado com serviços atualizados
reboot;
# ou:
shutdown -r now;
Você deve repetir os comandos de update e reboot até que o Debian não tenha mais nada para atualizar. Só então você estará livre para realmente fazer o upgrade final.
3 – Atualizando para Debian 13
Agora é a hora de fazer o salto da v12 para a v13.
Pare todos os serviços novamente (capítulo 2.4).
3.1 – Novo repositório
Será preciso configurar o repositório do Debian 13 (trixie) encima do repositório atual (bookworm).
# Incluir variaveis da distribuicao no shell corrente (o ponto e' o comando)
. /etc/os-release;
# Backup do arquivo de repositorios principal
cp /etc/apt/sources.list /root/apt-sources-list-$VERSION_ID.backup;
# Substitui todas as menções a 'bookworm' por 'trixie' em 'sources.list'
sed -i 's/bookworm/trixie/g' /etc/apt/sources.list;
# Faz o mesmo para arquivos de configuração adicionais
find /etc/apt/sources.list.d \
-type f \
-name '*.list' \
-exec sed -i 's/bookworm/trixie/g' {} + ;
# - Configurar para usar repositorio do Debian 13 explicitamente
cat > /etc/apt/sources.list << EOF
deb http://deb.debian.org/debian/ trixie main non-free-firmware
deb-src http://deb.debian.org/debian/ trixie main non-free-firmware
deb http://security.debian.org/debian-security trixie-security main non-free-firmware
deb-src http://security.debian.org/debian-security trixie-security main non-free-firmware
deb http://deb.debian.org/debian/ trixie-updates main non-free-firmware
deb-src http://deb.debian.org/debian/ trixie-updates main non-free-firmware
EOF
# Garantir /tmp publico por seguranca
chmod 777 /tmp;
3.2 – Lançar o foguete
Essa é a hora da verdade, o momento em que o sistema será convertido para a nova versão:
# Iniciar atualizacao
apt -y clean;
apt -y update;
apt -y --fix-broken install;
apt -y autoremove;
# Repetir (1)
apt update;
apt -y upgrade --without-new-pkgs;
apt -y full-upgrade;
apt -y --fix-broken install;
apt -y autoremove;
apt -y clean;
# Repetir (2)
apt -y update;
apt -y upgrade;
apt -y dist-upgrade --autoremove;
apt -y --fix-broken install;
apt -y autoremove;
apt -y clean;
# Repetir (3)
apt -y update;
apt -y upgrade;
apt -y distro-upgrade;
apt -y full-upgrade;
apt -y upgrade --without-new-pkgs;
apt -y --fix-broken dist-upgrade;
apt -y --fix-broken install;
apt -y autoremove;
apt -y clean;
# Remove pacotes de kernel antigos
apt -y autoremove --purge;
# Verifica a versão do sistema operacional
lsb_release -a
Agora reinicie o servidor para subir com o kernel atualizado.
# Reiniciar para subir kernel atualizado com serviços atualizados
reboot;
# ou:
shutdown -r now;
Após o reboot, execute novamente todos os comandos de update e upgrade.
Atenção: Pegue as notas de todos os serviços que você parou com “systemctl stop” e inicie-os agora com “systemctl start nome_do_servico“.
Concluindo o upgrade, garanta que os serviços foram iniciados
Se tudo está funcionando, parabéns, você é corajoso.
4 – Procedimentos de reparo
Caso você tenha quebrado o sistema e não consiga fazer rollback, você pode tentar recuperar o sistema corrompido com esses truques.
CUIDADO: Execute apenas em caso de emergência, é uma tentativa de recuperar, não há garantias.
# Fix de emergencia:
dpkg --force-depends --purge apt dpkg;
# Limpar cache de pacotes
rm -rf /var/lib/dpkg/info/*;
rm -rf /var/lib/dpkg/updates/*;
rm /var/lib/dpkg/status;
rm /var/lib/dpkg/available;
touch /var/lib/dpkg/status;
touch /var/lib/dpkg/available;
# Tentar atualizar indice novamente:
dpkg --configure -a;
apt update;
apt install --reinstall dpkg apt;
Se o reparo acima funcionou, execute os comandos do capítulo 3.2 novamente.
Terminamos por hoje!
Patrick Brandão, patrickbrandao@gmail.com
“Pele por pele, e tudo quanto o
homem tem dará pela sua vida.“
“ha-satan”, o acusador, Jó 2:4
Bíblia Sagrada
