« APT » : différence entre les versions
| Ligne 145 : | Ligne 145 : | ||
* '''Répartition uniforme''' : Les scores sont distribués entre 0 et 99 pour équilibrer le déploiement. | * '''Répartition uniforme''' : Les scores sont distribués entre 0 et 99 pour équilibrer le déploiement. | ||
==== 5. Lister tous les fichiers <code>phased</code> ==== | ==== 5. Lister tous les fichiers <code>phased</code> (old version) ==== | ||
<syntaxhighlight lang="bash" line> | <syntaxhighlight lang="bash" line> | ||
| Ligne 151 : | Ligne 151 : | ||
#!/bin/bash | #!/bin/bash | ||
# Liste des paquets en phased updates | # Liste des paquets en phased updates | ||
PACKAGES=$(apt list --upgradable | grep -E "*" | cut -d'/' -f1) | PACKAGES=$(apt list --upgradable | grep -E "*" | cut -d'/' -f1) | ||
echo "Checking phased updates" | echo "Checking phased updates" | ||
| Ligne 160 : | Ligne 160 : | ||
done | done | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<syntaxhighlight lang="bash" line> | |||
chmod +x check_phased_updates.sh | |||
./check_phased_updates.sh | |||
</syntaxhighlight> | |||
----- | |||
==== 6. Lister tous les fichiers <code>phased</code> (Version améliorée) ==== | |||
<syntaxhighlight lang="bash" line> | |||
#check_phased_updates.sh | |||
#!/bin/bash | |||
# ===================================================== | |||
# 🔍 Rapport sur les mises à jour phasées - Fusionné | |||
# ===================================================== | |||
# Ce script liste tous les paquets Ubuntu en phase de mise à jour (phased updates). | |||
# Il fusionne les paquets "différés" et "upgradables phasés" pour éviter les doublons, | |||
# et affiche l'état réel de chaque paquet. | |||
# Il gère automatiquement les locales FR/EN pour parser la sortie d'APT. | |||
# ===================================================== | |||
echo "==============================================" | |||
echo " 🔍 Rapport sur les mises à jour phasées" | |||
echo "==============================================" | |||
echo | |||
# ========================== | |||
# Couleurs pour la sortie | |||
# ========================== | |||
RED='\033[0;31m' # rouge pour pourcentage | |||
GREEN='\033[0;32m' # vert pour upgradable | |||
YELLOW='\033[1;33m' # jaune pour différé ou paquet | |||
BLUE='\033[0;34m' # bleu pour sections | |||
NC='\033[0m' # reset couleur | |||
# ========================== | |||
# Détection de la langue | |||
# ========================== | |||
# On détecte la locale pour adapter le parsing | |||
LANGUAGE=$(echo $LANG | cut -d_ -f1) | |||
if [ "$LANGUAGE" == "fr" ]; then | |||
REGEX_DEFERRED="Les mises à jour suivantes ont été différées" | |||
REGEX_END="0 mis à jour" | |||
else | |||
REGEX_DEFERRED="The following packages have been kept back" | |||
REGEX_END="0 upgraded" | |||
fi | |||
# ========================== | |||
# 1) Récupérer les paquets différés par phasage | |||
# ========================== | |||
# On simule un full-upgrade pour capturer les paquets différés | |||
DEFERRED=$(apt full-upgrade -s 2>/dev/null | awk "/$REGEX_DEFERRED/{flag=1; next} /$REGEX_END/{flag=0} flag") | |||
# Nettoyage de la sortie pour extraire les noms de paquets | |||
PKGS_DEFERRED=$(echo "$DEFERRED" | tr -d '\n' | sed 's/ /\n/g' | sed 's/^ *//;s/ *$//' | tr '\n' ' ') | |||
# ========================== | |||
# 2) Récupérer les paquets upgradables phasés | |||
# ========================== | |||
UPGRADABLE=$(apt list --upgradable 2>/dev/null | awk -F/ 'NR>1 {print $1}') | |||
# On ne garde que ceux qui ont un pourcentage de phasage | |||
PHASED_UPGRADABLE="" | |||
for PKG in $UPGRADABLE; do | |||
PERC=$(apt-cache show "$PKG" 2>/dev/null | awk '/^Phased-Update-Percentage:/ {print $2}') | |||
if [ -n "$PERC" ]; then | |||
PHASED_UPGRADABLE+="$PKG " | |||
fi | |||
done | |||
# ========================== | |||
# 3) Fusionner les listes pour éviter les doublons | |||
# ========================== | |||
declare -A PACKAGES | |||
# Ajouter les paquets différés dans le tableau associatif | |||
for PKG in $PKGS_DEFERRED; do | |||
PERC=$(apt-cache show "$PKG" 2>/dev/null | awk '/^Phased-Update-Percentage:/ {print $2}') | |||
PACKAGES["$PKG"]="différé|$PERC" | |||
done | |||
# Ajouter les upgradables phasés seulement si non déjà présent | |||
for PKG in $PHASED_UPGRADABLE; do | |||
PERC=$(apt-cache show "$PKG" 2>/dev/null | awk '/^Phased-Update-Percentage:/ {print $2}') | |||
if [ -z "${PACKAGES[$PKG]}" ]; then | |||
PACKAGES["$PKG"]="upgradable|$PERC" | |||
fi | |||
done | |||
# ========================== | |||
# 4) Affichage des résultats | |||
# ========================== | |||
COUNT_DIFF=0 | |||
COUNT_UP=0 | |||
echo -e "${BLUE}📦 Paquets phasés fusionnés :${NC}" | |||
for PKG in "${!PACKAGES[@]}"; do | |||
STATE=$(echo "${PACKAGES[$PKG]}" | cut -d'|' -f1) # différé / upgradable | |||
PERC=$(echo "${PACKAGES[$PKG]}" | cut -d'|' -f2) # Pourcentage de phasage | |||
# Déterminer la couleur et compter les totaux | |||
if [ "$STATE" == "différé" ]; then | |||
COLOR_STATE="${YELLOW}différé${NC}" | |||
COUNT_DIFF=$((COUNT_DIFF+1)) | |||
else | |||
COLOR_STATE="${GREEN}upgradable${NC}" | |||
COUNT_UP=$((COUNT_UP+1)) | |||
fi | |||
# Affichage du paquet avec son état et pourcentage | |||
if [ -n "$PERC" ]; then | |||
echo -e " - ${YELLOW}$PKG${NC} → ${RED}$PERC% en phase${NC} (${COLOR_STATE})" | |||
else | |||
echo -e " - ${YELLOW}$PKG${NC} → phasage actif (${COLOR_STATE})" | |||
fi | |||
done | |||
# Totaux | |||
echo | |||
echo " 🔢 Total différés : $COUNT_DIFF" | |||
echo " 🔢 Total upgradables phasés : $COUNT_UP" | |||
echo | |||
echo "==============================================" | |||
echo -e " ✅ ${GREEN}Analyse terminée${NC}" | |||
echo " Résumé : $COUNT_DIFF différés, $COUNT_UP upgradables phasés" | |||
echo "==============================================" | |||
</syntaxhighlight> | |||
<syntaxhighlight lang="bash" line> | <syntaxhighlight lang="bash" line> | ||