Product SiteDocumentation Site

6.7. Atualizando de uma Versão Estável para a Próxima

Uma das funcionalidades mais conhecidas do Debian é sua habilidade de atualizar um sistema instalado de uma versão estável para a próxima: dist-upgrade — um termo bem conhecido — tem contribuído amplamente para a reputação do projeto. Com algumas poucas precauções, atualizar um computador pode levar alguns minutos, ou algumas dezenas de minutos, dependendo da velocidade de download do repositório de pacotes.

6.7.1. Procedimento Recomendado

Como o Debian tem bastante tempo para evoluir entre lançamentos da versão estável, você deve ler as notas de lançamento ("release notes") antes de atualizar.
Nesta seção, vamos focar em atualizar um sistema de Buster para Bullseye. Esta é uma operação importante num sistema; e como tal, nunca é 100% segura, e só deve ser tentada depois que todos os dados tenham sido protegidos num backup.
Outro hábito que mantém a atualização mais fácil (e rápida) é organizar a quantidade de pacotes instalados e manter apenas aqueles que são realmente necessários. Ferramentas úteis para isto incluem aptitude, deborphan, debfoster e apt-show-versions (veja Seção 6.2.7, “Rastreando Pacotes Instalados Automaticamente”). Por exemplo, você pode usar o seguinte comando: e, em seguida, usar o modo interativo do aptitude para checar e ajustar as remoções programadas:
# deborphan | xargs aptitude --schedule-only remove
Agora para a atualização em si. Primeiro, você precisa mudar o arquivo /etc/apt/sources.list para dizer ao APT para obter os pacotes da Bullseye ao invés da Buster. Se o arquivo apenas contém referências à Stable ao invés de codinomes explícitos, esta mudança não é necessária, já que o nome Stable sempre se refere à última versão lançada do Debian. Em ambos os casos, o banco de dados de pacotes disponíveis deve ser atualizado com o comando apt update ou o botão recarregar no synaptic (Seção 6.2.1, “Inicialização”)..
Uma vez que estas novas fontes de pacotes forem cadastradas, você deve primeiro fazer uma atualização mínima com apt upgrade e outros, como descrito em Seção 6.2.3, “Atualização do sistema”. Ao fazer a atualização em duas etapas, nos facilita o trabalho das ferramentas de gerenciamento de pacotes e muitas vezes garante que temos as versões mais recentes das pessoas, o que pode ter acumulado correções de bugs e melhorias necessárias para concluir a atualização completa da distribuição.
Uma vez que esta primeira atualização é realizada, é hora de lidar com a própria atualização, seja com o apt full-upgrade, aptitude, ou synaptic (Seção 6.7, “Atualizando de uma Versão Estável para a Próxima”). Você deve cuidadosamente verificar as ações sugeridas antes de aplicá-las: você pode querer adicionar os pacotes sugeridos ou desmarcar pacotes que são apenas recomendados e que você sabia que não serão úteis. De qualquer forma, a interface deve terminar com um cenário de um sistema Bullseye coerente e atualizado. Então, tudo o que você tem a fazer é esperar que os pacotes necessários sejam baixados, responder as perguntas do debconf e possivelmente as perguntas relativas a arquivos de configuração localmente modificados, e sentar e esperar que o APT faça sua mágica.

6.7.2. Lidando com Problemas após uma Atualização

Apesar dos esforços dos mantenedores Debian, uma atualização geral do sistema não é sempre tão suave quando você gostaria. Novas versões de software podem ser incompatíveis com versões anteriores (por exemplo, seu comportamento padrão ou seu formato de dados pode ter mudado). Além disso, alguns bugs podem passam despercebidos apesar da fase de testes pela qual o lançamento do Debian sempre passa.
Para antecipar alguns destes problemas, você pode instalar o pacote apt-listchanges, que mostra informações sobre possíveis problemas no início de uma atualização de pacotes. Esta informação é compilada pelos mantenedores de pacote e colocada em arquivos /usr/share/doc/package/NEWS.Debian para os usuários usarem. A leitura destes arquivos (possivelmente através do apt-listchanges) pode evitar surpresas desagradáveis.
Ás vezes você descobre que uma nova versão de um software não funciona de jeito nenhum. Isto geralmente acontece se a aplicação não é muito popular e não foi testada o suficiente; uma atualização que acabou de acontecer também pode introduzir regressões que são encontradas apenas no lançamento estável ("stable"). Em ambos os casos, a primeira coisa a fazer é olhar o sistema de rastreamento de bugs em https://bugs.debian.org/pacote, e verificar se o problema já foi relatado. Se este for o caso, ele também vai ser listado antes que a atualização comece, se você tiver o apt-listbugs instalado. Se não tiver sido, você mesmo pode relatá-lo com o reportbug. Se ele já é conhecido, o bug report e as mensagens associadas a ele normalmente são uma excelente fonte de informações relativas ao bug:
  • algumas vezes um patch já existe, e está disponível no bug report; você pode recompilar uma versão consertada de um pacote quebrado localmente (see Seção 15.1, “Reconstruindo um Pacote a partir de suas Fontes”);
  • Em outros casos, os usuários podem encontrar uma gambiarra para o problema e compartilhar suas ideias nas respostas do bug report;
  • em outros casos, um pacote consertado já pode ter sido preparado e publicado pelo mantenedor.
Dependendo da severidade do bug, uma nova versão do pacote pode ser preparada especificamente para uma nova revisão do lançamento estável. Quando isto acontece, o pacote consertado é disponibilizado na seção proposed-updates dos espelhos Debian (veja Seção 6.1.2.3, “Atualizações Propostas”). A entrada correspondente pode então ser adicionada temporariamente ao arquivo sources.list, e pacotes atualizados podem ser instalados com apt ou aptitude.
Por vezes, o pacote consertado não fica disponível nesta seção por faltar a validação de alguma pendência dos Stable Release Managers. Você pode verificar se este é o caso na página deles. Pacotes listados lá ainda não foram disponibilizados, mas pelo menos você saberá que o processo de publicação está andando.

6.7.3. Fazendo uma limpeza após uma atualização

O APT normalmente garante um upgrade limpo, puxando as dependências novas e atualizadas, ou removendo pacotes conflitantes. Mas mesmo sendo esta excelente ferramenta, ele não pode cobrir todas as tarefas que os usuários e administradores podem encontrar num upgrade, por que elas precisam de decisões humanas.

6.7.3.1. Pacotes removidos do Arquivamento Debian

Às vezes os "Debian FTP Masters" removem pacotes do Debian archive, porque eles contém bugs críticos para lançamento, que foram abandonados pelo autor principal ou pelo mantenedor de pacotes, ou simplesmente chegaram ao fim de vida. Neste caso, um novo lançamento do Debian não trás mais tal pacote. Para encontrar todos os pacotes, que não tem um pacote fonte, use o comando apt-show-versions:
$ apt-show-versions | grep "No available version"
Um resultado similar pode ser alcançado pelo aptitude search ~o. Se os pacotes encontrados não são mais necessários, eles podem ser expurgados do sistema, pois não mais terão atualizações para bugs críticos ou de segurança.

6.7.3.2. Pacotes "Dummy" e de transição

Algumas vezes, pode ser necessário para um pacote ter um novo nome. Neste caso, normalmente o pacote antigo é mantido como um pacote (quase) vazio, com uma dependência com o novo e instalando apenas os arquivos obrigatórios em /usr/share/doc/pacote/. Tais pacotes são chamados "dummy" ("vazios") ou "transitional" ("de transição"). Se o mantenedor do pacote também mudar a seção deste pacote para oldlibs, então ferramentas como aptitude, deboprhan, ou debfoster (veja a barra lateral ALTERNATIVA deborphan e debfoster) podem selecionar estes pacotes para sugerir suas remoções.
Infelizmente não existe atualmente uma forma livre de falhas de garantir que estes pacotes sejam automaticamente removidos ou pegos pelas ferramentas mencionadas acima. Uma forma de verificar se o sistema ainda tem alguns destes pacotes instalados é olhar através das descrições de pacotes dos pacotes instalados e então verificar os resultados. Seja cuidadoso para não agendar os resultados para remoção automática, pois este método pode levar a falsos positivos:
$ dpkg -l | grep ^ii | grep -i -E "(transition|dummy)"
Como o novo pacote é trazido como uma dependência do pacote de transição, ele é normalmente marcado como instalado automaticamente e deve ser agendado para remoção se você tentar expurgar (purge) o pacote de transição de seu sistema. Neste caso, você pode usar qualquer uma das abordagens descritas na barra lateral DICA Removendo e instalando ao mesmo tempo eSeção 6.2.7, “Rastreando Pacotes Instalados Automaticamente” para remover seletivamente o pacote de transição.

6.7.3.3. Arquivos de configuração velhos ou sem uso

Se o upgrade for bem-sucedido pode haver algum lixo em arquivos de configuração, tanto do dpkg (veja Seção 5.2.3, “Checksums, Lista de arquivos de configuração, e outros.”), ucf ou de pacotes removidos. Neste último caso pode ter sido expurgado pelo uso do apt autoremove --purge. Os arquivos de configuração que foram manipulados pelo dpkg ou ucf durante o upgrade deixaram alguns arquivos auxiliares com um sufixo dedicado(e.g. .dpkg-dist, .dpkg-old, .ucf-old). Usar os comandos find ou locate pode ajudar a rastreá-los. Se eles não tem mais utilidade, podem ser eliminados.

6.7.3.4. Arquivos que não são de nenhum pacote

A política Debian reforça que pacotes não deixam arquivos para trás quando expurgados. Violar este princípio é um bug sério e você raramente vai encontrar isto. Se encontrar, favor reportar. E se você for curioso, você pode usar os pacotes cruft ou cruft-ng para verificar seu sistema em busca de arquivos que nenhum pacote possui.