Apt-get : ne pas obtenir d'erreur lors de l'installation d'un paquet déjà installé

Bonjour,

J’utilise le programme apt-get pour installer des paquets dans un script en Python3. Voici la fonction que j’utilise :

apt_install_auto = ['/usr/bin/apt-get', 'install', '--assume-yes']
def special_install_package (packages, target_release = None, reinstall = False, debconf = None):
	'''
	Fais une installation tellement spéciale qu'elle n'est pas disponible via libapt
	Éviter l'utilisation de cette fonction pour une installation classique (sans aucune utilisation des options marquées d'un +)
	packages chaîne de caractère pour un paquet ou liste itérable pour une liste de paquets
	target_release + une chaîne de caractère définissant la distribution cible (voir l'option -t dans apt-get (8))
	reinstall défini si le paquet doit être réinstallé en cas de présence préalable de celui-ci
	Le paramètre debconf sert à passer une configuration debconf au besoin avant l'installation du paquet
	'''
	log ('', title = __name__ + '.special_install_package', level = 0)
	tl = ''
	to = []
	rl = ''
	ro = []
	
	# Je trouve cette méthode d'installation pas très top, je préfèrerai qu'on utilise la classique install () si l'installation n'a rien de spécial
	# Ajouter les éventuels nouveaux paramètres spéciaux ici
	if target_release is None:
		log ('!!! ATTENTION !!!\nInstallation de paquets non spéciale (cette fonction n\'a pas ce but) !\n!!! ATTENTION !!!\nLes paquets seront tout de même installés, mais merci de le faire à l\'aide de la fonction pas spéciale', title = __name__ + '.special_install_package', level = 1)
	
	if type (debconf) == str:
		set_debconf (debconf)
	
	if type (packages) == str:
		packages = (packages,)
		
	if type (target_release):
		tl = ' à partir de la distribution ' + target_release
		to = ['--target-release', target_release]
	
	if reinstall:
		rl = ' et réinstallation si paquet(s) déjà installé(s)'
		ro = ['--reinstall', ]
	
	log ('Installation spéciale des paquets ' + str (packages) + tl + rl + '…', title = __name__ + '.special_install_package', level = 0)
	
	cmd = apt_install_auto + ro + to + list (packages)
	if call (cmd):
		log ('Installation spéciale exécutée', title = __name__ + '.special_install_package', level = 0)
		return (True)
	else:
		log ('Installation spéciale terminée avec une erreur', title = __name__ + '.special_install_package', level = 2)
		return (False)

Pour ceux qui ne sont pas familier de python, je lance une commande /usr/bin/apt-get install --assume-yes <paquets>. Le problème, c’est que quand je lance ça avec un paquet qui est déjà installé, le programme apt-get retourne une erreur et la fonction se termine donc avec une erreur alors que tout s’est bien passé.
Existe-t-il une option pour ne pas avoir d’erreur dans ce cas ?

Ah, trouvé, le problème venait de la partie suivante :

	if call (cmd):
		log ('Installation spéciale exécutée', title = __name__ + '.special_install_package', level = 0)
		return (True)
	else:
		log ('Installation spéciale terminée avec une erreur', title = __name__ + '.special_install_package', level = 2)
		return (False)

Dans ce cas, la condition dans if call (cmd) n’est pas vérifiée, j’ai donc remplacé par if call (cmd) == 0 et ça fonctionne.