Python3 : libapt

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)
1 J'aime