De retour avec une nouvelle version !
Je n'ai pas intégré les améliorations de claudiux qui sont intéressantes ...
Ce qui me gène le plus, c'est que sur mon PC des centaines de paquets (librairies, ...) sont passés en mode "installé manuellement" (lors du passage a Ubuntu 14.10 je crois, mais c'est pas sur).
Du coup le script n'a plus beaucoup d’intérêts je trouve, mais je publie a nouvelle version si çà peut servir 🙂
Je donne en bas des liens en rapports avec ce sujet.
#!/bin/python
# coding=UTF8
import subprocess
import os
import re
os.chdir("/var/log/")
# thanks to http://forum.hardware.fr/hfr/Programmation/Python/python-suppresion-doublons-sujet_103862_1.htm
def nub1(inpt):
nv = []
[nv.append(item) for item in inpt if not item in nv]
return nv
class an_install:
def __init__(self, name, date, hour, version ):
self.name=name
self.date=date
self.hour=hour
self.version=version
self.cat=""
def __eq__(self,other):
return self.name.__eq__(other.name)
proc = subprocess.Popen(["lsb_release","-r"], stdout=subprocess.PIPE)
response,err = proc.communicate()
version=str.split(response,'\t')[1].replace("\n","")
proc = subprocess.Popen(["uname","-m"], stdout=subprocess.PIPE)
response,err = proc.communicate()
archi=response.replace("\n","")
if archi == 'x86_64':
archi='amd64'
# recuperation de tous les paquets présents lors de l'install :
import urllib2
url="http://releases.ubuntu.com/"+version+"/ubuntu-"+version+"-desktop-"+archi+".manifest"
print ("requesting " +url)
a=urllib2.urlopen(url).read()
default_package_instal=[i.split('\t')[0] for i in a.split("\n")]
proc = subprocess.Popen(["apt-mark","showmanual"], stdout=subprocess.PIPE)
manualInstalls,err = proc.communicate()
manual_package_instal=[an_install(i, None, None, None) for i in str.split(manualInstalls,'\n') if i != "" and i not in default_package_instal]
section=re.compile("Section: ([^\n/]*)")
for install in manual_package_instal:
proc = subprocess.Popen(["apt-cache","show",install.name], stdout=subprocess.PIPE)
res,err = proc.communicate()
cat=section.search(res)
if cat is not None:
install.cat = cat.group(1)
manual_package_instal.sort(key=lambda f: f.cat)
for install in manual_package_instal:
print "["+install.cat+"] "+install.name
Quelques ressources intéressantes :
-
http://askubuntu.com/questions/278384/how-can-i-mark-all-packages-with-installed-dependents-as-automatically-installe
-
http://askubuntu.com/questions/248283/how-do-i-find-which-packages-could-be-set-as-automatically-installed
-
http://askubuntu.com/questions/12279/why-are-almost-all-packages-marked-as-manually-installed