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
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.