No Debian e derivados, as informações sobre instalação manual vs automática são armazenadas em /var/lib/apt/extended_states
. Não há backups automáticos nem registros. Se você tiver um backup desse arquivo, restaure-o.
Se você não tiver um backup, faça primeiro um caso você faça as malas. Em seguida, para cada pacote, altere a linha Auto-Installed: 0
para Auto-Installed: 1
para marcar o pacote como instalado manualmente.
O próprio APT não controla as dependências dos pacotes instalados, o que é feito pelo dpkg. As informações estão em /var/lib/dpkg/status
no Debian. Aptitude tem uma funcionalidade de pesquisa avançada que pode operar em dependências, mas não apt. Você pode fazer uma análise ad hoc de /var/lib/dpkg/status
. O script a seguir (minimamente testado) gera uma lista de pacotes dos quais alguns pacotes instalados dependem:
</var/lib/dpkg/status awk '
/^Package:/ {package=$2}
/^Status:/ && $4 != "installed" {package=""}
/^(Depends|Pre-Depends|Recommends|Suggests):/ && package != "" {
sub(/^[^:]*: */, "");
gsub(/ (\([^()]*\))/, "");
split($0, dependencies, /[|, ]+/);
for (d in dependencies) print dependencies[d]}
' | sort -u >dependencies.txt
Revise essa lista e, talvez, remova algumas linhas que são pacotes que, por acaso, são dependências, mas que você sabe que vai querer manter, mesmo que sejam indiferentes. Em seguida, use isso para ajustar /var/lib/apt/extended_states
:
</var/lib/apt/extended_states awk '
BEGIN {
while (getline <"dependencies.txt") auto[$0]=1;
RS="";
}
$2 in auto {sub(/\nAuto-Installed: 0/, "\nAuto-Installed: 1")}
{print $0 "\n"}
' >extended_states.new
Revise o arquivo de saída e mova-o para o lugar se estiver satisfeito.