Skip to main content

Upgrade de Ubuntu LTS no Droplet (20/22 → 24.04)

Objetivo

Atualizar o sistema operacional de um Droplet Ubuntu para Ubuntu 24.04 LTS.

  • Caminho padrão: Ubuntu 22.04 LTS → 24.04 LTS
  • Caminho legado: Ubuntu 20.04 LTS → 22.04 LTS → 24.04 LTS

Observação: neste procedimento não houve problemas com SSH/UFW. O único ajuste pós-upgrade necessário foi no yq (remoção de entradas antigas e instalação via snap).


Pré-requisitos

  • Acesso root ou sudo
  • Janela para reinício do servidor
  • Snapshot/Backup do Droplet antes de iniciar (recomendado)

1) Preparação (antes do upgrade)

1.1 Verificações básicas

lsb_release -a
uname -r
df -h /
free -h

1.2 Atualizar o sistema completamente no release atual

sudo apt update
sudo apt -y full-upgrade
sudo apt -y autoremove --purge
sudo reboot

Após o reboot:

sudo systemctl --failed

2) Configurar release upgrades para LTS

Verifique o arquivo:

sudo nano /etc/update-manager/release-upgrades

Garanta:

Prompt=lts

3) Upgrade Ubuntu 22.04 → 24.04

Instale o componente (se necessário):

sudo apt install -y update-manager-core

Inicie o upgrade:

sudo do-release-upgrade

Ao final:

sudo reboot

4) Upgrade Ubuntu 20.04 → 22.04 → 24.04 (quando aplicável)

No Ubuntu 20.04, primeiro faça upgrade para 22.04:

  1. Atualize tudo no 20.04:
sudo apt update
sudo apt -y full-upgrade
sudo apt -y autoremove --purge
sudo reboot
  1. Rode:
sudo apt install -y update-manager-core
sudo do-release-upgrade
sudo reboot
  1. Já no 22.04, repita o processo do capítulo 3 para ir ao 24.04.

5) Prompt do dpkg: arquivo /etc/crontab

Durante o upgrade, pode aparecer o prompt:

Configuration file '/etc/crontab' Modified since installation + maintainer shipped new version

Ação recomendada (padrão):

  • Pressione N para manter a versão atual (seus agendamentos).

Opcional:

  • Pressione D para ver diferenças e depois N.

Motivo: evita sobrescrever crons customizados.


6) Pós-upgrade: validações

Confirmação de versão:

lsb_release -a
cat /etc/os-release
uname -r

Serviços com falha:

sudo systemctl --failed

Cron:

sudo systemctl status cron --no-pager

Docker (se aplicável):

docker ps -a
docker compose ps 2>/dev/null || true

7) Correção do YQ (pós-upgrade Ubuntu 24.04)

7.1 Sintoma

Ao executar yq, aparece:

  • ModuleNotFoundError: No module named 'yq'
  • Geralmente apontando para /usr/local/bin/yq (instalação antiga via pip)

7.2 Diagnóstico

which -a yq
type -a yq
ls -l /usr/local/bin/yq /snap/bin/yq 2>/dev/null

7.3 Correção aplicada (padronizada)

  1. Remover o binário antigo que “ganha” no PATH:
sudo rm -f /usr/local/bin/yq
hash -r
  1. Instalar o yq via snap:
sudo snap install yq
  1. Validar:
which yq
yq --version

Observação: se existir /snap/bin/yq, ele deve ser o binário usado após a limpeza do /usr/local/bin/yq.


8) Troubleshooting rápido

8.1 “container … is not running”

Isso é independente do yq: algum script tentou executar comando em container parado.

Ver estado e logs:

docker ps -a --no-trunc | head
docker logs --tail 200 <container_id>

Se usa compose:

docker compose up -d
docker compose ps

Checklist final

  • Snapshot feito
  • Sistema atualizado antes do upgrade (full-upgrade)
  • Upgrade executado com do-release-upgrade
  • Reboot OK
  • systemctl --failed sem itens críticos
  • Cron ativo (systemctl status cron)
  • yq corrigido (removido /usr/local/bin/yq + snap install yq)
  • Docker/serviços OK