Salut,
Je souhaiterai pouvoir passer des commandes apt via Python3 au sein d’un script.
Je pourrais faire passer ça avec un os.system ('apt <arguments>'), mais je veux récupérer les erreurs avec un style plus Python.
Le problème, c’est que Python3 s’installe avec apt et que son installation peut poser des problèmes, du coup, impossible de trouver quoique ce soit.
Je cherche juste à faire des opérations de base (installer un paquet, purge un paquet, vérifier l’état d’un paquet).
J’ai déjà trouvé comment mettre à jour la base et upgrader les paquets, mais au cas où, si je me suis trompé, je colle le code que j’ai produit jusqu’alors.
from apt import Cache
def update ():
'''
Updates the database
Returns False if problem happens
'''
c = Cache ()
return (c.update ())
def upgrade ():
'''
Upgrades the packages needed to be upgraded
You **need** to run the update () function before that
Returns False if problem happens
'''
c = Cache ()
c.upgrade (dist_upgrade = True)
return (c.commit ())
Merci.
J’ai trouvé comment faire, en fait, la classe apt.Cache est un dictionnaire des paquets.
Du coup, à titre d’information, voici le reste de mon code pour des opérations basiques.
from apt import Cache
def update ():
'''
Updates the database
Returns False if problem happens
'''
c = Cache ()
return (c.update ())
def upgrade (update_before = True):
'''
Upgrades the packages needed to be upgraded
update_before defines if the update () function must be called before
Its default value is True because it's highlly recommended, but you could have done it recently
Returns False if problem happens
'''
if update_before:
if not update ():
return (False)
c = Cache ()
c.upgrade (dist_upgrade = True)
return (c.commit ())
def installed (package):
'''
Returns True if package is installed
'''
c = Cache ()
return (c [package].is_installed)
def install (package):
'''
Installs package
Returns False if problem happens
Returns True if the package is allready installed
'''
if not installed (package):
c = Cache ()
c [package].mark_install ()
return (c.commit ())
else:
return (True)
def remove (package, purge = False):
'''
Removes package
Returns False if problem happens
Returns True if the package is allready installed
'''
if installed (package):
c = Cache ()
c [package].mark_delete (purge = purge)
return (c.commit ())
else:
return (True)