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.
In this section, we will focus on upgrading a Bullseye system to Bookworm. This is a major operation on a system; as such, it is never 100% risk-free, and should not be attempted before all important data has been backed up.
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
Now for the upgrading itself. First, you need to change the /etc/apt/sources.list file to tell APT to get its packages from Bookworm instead of Bullseye. If the file only contains references to Stable rather than explicit codenames, the change isn't even required, since Stable always refers to the latest released version of Debian. In both cases, the database of available packages must be refreshed with the apt update command or the refresh button in 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.
Once this first upgrade is done, it is time to handle the upgrade itself, either with apt full-upgrade, aptitude, or synaptic (Seção 6.7, “Atualizando de uma Versão Estável para a Próxima”). You should carefully check the suggested actions before applying them: you might want to add suggested packages or deselect packages which are only recommended and known not to be useful. In any case, the frontend should come up with a scenario ending in a coherent and up-to-date Bookworm system. Then, all you need is to do is wait while the required packages are downloaded, answer the debconf questions and possibly those about locally modified configuration files, and sit back while APT does its magic.

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

Sometimes the Debian ftpmasters remove packages from the Debian archive, because they contain release critical bugs, were abandoned by their upstream author or their package maintainer, or simply reached their end of life. In this case, a newer Debian release does not ship the package anymore. To find all packages, which do not have a package source, use the apt-show-versions command:
$ 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

If the upgrade was successful, there might be some configuration file cruft, either from dpkg (see Seção 5.2.3, “Checksums, Lista de arquivos de configuração, e outros.”), ucf or from removed packages. The latter can be purged by using apt autoremove --purge. The configuration files that were handled by dpkg or ucf during the upgrade process have left some counterparts with a dedicated suffix, e.g. .dpkg-dist, .dpkg-old, .ucf-old. Using the find or locate command can help to track them down. If they are no longer of any use, they can be deleted.
Be aware that a purge also removes the data created with a particular package (e.g. database files, docker volumes and containers, etc.). There should always be backups in place in case data gets removed accidentally.

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.