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:
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)"
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.