O seguinte script python analisa a saída de apt-cache policy
e gera a lista de todos os pacotes instalados com o formato de saída
Package<tab>Version<tab>Origin<tab>Suite
apt-show-origins
#!/usr/bin/env python
# Should be written with python-apt
# but for now parse the output of apt-cache policy
import os
import re
command = "apt-cache policy $(dpkg -l | awk '/ii/ {print $2}' )"
stream = os.popen(command);
content = stream.readlines()
getOrigin = False
pkgList = []
#Parse the output generated by apt-cache
for s in content:
if(not s.startswith(' ')):
pkg = type('', (), {})() #Create an empty object
pkg.name = s[:-2] #Remove trailing ':\n'
elif(getOrigin):
pkg.origin = re.split('\s+',s)[2]
pkg.suite = re.split('\s+',s)[3]
pkgList.append(pkg)
getOrigin = False
elif(s.startswith(' ***')):
pkg.version = re.split('\s+',s)[2]
getOrigin = True
#Display the list
for pkg in pkgList:
print pkg.name + '\t'\
+ pkg.version + '\t'\
+ pkg.origin + '\t'\
+ pkg.suite
Notas:
- Ao contrário do que é dito nos comentários
apt-show-versions
ainda é mantido, verifique a lista de discussão oficial . Mas não pode ajudar porque não produz a origem do pacote.