No Debian, como auditar pacotes instalados contra pacotes em um repositório específico?

1

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?

    
por Daniel Kauffman 26.09.2013 / 22:19

1 resposta

0

Assim:

aptitude search "?installed?not(?narrow(?installed,?origin(^Debian$)?archive(^stable$)))"

Usando ?narrow compara nomes de pacotes e versões, então o acima compara nomes e versões de pacotes instalados com os nomes e versões de pacotes do repositório estável da Debian, e então inverte a correspondência para encontrar pacotes instalados. que não correspondem à versão no repositório Debian estável.

A sugestão de Danila Ladner dos comentários também foi útil; Eu alimentei os resultados do comando aptitude para apt-cache policy <package> para ver os detalhes da versão dos pacotes que surgiram na pesquisa inicial e precisei de um olhar mais atento.

    
por 27.09.2013 / 10:08