Use uma ferramenta interativa que permite obter facilmente informações sobre um pacote (sua descrição, suas dependências, o que depende dele,…). Você pode usar o aptitude em um terminal de texto. Existem também programas GUI para isso.
Tenha em atenção que é difícil saber se é necessário um pacote. Às vezes, um pacote pode ser usado de uma maneira que não é óbvia para os não iniciados. Com os kernels Linux entre 2.6.30 e 3.19, os tempos de acesso a arquivos não são salvos com precisão por padrão. Mesmo com sistemas configurados para salvar tempos de acesso a arquivos, as informações podem não estar completas, por exemplo, para arquivos que são acessados durante a primeira inicialização antes que a partição raiz seja montada como read-write (por exemplo, com base apenas nos tempos de acesso, você acabaria informando o kernel como não utilizado).
Os programas que estão instalados, mas não em execução, são prejudicados apenas se você tiver pouco espaço em disco. O espaço em disco foi levemente caro há 20 anos, mas hoje, os programas instalados ocupam uma quantidade insignificante na maioria dos cenários, e isso não justifica uma busca por programas não utilizados. Se você estiver com pouco espaço em disco (por exemplo, em um VPS barato), você pode usar o seguinte comando para listar os pacotes por tamanho:
dpkg-query -W -f='${Installed-Size;8} ${Package}\n' | sort -n
Os programas que estão instalados e em execução, mas não são realmente usados, podem causar danos porque usam memória ou são um risco de segurança. No entanto, não há como determinar isso automaticamente, você realmente precisa entender o que o programa está fazendo.