Re: Paquets suggeres et recommandes
Daniel Déchelotte <maitre_yodan@fr.club-internet.invalid> a écrit :
| Est-il possible de connaitre tous les paquets recommandes et suggeres
| (mais non installes) par tous les paquets actuellement installes ?
Mais oui, bien sur, si tu t'ecris ton script. :) Voici ce que je me suis
finalement ecrit :
----------------- Debut ----------------
#!/usr/bin/python
import fileinput, string
status_file = "/var/lib/dpkg/status"
def add_pkgs(pkg_string, pkg_list):
for pkg in string.split(pkg_string, ","):
while True:
open_paren = string.find(pkg, "(")
if open_paren < 0:
break
close_paren = string.find(pkg, ")")
pkg = pkg[:open_paren-1] + pkg[close_paren+1:]
pkg = string.strip(pkg)
if pkg not in pkg_list:
pkg_list.append(pkg)
def clean_list(to_clean, stop_list):
for i in xrange(len(to_clean) - 1, -1, -1):
item = to_clean[i]
for pkg in string.split(item, "|"):
pkg = string.strip(pkg)
if pkg in stop_list:
del to_clean[i]
break
installed_pkgs = []
recom_pkgs = []
sugg_pkgs = []
for line in fileinput.input([status_file]):
line = line[:-1]
if string.find(line, "Package: ") == 0: ### Package: ###
pkg = line[9:] # "Package: " is 9 char long
installed_pkgs.append(pkg)
continue
if string.find(line, "Provides: ") == 0: ### Provides: ###
pkgs = line[10:] # "Provides: " is 10 char long
for pkg in string.split(pkgs, ","):
pkg = string.strip(pkg)
installed_pkgs.append(pkg)
continue
if string.find(line, "Recommends: ") == 0: ### Recommends: ###
pkgs = line[12:] # strlen("Suggests: ") = 12
add_pkgs(pkgs, recom_pkgs)
# print "Reco: ", recom_pkgs
continue
if string.find(line, "Suggests: ") == 0: ### Suggest: ###
pkgs = line[10:] # strlen("Suggests: ") = 10
add_pkgs(pkgs, sugg_pkgs)
# print "Sugg: ", sugg_pkgs
continue
clean_list(sugg_pkgs, installed_pkgs)
clean_list(recom_pkgs, installed_pkgs)
sugg_pkgs.sort()
recom_pkgs.sort()
print "Recommended packages:", recom_pkgs
print "---"
print "Suggested packages:", sugg_pkgs
---------------------- Fin -----------------
C'est vraiment pas fancy, mais ca fait le boulot.
--
Daniel Déchelotte
http://yo.dan.free.fr/
Reply to: