Desinstalando todos os programas instalados a partir de uma data específica
Nesse meu primeiro artigo vou mostrar como é possível desinstalar todos os programas instalados no Linux a partir de uma data fornecida pelo usuário. Fiz este procedimento utilizando uma distribuição baseada no Debian, ou seja, só serão desinstalados os pacotes ".deb", porém com alguns ajustes pode ser facilmente adaptado para outra distribuição.
Introdução
Apesar do apt-get avisar antes, cuidado ao executar este script, pois dependendo da data informada ou dos pacotes instalados/atualizados ele pode literalmente acabar com seu sistema. Pra evitar isso, certifique-se na hora de confirmar a desinstalação que não hajam pacotes essenciais ao funcionamento do sistema, por exemplo kernel-image ou base-files.
Fique atento também as mensagens que serão geradas pelo apt-get no console avisando do perigo de desinstalar determinado pacote. Se souber o que está fazendo, altere o que for necessário para continuar, caso contrário NÃO EXECUTE ESTE SCRIPT. ;)
Nos sistemas baseados no Debian, ou seja, que utilizam pacotes "*.deb" para instalar programas, todos os pacotes instalados/atualizados/removidos ficam "logados" em um arquivo chamado /var/log/dpkg.log. Este arquivo segue o seguinte formato:
data hora ação <nome_do_pacote> versão
Um exemplo disso:
2007-07-20 01:06:53 install 9menu 1.8-1.1ubuntu1
Aqui foi solicitada a instalação do pacote 9menu às 01:06:53 hs do dia 20/07/2007.
Basicamente o que faremos é ler este arquivo e dele extrair somente o nome dos pacotes instalados após a data que informarmos, os quais serão desinstalados.
Para isso, construiremos um script em awk que retornará os pacotes que deverão ser desinstalados e um comando em shell script que basicamente executará a ação de desinstalar os pacotes que o script anterior retornar.
Fique atento também as mensagens que serão geradas pelo apt-get no console avisando do perigo de desinstalar determinado pacote. Se souber o que está fazendo, altere o que for necessário para continuar, caso contrário NÃO EXECUTE ESTE SCRIPT. ;)
Nos sistemas baseados no Debian, ou seja, que utilizam pacotes "*.deb" para instalar programas, todos os pacotes instalados/atualizados/removidos ficam "logados" em um arquivo chamado /var/log/dpkg.log. Este arquivo segue o seguinte formato:
data hora ação <nome_do_pacote> versão
Um exemplo disso:
2007-07-20 01:06:53 install 9menu 1.8-1.1ubuntu1
Aqui foi solicitada a instalação do pacote 9menu às 01:06:53 hs do dia 20/07/2007.
Basicamente o que faremos é ler este arquivo e dele extrair somente o nome dos pacotes instalados após a data que informarmos, os quais serão desinstalados.
Para isso, construiremos um script em awk que retornará os pacotes que deverão ser desinstalados e um comando em shell script que basicamente executará a ação de desinstalar os pacotes que o script anterior retornar.
abraços