Eu basicamente implementei um sistema para vigiar os pacotes instalados em nosso ambiente, coletando informações sobre eles e checando, se alguns deles forem instalados com uma versão incorreta. Como alguns desses pacotes vêm de nossos próprios repositórios internos, é necessário saber de onde veio o pacote.
Usando a API APT do Python:
#! /usr/bin/python3
import apt
cache = apt.cache.Cache()
for pkg in cache:
if pkg.is_installed:
name = pkg.name
version = pkg.installed.version
origins = [o.site for o in pkg.installed.origins if o.site]
print(name, version, origins)
Exemplo de saída:
$ ./foo.py| head
a11y-profile-manager-indicator 0.1.10-0ubuntu3 ['jp.archive.ubuntu.com']
account-plugin-facebook 0.12+16.04.20160126-0ubuntu1 ['jp.archive.ubuntu.com', 'jp.archive.ubuntu.com']
account-plugin-flickr 0.12+16.04.20160126-0ubuntu1 ['jp.archive.ubuntu.com', 'jp.archive.ubuntu.com']
account-plugin-google 0.12+16.04.20160126-0ubuntu1 ['jp.archive.ubuntu.com', 'jp.archive.ubuntu.com']
accountsservice 0.6.40-2ubuntu11.3 ['jp.archive.ubuntu.com']
acl 2.2.52-3 ['jp.archive.ubuntu.com']
acpi-support 0.142 ['jp.archive.ubuntu.com']
acpid 1:2.0.26-1ubuntu2 ['jp.archive.ubuntu.com']
activity-log-manager 0.9.7-0ubuntu23.16.04.1 ['jp.archive.ubuntu.com']
adduser 3.113+nmu3ubuntu4 ['jp.archive.ubuntu.com', 'jp.archive.ubuntu.com']