Hallo Denis,
Ich habe mich versprochen, ich möchte keine Pakete deinstallieren, sondern nur alle Abhängigkeiten entfernen, die sich im Maschinenpaket (Remote-Paket) befinden.
Wir kümmern uns bereits um die effektive Entfernung von Paketen und Software, die auf den Rechnern installiert sind.
Ich möchte das genauer erklären; da wir viele Pakete auf unserem Hauptserver und noch viel mehr in unseren lokalen Repositories gespeichert haben
Jedes Jahr entfernen wir Pakete, die nicht mehr benötigt werden.
Wir verwenden OU-Pakete für globale Übertragungen unserer Basisstation und anschließend bestimmte Pakete auf eine einheitlichere Weise (Farm von 10 bis 100 Stationen) auf bestimmten Stationen.
Wenn wir die Repositories bereinigen, treten Fehler bei den Maschinenpaketen auf, weil sie die gelöschten Pakete nicht mehr finden können.
Der Trick wäre gewesen, ein Paket zu verteilen, das alle Pakete entfernt, die von der Maschine abhängig sind (und im Remote Package Editor angezeigt werden), bevor die Bereinigung durchgeführt wird.
Ich hoffe, ich habe mich verständlicher ausgedrückt.
Aufrichtig,
Flavien
PS-Skript zum Bereinigen der auf den Rechnern vorhandenen Pakete + Speichern des Verlaufs in einem Protokoll:
Code: Alle auswählen
# -*- coding: utf-8 -*-
from setuphelpers import *
import common
import datetime
chemin_log = "C:\PMF\RAPPINST\PAQUET_NETTOYAGE.log"
def install():
w = common.Wapt()
# On récupère ce qu'il y a dans le log
lines = []
if isfile(chemin_log):
f = open(chemin_log, 'r')
lines = f.readlines()
f.close()
# On écrit dans le log
f = open(chemin_log, 'w')
# trouve == True <=> au moins un paquet à supprimer a été trouvé
trouve = False
print("PAQUETS OBSOLETES EN COURS D'OUBLI : ")
# On affiche la date du jour
f.write("*--- " + format(datetime.datetime.now(), '%D %T') + " ---*\n\n")
# Pour chaque paquet installé sur la machine
for paquet in w.installed():
# Si le paquet n'est pas disponible sur le dépot
if paquet.package != w.host_uuid and not w.is_available(paquet.package):
trouve = True
print(paquet.package + " | " + paquet.version)
# On l'ajoute à la liste des paquets à supprimer (sauf pour le paquet machine, voir condition ci-dessus)
f.write(" " + paquet.package + " ;; " + paquet.version + '\n')
# On l'oublie
w.forget_packages(paquet.package)
if not trouve:
print("PMF à jour.")
f.write(" > PMF à jour.\n")
# Pour séparer les sections dans le journal :
f.write("\n")
# On écrit le reste du log à la suite -> le nettoyage le plus récent apparaît en haut.
for ligne in lines:
f.write(ligne)
f.close()
def audit():
return "OK"