Capítulo 4. Atualizações a partir do Debian 7 (wheezy)

Índice

4.1. Preparando para a atualização
4.1.1. Faça backup de quaisquer dados ou informações de configuração
4.1.2. Informe os usuários com antecedência
4.1.3. Preparar para a indisponibilidade dos serviços
4.1.4. Preparar para recuperação
4.1.5. Preparar um ambiente seguro para a atualização
4.2. Verificando o estado do sistema
4.2.1. Rever as ações pendentes no gerenciador de pacotes
4.2.2. Desabilitando o APT pinning
4.2.3. Verificando o estado dos pacotes
4.2.4. A seção proposed-updates
4.2.5. Fontes não oficiais e backports
4.3. Preparando as fontes para o APT
4.3.1. Adicionar fontes da Internet ao APT
4.3.2. Adicionando fontes ao APT para um espelho local
4.3.3. Adicionando fontes ao APT a partir de mídia ótica
4.4. Atualizando pacotes
4.4.1. Gravando a sessão
4.4.2. Atualizando a lista de pacotes
4.4.3. Certifique-se que você tem espaço suficiente para a atualização
4.4.4. Atualização mínima do sistema
4.4.5. Atualizando o sistema
4.5. Possíveis problemas durante a atualização
4.5.1. O dist-upgrade falha com Could not perform immediate configuration
4.5.2. Remoções esperadas
4.5.3. Loops de conflitos ou pré-dependências
4.5.4. Conflitos de arquivo
4.5.5. Mudanças de configuração
4.5.6. Mudança de sessão para o console
4.5.7. Cuidados especiais com pacotes específicos
4.6. Atualizando o seu kernel e pacotes relacionados
4.6.1. Instalando o meta-pacote do kernel
4.6.2. Problemas de tempo de inicialização (esperando por dispositivo raiz)
4.7. Coisas para fazer antes de reinicializar
4.7.1. Purging removed packages
4.8. Preparar para a próxima versão
4.9. Componentes obsoletos
4.10. Pacotes obsoletos
4.10.1. Pacotes fictícios

4.1. Preparando para a atualização

Nós sugerimos que antes de atualizar você também leia as informações na Capítulo 5, Problemas a serem considerados para o jessie. Esse capítulo aborda potenciais problemas, os quais não estão diretamente relacionados ao processo de atualização, mas que ainda pode ser importante conhecer antes que você comece.

4.1.1. Faça backup de quaisquer dados ou informações de configuração

Antes de atualizar o seu sistema, é fortemente recomendado que você faça um backup completo ou, pelo menos, faça backup de quaisquer dados ou informações de configuração que você não possa perder. As ferramentas de atualização e o processo são bastante confiáveis, mas uma falha de hardware no meio de uma atualização pode resultar em um sistema severamente danificado.

As principais coisas que você terá que fazer backup são os conteúdos do /etc, /var/lib/dpkg, /var/lib/apt/extended_states e a saída do dpkg --get-selections "*" (as aspas são importantes). Se você utiliza o aptitude para gerenciar pacotes em seu sistema, você também terá que fazer backup do /var/lib/aptitude/pkgstates.

O processo de atualização em si não modifica nada no diretório /home. No entanto, alguns aplicativos (por exemplo, partes da suíte Mozilla e os ambientes de área de trabalho GNOME e KDE) são conhecidos por sobrescrever as configurações existentes dos usuários com novos padrões, quando uma nova versão do aplicativo é iniciada pela primeira vez por um usuário. Como precaução, você pode fazer um backup dos arquivos e diretórios ocultos (dotfiles) nos diretórios home dos usuários. Esse backup pode ajudar a recuperar ou recriar antigas configurações. Você também pode informar os usuários sobre isso.

Qualquer operação de instalação de pacote deve ser executada com privilégios de superusuário, para isso, faça login como root ou use o su ou o sudo para obter os direitos de acesso necessários.

A atualização possui algumas condições prévias; você deve verificá-las antes de começar a executar a atualização.

4.1.2. Informe os usuários com antecedência

É sensato informar a todos os usuários com antecedência sobre qualquer atualização que você esteja planejando, embora os usuários que acessem o seu sistema via uma conexão ssh pouco devam notar durante a atualização, e devam ser capazes de continuar trabalhando.

Se você desejar tomar precauções extras, faça backup ou desmonte a partição /home antes de atualizar.

Você terá que fazer uma atualização de kernel quando atualizar para o jessie, então, uma reinicialização será necessária. Normalmente, isso será feito depois que a atualização for concluída.

4.1.3. Preparar para a indisponibilidade dos serviços

Poderão haver serviços que são oferecidos pelo sistema que estão associados aos pacotes que serão incluídos na atualização. Se esse for o caso, por favor, note que durante a atualização esses serviços serão interrompidos, enquanto os seus pacotes associados estiverem sendo substituídos e configurados. Durante esse tempo, esses serviços não estarão disponíveis.

O tempo exato de indisponibilidade desses serviços variará dependendo do número de pacotes sendo atualizados no sistema, e isso também inclui o tempo que o administrador do sistema gasta respondendo a quaisquer perguntas de configuração das atualizações dos pacotes. Observe que, se o processo de atualização for deixado sem acompanhamento e o sistema solicitar uma entrada durante a atualização, existe uma grande possibilidade dos serviços ficarem indisponíveis[1] por um período significativo de tempo.

Se o sistema que está sendo atualizado fornecer serviços críticos para os seus usuários ou para a rede[2], você pode reduzir o tempo de indisponibilidade se fizer uma atualização mínima do sistema, como descrito na Seção 4.4.4, “Atualização mínima do sistema”, seguida de uma atualização do kernel e reinicialização, e então atualizar os pacotes associados aos seus serviços críticos. Atualize esses pacotes antes de fazer a atualização completa descrita na Seção 4.4.5, “Atualizando o sistema”. Dessa forma, você pode garantir que esses serviços essenciais estejam funcionando e disponíveis durante o processo de atualização completa, e o seu tempo de indisponibilidade seja reduzido.

4.1.4. Preparar para recuperação

Embora o Debian tente garantir que o seu sistema permaneça inicializável a todo o momento, sempre há uma chance de você ter problemas ao reinicializar o seu sistema após a atualização. Problemas possíveis conhecidos são documentados neste e nos próximos capítulos destas notas de lançamento.

Por essa razão faz sentido garantir que você seja capaz de recuperar o seu sistema caso não consiga reinicializar ou, para sistemas gerenciados remotamente, não consiga levantar a rede.

Se você estiver atualizando remotamente através de um link ssh é recomendado que você tome as precauções necessárias para ser capaz de acessar o servidor por meio de um terminal serial remoto. Há uma chance de que, após atualizar o kernel e reinicializar, você tenha que corrigir a configuração do sistema por meio de um console local. Além disso, se o sistema for reinicializado acidentalmente no meio de uma atualização, existe uma chance de que precise recuperá-lo usando um console local.

A coisa mais óbvia a tentar primeiro é reinicializar com seu kernel antigo. Entretanto, não é garantido que isso funcione.

Se isso falhar, você precisará de uma forma alternativa de inicializar seu sistema, e assim poder acessá-lo e repará-lo. Um opção é usar uma imagem especial de recuperação ou um live CD de Linux. Após a inicialização a partir dele, você deverá ser capaz de montar o seu sistema de arquivos raiz e fazer chroot nele para investigar e corrigir o problema.

Outra opção que nós gostaríamos de recomendar é usar o modo de recuperação do Instalador Debian do jessie. A vantagem de usar o instalador é que você pode escolher entre os seus vários métodos de instalação para encontrar aquele que melhor se adéqua à sua situação. Para mais informações, por favor, consulte a seção Recuperando um sistema quebrado no capítulo 8 do Guia de Instalação e a FAQ do Instalador Debian.

4.1.4.1. Shell de depuração durante a inicialização usando initrd

O pacote initramfs-tools inclui um shell de depuração[3] nas initrds que ele gera. Se, por exemplo, a initrd for incapaz de montar o seu sistema de arquivos raiz, você será deixado nesse shell de depuração que tem comandos básicos disponíveis para ajudar a rastrear o problema e possivelmente corrigi-lo.

Coisas básicas a serem verificadas: presença dos arquivos de dispositivo corretos em /dev; quais módulos estão carregados (cat /proc/modules); saída do dmesg com erros de carregamento de drivers. A saída do dmesg também exibirá quais arquivos de dispositivo foram associados a quais discos; você deve verificar isso com a saída do echo $ROOT para certificar-se que o sistema de arquivos raiz está no dispositivo esperado.

Se você conseguir resolver o problema, digitar exit deixará o shell de depuração e continuará o processo de inicialização a partir do ponto em que ele falhou. Claro que você também precisará corrigir a causa do problema e gerar novamente a initrd, pois assim a próxima inicialização não falhará novamente.

4.1.5. Preparar um ambiente seguro para a atualização

A atualização da distribuição deve ser feita localmente a partir de um console virtual em modo texto (ou um terminal serial conectado diretamente), ou remotamente através de um link ssh.

[Importante]Importante

Se você estiver usando alguns serviços VPN (tais como tinc) eles podem não estar disponíveis ao longo do processo de atualização. Por favor, veja a Seção 4.1.3, “Preparar para a indisponibilidade dos serviços”.

A fim de conseguir uma margem extra de segurança quando atualizar remotamente, nós sugerimos que você execute o processo de atualização no console virtual fornecido pelo programa screen, que permite uma reconexão segura e garante que o processo de atualização não seja interrompido mesmo se o processo de conexão remota falhar.

[Importante]Importante

Você não deve atualizar utilizando telnet, rlogin, rsh, ou a partir de uma sessão X gerenciada por xdm, gdm ou kdm, etc., na máquina que você estiver atualizando. Isso é porque cada um desses serviços pode muito bem ser terminado durante a atualização, o que pode resultar em um sistema inacessível que está apenas parcialmente atualizado. O uso do aplicativo update-manager do GNOME é fortemente desencorajado para atualizações para novas versões, pois essa ferramenta precisa que a sessão da área de trabalho se mantenha ativa.

TODO: surely gdm/kdm are sane?
(vorlon) haha, no, gdm is not; I had that thought, and tested a gdm
         restart on my live session ;)

4.2. Verificando o estado do sistema

O processo de atualização descrito neste capítulo foi idealizado para atualizações a partir de sistemas wheezy puros sem pacotes de terceiros. Para uma maior confiabilidade do processo de atualização, você pode remover pacotes de terceiros do seu sistema antes de começar a atualização.

Direct upgrades from Debian releases older than 7 (wheezy) are not supported. Please follow the instructions in the Release Notes for Debian 7 to upgrade to 7 first.

Esse procedimento também assume que o seu sistema foi atualizado para a versão pontual mais recente do wheezy. Se você não tiver feito isso ou não tiver certeza, siga as instruções na Seção A.1, “Atualizando seu sistema wheezy”.

4.2.1. Rever as ações pendentes no gerenciador de pacotes

Em alguns casos, o uso do apt-get para instalação de pacotes, ao invés do aptitude, pode fazer o aptitude considerar um pacote como não usado e agendá-lo para remoção. Em geral, você deve certificar-se que o sistema está totalmente atualizado e limpo antes de proceder com a atualização.

Por causa disso, você deve rever se existem quaisquer ações pendentes no gerenciador de pacotes aptitude. Se um pacote estiver agendado para remoção ou atualização no gerenciador de pacotes, ele pode impactar negativamente no procedimento de atualização. Note que só é possível corrigir isso se o seu sources.list ainda apontar para o wheezy e não para stable ou jessie; veja a Seção A.2, “Verificando sua lista de fontes (sources list)”.

Para fazer esta revisão, inicie o aptitude em modo visual e pressione g (Go). Se ele mostrar quaisquer ações, você deve revê-las e corrigi-las ou implementar as ações sugeridas. Se nenhuma ação for sugerida será apresentada uma mensagem dizendo Nenhum pacote está agendado para ser instalado, removido ou atualizado.

4.2.2. Desabilitando o APT pinning

Se você tiver configurado o APT para instalar determinados pacotes a partir de uma distribuição diferente da "stable" (por exemplo, da "testing"), você pode ter que mudar sua configuração de APT pinning (guardada em /etc/apt/preferences e /etc/apt/preferences.d/) para permitir a atualização dos pacotes para as versões existentes na nova versão "stable". Mais informações sobre APT pinning podem ser encontradas em apt_preferences(5).

4.2.3. Verificando o estado dos pacotes

Independentemente do método usado para atualização, é recomendado que você primeiro verifique o estado de todos os pacotes, e verifique se todos estão em um estado atualizável. O seguinte comando exibirá quaisquer pacotes que tenham um estado de Half-Installed ou Failed-Config, e aqueles com algum estado de erro.

# dpkg --audit

Você também pode inspecionar o estado de todos os pacotes em seu sistema usando o aptitude ou com comandos como

# dpkg -l | pager

ou

# dpkg --get-selections "*" > ~/curr-pkgs.txt

É desejável remover quaisquer retenções (holds) em pacotes antes da atualização. Se qualquer pacote que seja essencial para a atualização estiver retido, a atualização falhará.

Note que o aptitude usa um método para registrar os pacotes que estão retidos diferente do apt-get e do dselect. Você pode identificar pacotes retidos pelo aptitude com

# aptitude search "~ahold"

Se você quiser verificar quais pacotes você tem retidos pelo apt-get, você deve usar

# dpkg --get-selections | grep 'hold$'

Se você alterou e recompilou um pacote localmente, e não o renomeou ou colocou uma época na versão, você deve colocá-lo em retenção para evitar que seja atualizado.

O estado do pacote em hold pelo apt-get pode ser alterado usando:

# echo nome_do_pacote hold | dpkg --set-selections

Substitua hold por install para remover o estado de hold.

Se existir alguma coisa que você precisa corrigir, é melhor certificar-se que o seu sources.list ainda se refere a wheezy como explicado na Seção A.2, “Verificando sua lista de fontes (sources list)”.

4.2.4. A seção proposed-updates

Se você tiver a seção proposed-updates presente no seu arquivo /etc/apt/sources.list, você deve removê-la desse arquivo antes de tentar atualizar o seu sistema. Essa é uma precaução para reduzir a probabilidade de conflitos.

4.2.5. Fontes não oficiais e backports

Se você tiver quaisquer pacotes não-Debian no seu sistema, você deve estar ciente de que esses podem ser removidos durante a atualização por causa de dependências conflitantes. Se esses pacotes foram instalados pela adição de um repositório extra no seu /etc/apt/sources.list, você deve verificar se tal repositório também oferece pacotes compilados para jessie e alterar a linha da fonte correspondente ao mesmo tempo que alterar as suas linhas das fontes para os pacotes Debian.

Alguns usuários podem ter versões atualizadas retroativamente (backported) não-oficiais mais novas dos pacotes que estão no Debian instaladas no seu sistema wheezy. Tais pacotes são mais prováveis de causar problemas durante a atualização, pois podem resultar em conflitos de arquivo[4]. A Seção 4.5, “Possíveis problemas durante a atualização” tem algumas informações sobre como lidar com conflitos de arquivo caso eles possam ocorrer.

4.3. Preparando as fontes para o APT

Antes de iniciar a atualização você deve ajustar as listas de pacote no arquivo de configuração do apt, /etc/apt/sources.list.

O apt considerará todos os pacotes que possam ser encontrados através de qualquer linha iniciada por deb, e instalará o pacote com o número de versão mais elevado, dando prioridade à primeira linha do arquivo (assim, onde você tiver múltiplas localizações de espelhos, normalmente indicará primeiro um disco rígido local, depois CD-ROMs, e então os espelhos HTTP/FTP).

Uma versão pode frequentemente ser referida tanto pelo seu codinome (por exemplo, wheezy, jessie) como pelo seu nome de estado (ou seja, oldstable, stable, testing, unstable). Referir-se a uma versão pelo seu codinome tem a vantagem que você nunca será surpreendido por uma nova versão, e por essa razão essa abordagem é adotada aqui. Isso significa certamente que você mesmo terá que ficar atento aos anúncios de lançamento. Se ao invés disso você usar o nome de estado, verá apenas grandes quantidades de atualizações dos pacotes disponíveis assim que um lançamento acontecer.

4.3.1. Adicionar fontes da Internet ao APT

A configuração padrão é definida para instalação a partir dos principais servidores do Debian na Internet, mas você pode querer modificar o /etc/apt/sources.list para usar outros espelhos, preferencialmente um espelho que esteja localizado o mais próximo de você em termos de rede.

Os endereços dos espelhos HTTP ou FTP do Debian podem ser encontrados em https://www.debian.org/distrib/ftplist (veja na seção lista de espelhos do Debian). Espelhos HTTP geralmente são mais rápidos do que espelhos FTP.

Por exemplo, suponha que seu espelho Debian mais próximo seja http://mirrors.kernel.org. Quando examinar esse espelho com um navegador web ou programa de FTP, você notará que os diretórios principais estão organizados assim:

http://mirrors.kernel.org/debian/dists/jessie/main/binary-s390/...
http://mirrors.kernel.org/debian/dists/jessie/contrib/binary-s390/...

Para usar esse espelho com o apt, você adiciona esta linha ao seu arquivo sources.list:

deb http://mirrors.kernel.org/debian jessie main contrib

Note que o dists é adicionado implicitamente, e os argumentos após o nome da versão são usados para expandir o caminho em múltiplos diretórios.

Após adicionar suas novas fontes, desabilite as linhas deb previamente existentes em sources.list pondo um sinal de cerquilha (#) no início delas.

4.3.2. Adicionando fontes ao APT para um espelho local

Ao invés de usar espelhos de pacotes HTTP ou FTP, você pode querer modificar o /etc/apt/sources.list para usar um espelho em um disco local (possivelmente montado sobre NFS).

Por exemplo, seu espelho de pacotes pode estar sob /var/ftp/debian/, e ter diretórios principais assim:

/var/ftp/debian/dists/jessie/main/binary-s390/...
/var/ftp/debian/dists/jessie/contrib/binary-s390/...

Para usar isso com o apt, adicione esta linha ao seu arquivo sources.list:

deb file:/var/ftp/debian jessie main contrib

Note que o dists é adicionado implicitamente, e os argumentos após o nome da versão são usados para expandir o caminho em múltiplos diretórios.

Após adicionar suas novas fontes, desabilite as linhas deb previamente existentes em sources.list pondo um sinal de cerquilha (#) no início delas.

4.3.3. Adicionando fontes ao APT a partir de mídia ótica

Se você quiser usar apenas CDs (ou mídias de DVDs ou Blu-ray), comente as linhas deb já existentes em /etc/apt/sources.list pondo um sinal de cerquilha (#) no início delas.

Certifique-se de que existe uma linha em /etc/fstab que habilite a montagem do seu drive de CD-ROM no ponto de montagem /cdrom (o ponto de montagem /cdrom exato é requerido pelo apt-cdrom). Por exemplo, se /dev/scd0 for seu drive de CD-ROM, o /etc/fstab deve conter uma linha como:

/dev/scd0 /cdrom auto noauto,ro 0 0

Note que não deve haver nenhum espaço entre as palavras noauto,ro no quarto campo.

Para verificar se funciona, insira um CD e tente executar

# mount /cdrom    # isso montará o CD no ponto de montagem
# ls -alF /cdrom  # isso deverá exibir o diretório raiz do CD
# umount /cdrom   # isso desmontará o CD

Depois, execute:

# apt-cdrom add

para cada CD-ROM de binários do Debian que você tiver, para adicionar os dados a respeito de cada CD à base de dados do APT.

4.4. Atualizando pacotes

A forma recomendada para atualizar a partir de versões anteriores do Debian é usar a ferramenta de gerenciamento de pacotes apt-get. Nos lançamentos anteriores, o aptitude era recomendado para esse propósito, mas as versões recentes do apt-get fornecem uma funcionalidade equivalente e também têm demonstrado maior consistência dando os resultados desejados nas atualizações.

Não esqueça de montar todas as partições necessárias (especialmente as partições raiz e /usr) com permissões de leitura e escrita, com um comando como:

# mount -o remount,rw /ponto-de-montagem

Em seguida, você deve confirmar novamente se as entradas das fontes do APT (em /etc/apt/sources.list) referem-se a jessie ou a stable. Não devem haver quaisquer entradas de fontes que apontem para wheezy

[Nota]Nota

As linhas de fontes de um CD-ROM podem às vezes se referir à unstable; embora isso possa ser confuso, você não deve alterá-las.

4.4.1. Gravando a sessão

É fortemente recomendado que você utilize o programa /usr/bin/script para gravar uma transcrição da sessão de atualização. Então, se um problema ocorrer, você terá um registro do que aconteceu e, se necessário, poderá fornecer informações precisas em um relatório de bug. Para iniciar a gravação, digite:

# script -t 2>~/upgrade-jessie-etapa.hora -a ~/upgrade-jessie-etapa.script

ou semelhante. Se você tiver que reexecutar a transcrição (por exemplo, se você tiver que reinicializar o sistema) use valores diferentes para etapa para indicar qual etapa da atualização você está registrando. Não ponha o arquivo de transcrição em um diretório temporário como /tmp ou /var/tmp (arquivos nesses diretórios podem ser excluídos durante a atualização ou durante qualquer reinicialização).

A transcrição também permitirá que você reveja informações que rolaram para fora da tela. Se você estiver no console do sistema, apenas mude para VT2 (usando Alt+F2) e, após se autenticar, use less -R ~root/upgrade-jessie-etapa.script para ver o arquivo.

Depois que você tiver completado a atualização, pode parar o script digitando exit no prompt.

TODO: (jfs) Could mention the script I provided in #400725 which is useful if
you have not dumped the timing file

Se você tiver usado a opção -t para o script você pode usar o programa scriptreplay para reproduzir toda a sessão:

# scriptreplay ~/upgrade-jessie-etapa.hora ~/upgrade-jessie-etapa.script

4.4.2. Atualizando a lista de pacotes

Primeiro, a lista de pacotes disponíveis para a nova versão precisa ser obtida. Isso é feito executando:

# apt-get update

4.4.3. Certifique-se que você tem espaço suficiente para a atualização

Você tem que se certificar, antes de atualizar o seu sistema, que você terá espaço em disco rígido suficiente quando iniciar a atualização completa do sistema descrita na Seção 4.4.5, “Atualizando o sistema”. Primeiro, qualquer pacote necessário para instalação que for obtido pela rede é armazenado em /var/cache/apt/archives (e no subdiretório partial/, durante o download), então você deve certificar-se que tem espaço suficiente na partição do sistema de arquivos que contém o /var/ para download temporário dos pacotes que serão instalados em seu sistema. Após o download, você provavelmente precisará de mais espaço em outras partições de sistemas de arquivos, tanto para instalação de pacotes atualizados (que podem conter executáveis maiores ou mais dados) quanto para novos pacotes que serão puxados pela atualização. Se o seu sistema não tiver espaço suficiente, você pode acabar com uma atualização incompleta que pode ser difícil de recuperar.

O apt-get pode exibir informações detalhadas sobre o espaço em disco necessário para a instalação. Antes de executar a atualização, você pode ver essa estimativa executando:

# apt-get -o APT::Get::Trivial-Only=true dist-upgrade
[ ... ]
XXX atualizados, XXX novos instalados, XXX para remover e XXX não atualizados.
Necessário obter xx.xMB de arquivos.
Após essa operação, AAAMB de espaço de disco adicional serão usados.
[Nota]Nota

Ao executar esse comando no início do processo de atualização, pode ocorrer um erro, devido às razões descritas nas próximas seções. Nesse caso, você precisará esperar até que tenha feito a atualização mínima do sistema, como na Seção 4.4.4, “Atualização mínima do sistema”, antes de executar esse comando para estimar o espaço em disco.

Se você não tiver espaço suficiente em disco para a atualização, o apt-get o avisará com uma mensagem como esta:

E: Você não tem espaço livre suficiente em /var/cache/apt/archives/.

Nessa situação, certifique-se de liberar espaço suficiente antes. Você pode:

  • Remover pacotes que tenham sido previamente baixados para instalação (em /var/cache/apt/archives). Limpar o cache de pacotes executando apt-get clean removerá todos os arquivos de pacote previamente baixados.

  • Remover pacotes esquecidos. Se você tiver usado o aptitude ou apt-get para instalar pacotes manualmente no wheezy, ele terá mantido o registro desses pacotes que você instalou manualmente e será capaz de marcar como redundantes aqueles pacotes obtidos apenas por dependências que não são mais necessárias devido ao pacote ter sido removido. Eles não marcarão para remoção pacotes que você instalou manualmente. Para remover automaticamente pacotes que não são mais usados, execute:

    # apt-get autoremove
    

    Você também pode usar o deborphan, debfoster ou cruft para encontrar pacotes redundantes. Não remova cegamente os pacotes apresentados por essas ferramentas, especialmente se você estiver usando opções agressivas diferentes do padrão que são propensas a falsos positivos. É altamente recomendado que você revise manualmente os pacotes sugeridos para remoção (ou seja, seus conteúdos, tamanhos e descrições) antes de removê-los.

  • Remova pacotes que ocupam muito espaço e não são necessários atualmente (você sempre pode reinstalá-los após a atualização). Se você tiver o popularity-contest instalado, você pode usar o popcon-largest-unused para listar os pacotes que você não usa e que ocupam mais espaço. Você pode encontrar apenas os pacotes que ocupam mais espaço em disco com dpigs (disponível no pacote debian-goodies) ou com o wajig (executando wajig size). Eles também podem ser encontrados com o aptitude. Inicie o aptitude em modo visual, selecione VisõesNova lista de pacotes plana, pressione l e digite ~i, então pressione S e digite ~installsize. Isso lhe dará uma lista conveniente para trabalhar.

  • Remover traduções e arquivos de localização do sistema se eles não forem necessários. Você pode instalar o pacote localepurge e configurá-lo para que apenas alguns locales selecionados sejam mantidos no sistema. Isso reduzirá o espaço de disco consumido em /usr/share/locale.

  • Mover temporariamente para um outro sistema, ou remover permanentemente, registros do sistema existentes em /var/log/.

  • Usar um /var/cache/apt/archives temporário: Você pode usar um diretório de cache temporário de um outro sistema de arquivos (dispositivo de armazenamento USB, disco rígido temporário, sistema de arquivos já em uso, ...)

    [Nota]Nota

    Não use uma montagem NFS pois a conexão de rede pode ser interrompida durante a atualização.

    Por exemplo, se você tiver um drive USB montado em /media/pendrive:

    1. remova os pacotes que tenham sido previamente baixados para instalação:

      # apt-get clean

    2. copie o diretório /var/cache/apt/archives para o drive USB:

      # cp -ax /var/cache/apt/archives /media/pendrive/

    3. monte o diretório de cache temporário no lugar do atual:

      # mount --bind /media/pendrive/archives /var/cache/apt/archives

    4. após a atualização, restaure o diretório /var/cache/apt/archives original:

      # umount /media/pendrive/archives

    5. remova o /media/pendrive/archives restante.

    Você pode criar o diretório de cache temporário em qualquer sistema de arquivos que esteja montado em seu sistema.

  • Fazer uma atualização mínima do sistema (veja a Seção 4.4.4, “Atualização mínima do sistema”) ou atualizações parciais do sistema seguidas por uma atualização completa. Isso permitirá atualizar o sistema parcialmente, e permite limpar o cache de pacotes antes da atualização completa.

Note que para remover pacotes com segurança, é aconselhável mudar o seu sources.list de volta para wheezy como descrito na Seção A.2, “Verificando sua lista de fontes (sources list)”.

4.4.4. Atualização mínima do sistema

Em alguns casos, fazer a atualização completa (como descrito abaixo) diretamente pode remover um grande número de pacotes que você queira manter. Nós portanto recomendamos um processo de atualização em duas partes: primeiro uma atualização mínima para superar esses conflitos, depois uma atualização completa como descrito na Seção 4.4.5, “Atualizando o sistema”.

Para fazer isso, primeiro execute:

# apt-get upgrade

Isso tem como efeito a atualização daqueles pacotes que podem ser atualizados sem a necessidade de que quaisquer outros pacotes sejam removidos ou instalados.

A atualização mínima do sistema também pode ser útil quando o sistema estiver com pouco espaço e uma atualização completa não puder ser feita devido às restrições de espaço.

Se o pacote apt-listchanges estiver instalado, ele mostrará (em sua configuração padrão) informações importantes sobre pacotes atualizados em um paginador. Pressione q após a leitura para sair do paginador e continue a atualização.

4.4.5. Atualizando o sistema

Uma vez que você tenha cumprido os passos anteriores, agora está pronto para continuar com a parte principal da atualização. Execute:

# apt-get dist-upgrade
[Nota]Nota

O processo de atualização para algumas versões anteriores recomendava o uso do aptitude para a atualização. Essa ferramenta não é recomendada para atualizações do wheezy para o jessie.

Isso realizará uma atualização completa do sistema, instalando as versões mais novas disponíveis de todos os pacotes, e resolvendo todas as mudanças de dependências possíveis entre pacotes em lançamentos diferentes. Se necessário, instalará alguns pacotes novos (normalmente novas versões de bibliotecas, ou pacotes renomeados), e removerá quaisquer pacotes obsoletos em conflito.

Quando atualizar a partir de um conjunto de CD-ROMs (ou DVDs), será pedido para inserir CDs específicos em vários pontos durante a atualização. Você pode ter que inserir o mesmo CD várias vezes; isso é devido a pacotes inter-relacionados que foram espalhados através dos CDs.

As novas versões dos pacotes instalados atualmente que não puderem ser atualizadas sem mudar o estado da instalação de um outro pacote serão deixadas em sua versão atual (exibidas como held back). Isso pode ser resolvido tanto utilizando o aptitude para escolher esses pacotes para instalação como tentando apt-get -f install pacote.

4.5. Possíveis problemas durante a atualização

As seções seguintes descrevem problemas conhecidos que podem aparecer durante uma atualização para o jessie.

4.5.1. O dist-upgrade falha com Could not perform immediate configuration

Em alguns casos a etapa apt-get dist-upgrade pode falhar após baixar os pacotes com:

E: Não foi possível realizar a configuração imediata no 'pacote'. Por favor, veja man 5 apt.conf sob APT::Immediate-Configure para detalhes.

Caso isso ocorra, executar apt-get dist-upgrade -o APT::Immediate-Configure=0 ao invés disso deve permitir que a atualização prossiga.

Outra possível solução para esse problema é adicionar temporariamente as fontes do wheezy e jessie ao seu sources.list e executar apt-get update.

4.5.2. Remoções esperadas

The upgrade process to jessie might ask for the removal of packages on the system. The precise list of packages will vary depending on the set of packages that you have installed. These release notes give general advice on these removals, but if in doubt, it is recommended that you examine the package removals proposed by each method before proceeding. For more information about packages obsoleted in jessie, see Seção 4.10, “Pacotes obsoletos”.

4.5.3. Loops de conflitos ou pré-dependências

Algumas vezes é necessário habilitar a opção APT::Force-LoopBreak no APT para que seja possível remover temporariamente um pacote essencial devido a um loop de Conflitos/Pré-Dependências. O apt-get o alertará sobre isso e cancelará a atualização. Você pode contornar isso especificando a opção -o APT::Force-LoopBreak=1 na linha de comando do apt-get.

É possível que uma estrutura de dependências do sistema possa estar tão corrompida de modo que necessite de intervenção manual. Normalmente, isso significa usar o apt-get ou

# dpkg --remove nome_do_pacote

para eliminar alguns dos pacotes problemáticos, ou

# apt-get -f install
# dpkg --configure --pending

Em casos extremos, você poderá ter que forçar a reinstalação com um comando como

# dpkg --install /caminho/para/nome_do_pacote.deb

4.5.4. Conflitos de arquivo

Os conflitos de arquivo não devem ocorrer se você atualizar a partir de um sistema puro wheezy, mas podem ocorrer se você tem backports não oficiais instalados. Um conflito de arquivo resultará em um erro como:

Descompactando <pacote-foo> (de <arquivo-de-pacote-foo>) ...
dpkg: erro processando <pacote-foo> (--install):
 tentando sobrescrever '<algum-nome-de-arquivo>',
 que também está no pacote <pacote-bar>
dpkg-deb: sub-processo de colagem morto pelo sinal (pipe quebrado)
 Erros foram encontrados enquanto processando:
 <pacote-foo>

Você pode tentar resolver um conflito de arquivo com a remoção forçada do pacote mencionado na última linha da mensagem de erro:

# dpkg -r --force-depends nome_do_pacote

Após consertar as coisas, você deve ser capaz de continuar a atualização repetindo os comandos do apt-get descritos anteriormente.

4.5.5. Mudanças de configuração

Durante a atualização, serão feitas perguntas com relação a configuração ou reconfiguração de diversos pacotes. Quando você for perguntado se algum arquivo no diretório /etc/init.d, ou o arquivo /etc/manpath.config deve ser substituído pela versão do mantenedor do pacote, normalmente é necessário responder yes para garantir a coerência do sistema. Você sempre pode reverter para as versões antigas, já que serão guardadas com uma extensão .dpkg-old.

Se você não tiver certeza do que fazer, anote o nome do pacote ou arquivo e resolva em um momento posterior. Você pode procurar no arquivo transcrito para rever as informações que estavam na tela durante a atualização.

4.5.6. Mudança de sessão para o console

Se você estiver executando a atualização usando o console local do sistema, você pode achar que em alguns momentos durante a atualização o console é comutado para uma visão diferente e você perde a visibilidade do processo de atualização. Por exemplo, isso pode acontecer em sistemas desktop quando o gerenciador de tela é reiniciado.

Para recuperar o console onde a atualização estava em execução você terá que usar Ctrl+Alt+F1 (se estiver na tela de inicialização gráfica) ou Alt+F1 (se estiver no console local em modo texto) para mudar de volta para o terminal virtual 1. Substitua F1 pela tecla de função com o mesmo número do terminal virtual onde a atualização estava em execução. Você também pode usar Alt+Seta Esquerda ou Alt+Seta Direita para mudar entre os diferentes terminais em modo texto.

4.5.7. Cuidados especiais com pacotes específicos

Na maioria dos casos, os pacotes deverão atualizar sem problemas entre wheezy e jessie. Existe um pequeno número de casos onde alguma intervenção pode ser necessária, seja antes ou durante a atualização; esses estão detalhados a seguir baseados por pacote.

4.5.7.1. Sudo

TODO: Is this relevant for Jessie (or was it is a thing for Wheezy)?

Se você tiver modificado o /etc/sudoers então você deve estar ciente das mudanças feitas sobre como a configuração do sudo é tratada. O /etc/sudoers padrão agora inclui as duas seguintes diretivas:

Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
#includedir /etc/sudoers.d

Nenhuma dessas entradas é adicionada ao seu /etc/sudoers automaticamente durante a atualização. (Embora você ainda será capaz de executar comandos sudo especificando o seu caminho completo.) Então você pode querer considerar a migração de suas mudanças para o novo diretório /etc/sudoers.d e usar o arquivo /etc/sudoers padrão. Por exemplo:

# mv /etc/sudoers /etc/sudoers.d/mychanges
# mv /etc/sudoers.dpkg-new /etc/sudoers

Você também pode precisar editar o seu /etc/sudoers.d/mychanges para remover entradas Defaults e #includedir não desejadas. Você deve usar visudo para isso:

# visudo -f /etc/sudoers.d/mychanges

4.6. Atualizando o seu kernel e pacotes relacionados

Esta seção explica como atualizar o seu kernel e identifica potenciais problemas relacionados com essa atualização. Você pode instalar um dos pacotes linux-image-* fornecidos pelo Debian, ou compilar um kernel customizado a partir do fonte.

Note que muitas das informações nesta seção são baseadas na suposição de que você usará um dos kernels modulares do Debian, juntamente com o initramfs-tools e o udev. Se você escolher utilizar um kernel customizado que não requeira uma initrd ou se você utiliza um gerador de initrd diferente, algumas das informações podem não ser relevantes para você.

4.6.1. Instalando o meta-pacote do kernel

Quando você fizer dist-upgrade do wheezy para o jessie, é fortemente recomendado que você instale um metapacote linux-image-*, caso você não tenha feito antes. Esse pacote pode ser automaticamente instalado pelo processo dist-upgrade. Você pode verificar isso executando:

# dpkg -l "linux-image*" | grep ^ii

Caso você não veja nenhuma saída, então você precisará instalar um novo pacote linux-image manualmente. Para ver uma lista de metapacotes linux-image disponíveis, execute:

# apt-cache search linux-image- | grep -v transition

Se você estiver inseguro sobre qual pacote selecionar, execute uname -r e procure um pacote com um nome semelhante. Por exemplo, caso você veja '2.6.32-5-amd64', é recomendado que você instale linux-image-amd64. Você também pode usar apt-cache para ver uma longa descrição de cada pacote a fim de ajudar a escolher o melhor disponível. Por exemplo:

# apt-cache show linux-image-amd64

Você deverá então usar apt-get install para instalá-lo. Uma vez que o novo kernel esteja instalado, você deverá reinicializar assim que for possível para obter os benefícios oferecidos pela nova versão do kernel.

Para os mais aventureiros, existe uma forma fácil de compilar seu próprio kernel customizado no Debian. Instale os fontes do kernel, fornecidos no pacote linux-source. Você pode fazer uso do alvo deb-pkg disponível no makefile dos fontes para construir um pacote binário. Mais informações podem ser encontradas no Debian Linux Kernel Handbook, o qual também pode ser encontrado como o pacote debian-kernel-handbook.

Se possível, é vantajoso atualizar o pacote do kernel separadamente do dist-upgrade principal para reduzir as chances de ter um sistema temporariamente não-inicializável. Note que isso deverá ser feito somente após o processo de atualização mínima descrito na Seção 4.4.4, “Atualização mínima do sistema”.

4.6.2. Problemas de tempo de inicialização (esperando por dispositivo raiz)

Se uma initrd criada com o initramfs-tools for usada para inicializar o sistema, em alguns casos a criação dos arquivos de dispositivos pelo udev pode ocorrer muito tarde para que os scripts de inicialização atuem.

Os sintomas habituais são que a inicialização falhará porque o sistema de arquivos raiz não pode ser montado e você é deixado em um shell de depuração:

Gave up waiting for root device.  Common problems:
 - Boot args (cat /proc/cmdline)
   - Check rootdelay= (did the system wait long enough?)
   - Check root= (did the system wait for the right device?)
 - Missing modules (cat /proc/modules; ls /dev)
ALERT!  /dev/something does not exist.  Dropping to a shell!
(initramfs) 

Mas se você verificar posteriormente, todos os dispositivos que são necessários estão presentes em /dev. Isso foi observado em casos onde o sistema de arquivos raiz está em um disco USB ou em um RAID, especialmente se for usado LILO.

Uma forma de contornar esse problema é usar o parâmetro de inicialização rootdelay=9. O valor para o timeout (em segundos) talvez precise ser ajustado.

4.7. Coisas para fazer antes de reinicializar

Quando o apt-get dist-upgrade terminar, a atualização formal estará completa, mas existem algumas outras coisas com as quais deve-se ter cuidado antes da próxima reinicialização.

4.7.1. Purging removed packages

It is generally advisable to purge removed packages. This is especially true, if these have been removed in an earlier release upgrade (e.g. from the upgrade to wheezy) or from third-party vendors. In particular, old init.d scripts have been known to cause issues.

[Cuidado]Cuidado

Purging a package will generally also purge its log files, so you might want to back them up first.

The following command displays a list of all removed packages that may have configuration files left on the system (if any):

    # dpkg -l | awk '/^rc/ { print $2 }'
  

The packages can be removed by using apt-get purge. Assuming you want to purge all of them in one go, you can use the following command:

    # apt-get purge $(dpkg -l | awk '/^rc/ { print $2 }')
  

If you use aptitude, you can also use the following alternative to the commands above:

    $ aptitude search '~c'
    $ aptitude purge '~c'
  

4.8. Preparar para a próxima versão

Após a atualização, existem diversas coisas que você pode fazer para preparar para a próxima versão.

4.9. Componentes obsoletos

Com a próxima versão do Debian 9 (codinome stretch), alguns recursos estarão obsoletos. Os usuários precisarão migrar para outras alternativas para evitar aborrecimento quando atualizar para 9.

Isso inclui os seguintes recursos:

4.10. Pacotes obsoletos

Introducing lot of new packages, jessie also retires and omits quite some old packages that were in wheezy. It provides no upgrade path for these obsolete packages. While nothing prevents you from continuing to use an obsolete package where desired, the Debian project will usually discontinue security support for it a year after jessie's release[5], and will not normally provide other support in the meantime. Replacing them with available alternatives, if any, is recommended.

Existem muitas razões pela quais os pacotes podem ter sido removidos da distribuição: eles não são mais mantidos pelo upstream; não existe mais nenhum Desenvolvedor Debian interessado em manter os pacotes; a funcionalidade que eles fornecem foi substituída por um software diferente (ou uma nova versão); ou eles não são mais considerados adequados para o jessie devido a bugs nos mesmos. Nesse último caso, os pacotes podem ainda estar presentes na distribuição unstable.

A detecção de quais pacotes são obsoletos em um sistema atualizado é fácil, já que as interfaces de gerenciamento de pacotes os marcarão como tal. Se você estiver usando o aptitude, você verá uma lista desses pacotes na entrada Pacotes Criados Localmente e Obsoletos.

O Sistema de Rastreamento de Bugs do Debian frequentemente fornece informações adicionais sobre a razão da remoção do pacote. Você deve revisar tanto os relatórios de bug arquivados para o próprio pacote quanto os relatórios de bug arquivados para o pseudo-pacote ftp.debian.org.

A lista dos pacotes obsoletos inclui:

  • postgresql-9.1, successor is postgresql-9.4. Once the operating system upgrade is finished, you should plan to also upgrade your PostgreSQL 9.1 database clusters to the new PostgreSQL version 9.4 using the pg_upgradecluster tool.

  • python3.2, successor is python3.4. (Version 2.7 is supported in both wheezy and jessie.)

  • ruby1.8 and ruby1.9.1; successor is ruby2.1. Please install the package ruby to automatically track the current ruby version.

  • mplayer; alternatives are mplayer2, and mpv (new in jessie). Whilst the former is mostly compatible with mplayer in terms of command-line arguments and configuration (and adds a few new features too), the latter adds a lot of new features and improvements, and it is actively maintained upstream.

  • openoffice.org; please use libreoffice.

  • squid, successor is squid3.

4.10.1. Pacotes fictícios

Alguns pacotes do wheezy foram separados em diversos pacotes no jessie, muitas vezes para melhorar a manutenção do sistema. Para facilitar o caminho de atualização em tais casos, o jessie geralmente fornece pacotes fictícios: pacotes vazios que têm o mesmo nome como nos antigos pacotes do wheezy, com dependências que fazem com que os novos pacotes sejam instalados. Esses pacotes fictícios são considerados redundantes após a atualização e podem ser seguramente removidos.

A maioria (mas não todas) das descrições dos pacotes fictícios indica o seu propósito. As descrições de pacotes para pacotes fictícios não são uniformes, entretanto, você pode também considerar útil o deborphan com as opções --guess-* (por exemplo, --guess-dummy) para detectá-los em seu sistema. Note que alguns pacotes fictícios não têm como finalidade serem removidos após uma atualização mas são, ao invés disso, usados para acompanhar a atual versão disponível de um programa ao longo do tempo.



[1] Se a prioridade do debconf estiver configurada em um nível muito alto, você pode evitar perguntas de configuração, mas os serviços que dependam de respostas predefinidas que não são aplicáveis aos seu sistema falharão ao iniciar.

[2] Por exemplo: serviços de DNS ou DHCP, especialmente quando não há redundância ou substituto em caso de falha (failover). No caso do DHCP, os usuários finais poderão ser desconectados da rede se o tempo de concessão (lease time) for menor do que o tempo que leva para completar o processo de atualização.

[3] Esse recurso pode ser desabilitado adicionando o parâmetro panic=0 aos seus parâmetros de inicialização.

[4] O sistema de gerenciamento de pacotes do Debian normalmente não permite que um pacote remova ou atualize um arquivo pertencente a outro pacote, a menos que ele tenha sido definido para substituir esse pacote.

[5] Ou enquanto não existir outro lançamento durante esse período de tempo. Normalmente, apenas duas versões estáveis são suportadas em um dado momento.