Desfazendo atualizações de software no Red Hat/Fedora/CentOS

Publicado por Davidson Rodrigues Paulo em 12/09/2007

[ Hits: 17.785 ]

Blog: http://davidsonpaulo.com/

 


Desfazendo atualizações de software no Red Hat/Fedora/CentOS



As ferramentas de administração do Fedora - incluindo Yum, Pup e Pirut - são todas basedas no formato e sistema de gerenciamento de pacotes RPM. Um segredo pouco conhecido do RPM é que ele pode ser configurado para reempacotar os arquivos de um pacote RPM durante a sua desinstalação, salvando os arquivos (possivelmente modificados) em um novo pacote RPM. O pacote RPM reempacotado incorpora quaisquer modificações que tenham sido feitas aos arquivos de configuração, scripts e arquivos de dados originalmente incluídos com o software, o que significa que é possível desfazer a desinstalação do software, restaurando o pacote para o estado em que ele se encontrava antes de ser removido.

O mecanismo de restauração (rollback) também pode desfazer processos de instalação de pacotes desinstalando os recém-instalados e, uma vez que uma atualização de software é realizada instalando uma nova versão deste e removendo a anterior, o mecanismo de restauração também pode desfazer atualizações de pacotes.

Eis um exemplo:
  • Você instala o pacote sendmail ao instalar o Fedora Core;
  • Você modifica a configuração de sendmail para atender às suas necessidades;
  • Você decide remover sendmail usando yum ou o Pirut (ou rpm, ou o Yumex);
  • Quando sendmail é desinstalado (removido), os arquivos deste pacote são recolhidos - incluindo os arquivos de configuração modificados - e salvos no pacote RPM reempacotado;
  • Depois você conclui que desinstalar sendmail foi uma má idéia. Se você reinstalar o pacote original, a configuração padrão será carregada. Ao invés disso, você pode desfazer a remoção do pacote, o que faz com que o pacote reempacotado seja instalado - incluindo os arquivos de configuração modificados.

O processo de restauração/reempacotamento está longe de ser perfeito - arquivos de dados criados e usados pelo pacote (mas não inclusos no pacote original) não são salvos no processo de reempacotamento, por exemplo, e alguns scripts RPM assumem que os pacotes são sempre atualizados para versões mais novas e nunca antigas. Não obstante, a restauração de pacotes pode ser um recurso muito útil, especialmente quando um processo de atualização faz com que algo páre de funcionar. O reempacotamento pode usar muito espaço em disco, por isso é desabilitado por padrão, e não há uma forma de habilitá-lo a realizar uma restauração a partir da linha de comando. Segue a "receita de bolo" para usar este recurso:
  1. Para configurar o Yum (e o Pup, Pirut e yum-updatesd) a reempacotar os RPM's, adicione a linha

    tsflags=repackage

    ao arquivo /etc/yum.conf;
  2. Para configurar o comando rpm a fazer a mesma coisa, adicione a linha

    %_repackage_all_erasures 1

    ao arquivo /etc/rpm/macros;
  3. Instale, remova e atualize pacotes como quiser, usando o Pup, Pirut, Yumex, yum, rpm e yum-updatesd;
  4. Se/quando você quiser restaurar o sistema para um estado anterior, faça uma atualização com o comando rpm usando a opção --rollback seguida da data/horário (a restauração é baseada em tempo porque os pacotes afetam as configurações uns dos outros - se você removeu o pacote a, então b, então c, e então retornar apenas o pacote a, algumas configurações podem ser perdidas).

Alguns exemplos:

# rpm -Uvh --rollback '9:00 am'
# rpm -Uvh --rollback '4 hours ago'
# rpm -Uvh --rollback 'december 25'


Os pacotes reempacotados são armazenados no diretório /var/spool/repackage.
Outras dicas deste autor

Fedora 7 Live: instalação em computadores com pouca RAM

Removendo vários pacotes no Slackware de forma rápida

Livro Squid, solução definitiva

Você conhece o Apatar?

Montando partições remotas do SAMBA no boot

Leitura recomendada

Sons simultâneos no Debian Squeeze

Iceweasel - Versão atual no CrunchBang

Upgrade no KDE: "Call to lnusertemp failed (temporary directories full?). Check your installation"

Configurar SmartLink no Slackware 11 com kernel-2.6.17.13

Montar partição em tempo de inicialização (Ubuntu 10.x)

  

Comentários

Nenhum comentário foi encontrado.



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts