Você pode usar app-portage/genlop
para isso.
genlop -l --date some_date
listará todos os pacotes mesclados a partir dessa data. (Você também pode especificar uma data final.)
Para obter uma lista de pacotes adequados para emerge --unmerge
, tente algo como:
genlop -ln --date 2011/10/02 | perl -ne '/>>> (.*)/ and print " =$1";'
Verifique novamente essa lista antes de realmente desenterrá-la, removendo pacotes do sistema por acidente não é divertido.
Outra maneira de obter uma lista de coisas mescladas após uma determinada data é ver o BUILD_TIME
salvo no banco de dados do portage.
#!/bin/bash
stime=$(date -d "$1" +%s)
for dir in /var/db/pkg/*/* ; do
if [ -f $dir/BUILD_TIME ] ; then
btime=$(<$dir/BUILD_TIME)
if [ $btime -ge $stime ] ; then
package=$(basename $dir)
category=$(basename $(dirname $dir))
echo $category/$package
fi
fi
done
Chame isso de uma data (ou seja, ./script "2001/09/30 21:32"
) e você terá uma lista de pacotes mesclados desde essa data.
O Portage não armazena se uma fusão foi uma nova instalação ou uma atualização em seu banco de dados. Você poderia reconstruir essa informação a partir do arquivo emerge.log
supondo que você tenha todo o histórico do seu sistema lá.
Uma maneira mais simples de lidar com tudo isso seria usar conjuntos de pacotes. Crie um conjunto cada vez que você experimentar uma nova receita e use-a para fazer suas limpezas. (Depclean ainda é necessário.)
# echo dev-perl/IO-AIO > /etc/portage/sets/my_set
# emerge -a @my_set
These are the packages that would be merged, in order:
Calculating dependencies... done!
[ebuild N ] dev-perl/IO-AIO-2.33
Would you like to merge these packages? [Yes/No] y
>>> Recording @my_set in "world" favorites file...
...
>>> Installing (1 of 1) dev-perl/IO-AIO-2.33
>>> Auto-cleaning packages...
>>> No outdated packages were found on your system.
* GNU info directory index is up-to-date.
# emerge -a --unmerge @my_set
* This action can remove important packages! In order to be safer, use
* 'emerge -pv --depclean <atom>' to check for reverse dependencies before
* removing packages.
>>> These are the packages that would be unmerged:
dev-perl/IO-AIO
selected: 2.33
protected: none
omitted: none
All selected packages: dev-perl/IO-AIO-2.33
>>> 'Selected' packages are slated for removal.
>>> 'Protected' and 'omitted' packages will not be removed.
Would you like to unmerge these packages? [Yes/No]