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.