Estou tentando atualizar uma VM Ubuntu da Digital Ocean de 20.04.6 para 22.04.5 usando do-release-upgrade. Estou conectado via SSH.
Infelizmente, isso não é direto e está me pedindo para instalar todas as atualizações disponíveis antes de atualizar.
Antes de começar, criei um snapshot para recuperar rapidamente caso algo desse errado.
Ao seguir as instruções deste fórum , ele me sugere executar sudo apt full-upgrade
. Após executá-lo e reinicializar, a máquina recusa a conexão (o que significa que entrou em um estado em que não está inicializando). Ele não conecta nem mesmo do console da Digital Ocean dentro do painel de controle, muito menos por SSH.
Após restaurar o snapshot, tentei seguir as instruções deste post . Após executar sudo apt-get dist-upgrade
, tive o mesmo problema após reiniciar.
Tentar executar sudo do-release-upgrade
sem reinicializar faria com que a atualização fosse baixada e instalada, mas a máquina ficaria ininicializável no final de qualquer maneira.
Então, o que estou perdendo aqui? Alguma dica?
[ATUALIZAR]
Consegui instalar todas as atualizações necessárias executando sudo apt list --upgradable
e instalando cada uma manualmente com o sudo apt-get install
, enquanto aplicava autoremove
quando necessário. Agora meu sistema está totalmente atualizado. Mas ao executar o sudo do-release-upgrade
, após terminar um longo processo de atualização, o sistema foi tornado não inicializável. Até tentei desligar o droplet e ligá-lo novamente, mas não obtive sucesso em colocá-lo online. Restaurarei o snapshot e tentarei investigar mais a fundo.
Depois de muitas horas de pesquisa, finalmente descobri o culpado e a solução. O problema na atualização é que o 22.04 usa netplan, mas os droplets do 20.04 não têm nenhum arquivo de configuração netplan (pelo menos o meu não tem). Então, depois de reiniciar, a máquina não pode ser acessada porque sua configuração de rede desapareceu.
Para resolver esse problema, após executar
sudo do-release-upgrade
, quando terminar, responda NÃO quando for solicitado um reboot . Então obtenha suas informações de rede executando:ip a
para recuperar endereçosip r
para recuperar rotascat /etc/resolv.conf
para obter a configuração do servidor de nomes.Anote essas saídas e crie um arquivo de configuração netplan executando
sudo nano /etc/netplan/config.yaml
e escrevendo o seguinte conteúdo, substituindo as entradas correspondentes pelas que você anotou antes (e para facilitar as coisas, alterei os valores da saída com letras para que você possa ver onde cada entrada deve ir):Observe também que o recuo do conteúdo yaml deve corresponder exatamente ao acima, ou você receberá um erro.
Altere a permissão do arquivo recém-criado com
sudo chmod 600 /etc/netplan/config.yaml
.Agora, execute
sudo netplan --debug generate
. Se você receber uma mensagem com algo como WARNING:root:Cannot call Open vSwitch: ovsdb-server.service is not running. , você pode resolver isso executandosudo apt-get install openvswitch-switch-dpdk
, mas acho que você pode ignorar essa mensagem. Eu não ignorei, só por precaução.Por fim, execute
sudo netplan apply
e reinicie. Note que se você tiver qualquer chave SSH definida, você precisará reconfigurá-la, já que a assinatura será alterada.Note que se você for para a pasta /etc/netplan/ , você notará que já há um arquivo lá, chamado 50-cloud-init.yaml . Não faça como eu fiz e edite esse arquivo com o conteúdo acima, porque o conteúdo desse arquivo não persiste após uma reinicialização e é gerado automaticamente, e eu descobri quando fui bloqueado do droplet e tive que acessá-lo através do console de recuperação do painel de controle do Digital Ocean para criar o config.yaml, etc.
Espero realmente que isso ajude quem ficou preso nisso e que isso possa lhe poupar horas de pesquisa e dor de cabeça.