Upgrade Debian 4.0 (etch) para 5.0 (lenny) - 9 passos para um upgrade feliz

A versão 5.0 (Lenny) da distribuição Debian foi lançada em fev/09. Devido a mudanças significativas nos gerenciadores de pacotes e no próprio kernel, não basta apenas redirecionar os repositórios do APT para se fazer o upgrade da versão 4.0 (Etch) para a 5.0. Este artigo relaciona alguns cuidados a serem observados para uma atualização sem traumas.

[ Hits: 25.498 ]

Por: Cristiano Pezente Ferrari em 22/05/2009


Prepare o gerenciador de pacotes



4. Ajuste e reconfigure o gerenciador de pacotes, certificando-se que não existem ações pendentes, como, por exemplo, a instalação/remoção/atualização de algum pacote ou a solução de dependências não resolvidas.

Para fazer isso, abra o gerenciador em modo visual (aptitude) e tecle g (Go). Siga em frente apenas após ter a certeza de que nenhuma ação foi realizada e você recebeu a mensagem de que não há nenhum pacote a ser instalado/removido/atualizado.

(!) Lembre-se de certificar-se previamente que todas as entradas do seu arquivo /etc/apt/sources.list apontam para a versão etch, conforme descrito na etapa 2.

a. Desabilite a pinagem de pacotes

Há situações em que talvez tenha sido necessária a instalação de pacotes com versões mais atualizadas que as disponíveis nos repositórios da versão etch e, neste caso, talvez você possa ter configurado o gerenciador para instalar pacotes de outras versões (e.g. testing ou unstable), mesmo apontando o "etch" nos repositórios.

Esta configuração é feita através do arquivo /etc/apt/preferences. Edite este arquivo (caso ele exista) e procure por referências do tipo "Pin: release a=[alguma_coisa]" e as remova (o bloco inteiro, que geralmente começa com uma linha "Package: [algumacoisa]" e termina com "Pin-Priority: [outracoisa]"). Se este arquivo não existir em sua máquina, não se preocupe. É sinal que a pinagem do apt não foi utilizada em sua instalação.

Exemplo do bloco a ser excluído:

Package: *
Pin: release a=testing
Pin-Priority: 600

b. Verifique o status dos pacotes instalados

Para que a atualização tenha sucesso, é muito importante que todos os pacotes estejam com status "atualizável" (upgradable) e que não existam pacotes parcialmente instalados ou parcialmente configurados, além de, e principalmente, pacotes quebrados ou com erro. Para verificar isso, execute os seguintes comandos:

# dpkg --audit
# dpkg -l | grep -v ^ii


A saída desejada do primeiro comando, que mostra qualquer pacote com instalação pendente, deve ser nada. Qualquer resultado que aparece aqui indica que a situação do pacote listado deve ser regularizada antes da atualização.

O segundo comando lista os pacotes que merecem atenção, mas não necessariamente representam problemas.

Da saída aqui obtida, caso algum pacote seja listado, os 3 primeiros caracteres de cada linha dão informações sobre os estado dos pacotes. O 3° caractere deste grupo, da esquerda para a direita, indica a ocorrência de erros no pacote, de modo que merecem atenção quaisquer pacotes cujo caractere listado ali não seja um espaço. Caracteres maiúsculos nesta posição podem indicar coisas realmente ruins.

O segundo caractere representa o estado do pacote e para entender o que as letrinhas listadas nele representam, verifique a tabela abaixo:

Estado do pacote:
  • v - virtual
  • B - broken
  • u - "unpacked"
  • C - half-configured
  • H - half-installed
  • c - removed, but config-files still present (ie, not purged)
  • i - installed
  • E - internal erro (should not happen)

Por exemplo, um pacote com estado "c" apenas lhe diz que ele foi desinstalado, mas deixou os arquivos de configuração na máquina (geralmente dentro do diretório /etc) para, no caso de você resolver reinstalá-lo, manter as mesmas configurações da última vez que o utilizou.

Se desejar um detalhamento maior a respeito do status dos pacotes (exceto os que estão instalados com status de atualizável e não precisam de atenção), use o comando:

# dpkg-query -W -f='${Status}\t${Package}\n' | grep -v "install ok installed"

c. Destrave os pacotes

Se você precisou instalar versões de pacotes superiores àquelas disponíveis nos repositórios oficiais da versão etch, como por exemplo, a partir das versões testing/unstable, ou mesmo recompilando o pacote à partir dos sources, talvez você tenha travado (hold) tal pacote para não ser atualizado nos updates seguintes (caso contrário, seria feito uma espécie de "downgrade" para a versão anterior, aquela disponível no repositório oficial da versão etch).

Para que a atualização seja bem sucedida, no entanto, é necessário que os pacotes travados (marcados como hold) sejam destravados. Verifique a existência de pacotes neste estado com o comando:

# aptitude search "~ahold" | grep "^.h"
# dpkg --get-selections | grep hold


É necessário executar ambos os comandos, pois o primeiro lista pacotes instalados pelo gerenciador aptitude e o segundo, os instalados pelo apt-get.

Verifique quais pacotes resultam deste comando e os "destrave" com o comando:

# aptitude unhold nome_do_pacote

d. Trave os pacotes (!!)

A recomendação do passo anterior é válida para praticamente todos os pacotes, principalmente aqueles que fazem parte da "instalação básica" da distribuição, ou seja, pacotes que são indispensáveis para que seu computador consiga bootar corretamente e lhe fornecer um shell funcional.

Travar versões destes pacotes pode ser perigoso, pois pode "segurar" um pacote que deveria ser atualizado para manter a compatibilidade com novas funcionalidades de outros pacotes, com o kernel ou para satisfazer as exigências de dependências de outros aplicativos.

Porém há situações em que você pode ter instalado compilado uma versão customizada de um pacote (por exemplo, para aplicar um determinado patch) sem ter renomeado o pacote ou alterado sua versão. Neste caso, destravar o pacote fará com que ele seja atualizado e sua customização seja perdida.

Em situações assim é recomendável que seja avaliada a relevância deste pacote e suas dependências e, não havendo incompatibilidade com as novas versões que serão instaladas, que ele seja travado (hold) ao invés de destravado, para que você possa usufruir das funcionalidades da versão modificada.

Porém a atitude mais segura aqui é destravar o pacote, atualizá-lo e depois refazer a customização (e.g. aplicando patches na nova versão, recompilando e reinstalando o pacote customizado).

e. Pacotes não oficiais e backports

Se você possui pacotes instalados a partir de repositórios não oficiais ou não-Debian, é altamente recomendável que você os desinstale para evitar problemas de dependência.

Se você possui os repositórios backports em seu sources.list é necessário editar (ou criar, caso não exista) o arquivo /etc/apt/preferences e pinar todos os pacotes do lenny com prioridade 1001, evitando assim problemas de compatibilidade com versões eventualmente compilados à partir da versão unstable . Faça isto acrescentando estas entradas ao arquivo citado:

Package: *
Pin: release a=lenny
Pin-Priority: 1001

f. Desmarque a atualização automática quando necessário

Para evitar a atualização de qualquer pacote que eventualmente precise ser mantido na versão atual por questões de dependência, desmarque a atualização automática dele através do comando.

# aptitude unmarkauto nome_do_pacote

As imagens do kernel 2.6 que eventualmente tenham sido instaladas a partir de um metapackage também devem ser desmarcadas com o comando:

# aptitude unmarkauto $(dpkg-query -W "kernel-image-2.6.*" | cut -f1)

g. Ajuste os sources

Se você tem entradas em seu arquivo /etc/apt/sources.list apontando para a sessão proposed-updates, deve removê-las para evitar possíveis conflitos.

Feito este ajuste é necessário apontar todas as entradas para repositórios do lenny ao invés de repositórios do etch. Para isso basta que feitos os ajustes dos passos anteriores, se troque o nome "etch" por "lenny" nas entradas de todos os repositórios (inclusive dos sources - deb-src).

Apenas por precaução, é conveniente neste ponto verificar a página que lista os repositórios oficiais da distribuição e verificar se você está usando apenas repositórios oficiais.

Em caso negativo, convém acessar cada repositório não oficial que conste em seu source e verificar se a versão 5.0 já está disponível nele.

Página anterior     Próxima página

Páginas do artigo
   1. Antes de tudo, previna-se
   2. Prepare o gerenciador de pacotes
   3. Atualize o gerenciador de pacotes
   4. Atualize a distribuição
   5. Considerações finais
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Configurando um servidor de backup Bacula

Criando um servidor FTP acessível fora da LAN com o Proftpd

Cluster de Virtualização com Ganeti

Aplicando o Layer7 no Fedora Core Linux 6

Configurando Wireless-USB Bright-0091

  
Comentários
[1] Comentário enviado por brunobns em 22/05/2009 - 23:28h

Eu consegui atualizar do Etch para o Lenny apenas modificando os repositorios...o Kernel também foi atualizado, será que há risco de ocorrer algum problema? Muito bom o artigo, abraço!

[2] Comentário enviado por boxmga em 25/05/2009 - 08:47h

<quote>
Eu consegui atualizar do Etch para o Lenny apenas modificando os repositorios...o Kernel também foi atualizado, será que há risco de ocorrer algum problema? Muito bom o artigo, abraço!
</quote>

Na realidade acredito que não. Usualmente a atualização do debian requer apenas a modificação do repositório. No caso da atualização em questão, há alguns pormenores que **podem** deixar o sistema inacessível no primeiro boot, caso da incompatibilidade da libc ou mudança na nomenclatura dos dispositivos de I/O e armazenamento. Mas isto vai depender totalmente do seu hardware.

Se atualizou e deu certo, me parece que está tudo ok.

[3] Comentário enviado por landex em 17/06/2010 - 11:46h

Poxa legal, vou ver se instalo o Debian qualquer hora no meu note...


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts