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:
- 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;
- Para configurar o comando rpm a fazer a mesma coisa, adicione a linha
%_repackage_all_erasures 1
ao arquivo /etc/rpm/macros;
- Instale, remova e atualize pacotes como quiser, usando o Pup, Pirut, Yumex, yum, rpm e yum-updatesd;
- 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
Lançado livro sobre OpenOffice
urlmenor.com: acabe com as URL's quilométricas
Como habilitar o repositório do Debian no Vyatta
Colocar arquivos mostrados por um comando em um pacote .tar no Linux
Liberando acessos ao ldconfig com SELinux enforced
Leitura recomendada
Plugin Java no Banco do Brasil para Ubuntu 64 bits
Áreas de trabalho realmente novas no KUbuntu 6
Colocar o syntax highlighting do Vim funcionando corretamente
Tutoriais IBM DeveloperWorks
Inicializando uma máquina virtual no VirtualBox via pendrive USB
Comentários
Nenhum comentário foi encontrado.