Você precisa verificar cada pacote fornecido pelo repositório individualmente.
Se o pacote é apenas uma reconstrução local e a string de versão é a mesma que em outro repositório, você deve verificar manualmente o md5sums em /var/lib/dpkg/info/PACKAGE.md5sums (se o pacote não compilar nada e as estruturas de repositório não diferem, não há como esclarecer a origem).
Se as strings da versão forem diferentes, você poderá usar o seguinte trecho de código:
#!/usr/bin/python
# Check original repository of installed packages from list.
# Usage: script PACKAGELIST
import apt
import sys
import re
# set values for local repository
component = "main"
archive = "experimental"
origin = "Debian"
label = "Debian"
site = "ftp.debian.org"
def main():
try:
pkglist = []
f = open(sys.argv[1], "r")
for line in f:
if re.match('^Package: ', line):
pkglist.append(re.sub('^Package: ', '', line).rstrip('\n'))
f.close()
cache = apt.Cache()
for package in pkglist:
pkg = cache[package]
# check if package is installed
if not pkg.installed:
continue
if pkg.installed.origins[0].component != component or \
pkg.installed.origins[0].archive != archive or \
pkg.installed.origins[0].origin != origin or \
pkg.installed.origins[0].label != label or \
pkg.installed.origins[0].site != site:
print package
#continue
#else:
# print package + " is in repo."
except KeyboardInterrupt:
print "\nShutdown requested...exiting"
except Exception, e:
sys.stderr.write("An unecpected exeption was encountered: %s" % str(e) + "\n")
sys.exit(1)
if __name__ == "__main__":
main()
O uso é script PACKAGELIST
, por exemplo:
script /var/lib/apt/lists/ftp.debian.org_debian_dists_experimental_main_binary-amd64_Packages
Você também precisa ajustar o componente, arquivar, ... para o seu arquivo local (veja o arquivo de lançamento relacionado em /var/lib/apt/lists
).
Se o pacote estiver instalado, mas não do seu repositório, você obtém o nome do pacote - tudo está bem, se não.