Anomalie #2010
Vérification des paquets installés peu efficace
Status:
Fermé
Priority:
Normal
Assigned To:
-
Category:
-
Target version:
Distribution:
EOLE 2.3
Description
J'ai supprimé un paquet dans un conteneur en espérant qu'il se réinstall ... ce n'a pas été le cas.
Les paquets avec le status RC sont considérés comme installés.
Il y a moins de status dans une "selection d'un paquet" que dans l'"état du paquet" d'après le man.
Je propose donc de connaitre l'état de la selection d'un paquet. D'après le man il y a 4 états :
- install
- hold
- deinstall
- purge
On peut considéré les 2 1er états comme installé et les 2 derniers comme désinstallé.
Voici donc la fonction is_installed corrigé :
def is_installed(package, container=config.VIRTMASTER, context=True): """ vérifie si un paquet est installé ou pas""" cmd = ["/usr/bin/dpkg", "--get-selections", package.strip()] code, stdout, stderr = system_out(cmd, container=container, context=context) if code != 0: # paquet non installé return False pkg_status = stdout.strip().split('\n')[-1].split()[1].lower() #pkg_status is install, desinstall, hold or purge if pkg_status not in ['install', 'deinstall', 'hold', 'purge']: raise Exception ('unknown status for package %s : %s'%(package, pkg_status)) if pkg_status in ['install', 'hold']: return True return False
Associated revisions
process.py : correction de la fonction is_installed (fixes #2010)
History
#1 Updated by Emmanuel GARETTE (2) almost 12 years ago
Si le conteneur n'existe pas lors du test, la fonction plante.
Correction :
def is_installed(package, container=config.VIRTMASTER, context=True): """ vérifie si un paquet est installé ou pas""" cmd = ["/usr/bin/dpkg", "--get-selections", package.strip()] code, stdout, stderr = system_out(cmd, container=container, context=context) if code != 0: # paquet non installé return False pkg_ret = stdout.strip().split('\n')[-1].split() if pkg_ret == [] or len(pkg_ret) != 2: return False pkg_status = pkg_ret[1].lower() #pkg_status is install, desinstall, hold or purge if pkg_status not in ['install', 'deinstall', 'hold', 'purge']: raise Exception ('unknown status for package %s : %s'%(package, pkg_status)) if pkg_status in ['install', 'hold']: return True return False
#2 Updated by Joël Cuissinat over 11 years ago
- Target version set to Mises à jour 2.3 - 02 RC
#3 Updated by Joël Cuissinat over 11 years ago
- Status changed from Nouveau to Résolu
- % Done changed from 0 to 100
Appliqué par commit 7df975d548345b7a75c32787e42a200302fcc547.
#4 Updated by Fabrice Barconnière over 11 years ago
- Status changed from Résolu to Fermé
- Distribution set to EOLE 2.3