Eu gerencio vários servidores Debian e geralmente rastreio o repositório Debian estável, mas ocasionalmente instalo a partir do repositório de teste do Debian ou de fontes de terceiros. Para fins de auditoria, em cada máquina, para todos os pacotes atualmente instalados, gostaria de comparar a versão do pacote instalado com a versão do pacote em um repositório específico, isto é, o repositório estável do Debian.
Utilizando os padrões de pesquisa do aptitude, posso identificar os pacotes instalados que estão ou não disponíveis no repositório estável da Debian:
aptitude search "?installed?origin(Debian)?archive(stable)"
aptitude search "?installed?not(?origin(Debian)?archive(stable))"
Mas para os pacotes que estão disponíveis no repositório Debian estável eu não sou capaz de determinar se a versão instalada corresponde à versão no repositório.
Suponho que seja possível usar o apt pinining para forçar um downgrade:
Package: *
Pin: release n=stable, o=Debian
Pin-Priority: 1001
E, em seguida, use o modo de execução a seco para verificar quais pacotes seriam afetados:
apt-get update
apt-get --dry-run upgrade
Mas mitigar os riscos de usar o apt pinning acima de 1000 exigiria uma configuração separada para o apt, o que parece ser mais complicado do que o necessário.
Uma possibilidade daqui para frente seria configurar um repositório privado e apenas instalar a partir do repositório estável do Debian ou do repositório privado. Então, se um pacote estivesse disponível a partir do repositório privado, poderia ser assumido (para fins de auditoria) não ter sido instalado a partir do repositório estável do Debian. Desde que os pacotes nunca sejam instalados manualmente, isso pode funcionar razoavelmente bem. Mas configurar um repositório privado parece um pouco exagerado para o que poderia ser um comando simples.
Existe uma maneira melhor de auditar versões de pacotes? Ou melhor ainda, para auditar assinaturas de pacotes?