[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: