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

Publicado por Davidson Rodrigues Paulo em 12/09/2007

[ Hits: 18.228 ]

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

Fazendo o rpm voltar a funcionar depois de remover o sqlite

Lançado livro sobre OpenOffice

Disquete no Linux sem precisar desmontar

Como habilitar o repositório do Debian no Vyatta

Resolvendo problemas de dependências das bibliotecas do X

Leitura recomendada

Sem Itens Repetidos no bash_history

Resolvendo dependências Xlibs para Cedega 5.0 no Ubuntu Dapper

Compartilhando e acessando impressora no Ubuntu

Melhores listas de IPTV para adicionar no Hypnotix ou IPTVnator

Eliminando a necessidade do qtwebengine no Gentoo

  

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