« APT » : différence entre les versions

Aucun résumé des modifications
 
(4 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
== Paquets APT ==
== Paquets APT ==
Sur Debian (et ses dérivés comme Ubuntu), '''<code>apt</code>''' est un outil en ligne de commande pour gérer les paquets logiciels. Il permet d’installer, mettre à jour, supprimer et gérer les logiciels provenant des dépôts officiels de Debian.
Sur Debian (et ses dérivés comme Ubuntu), '''<code>apt</code>''' est un outil en ligne de commande pour gérer les paquets logiciels. Il permet d’installer, mettre à jour, supprimer et gérer les logiciels provenant des dépôts officiels de Debian.
=== Check services à redémarrer ===
permet de vérifier quels services ou processus utilisent encore d’anciennes bibliothèques après une mise à jour système.
<syntaxhighlight lang="bash" line copy>
sudo needrestart
</syntaxhighlight>
=== Mise à jour de la liste des paquets ===
=== Mise à jour de la liste des paquets ===
<syntaxhighlight lang="bash" line copy>
<syntaxhighlight lang="bash" line copy>
Ligne 169 : Ligne 176 :


==== 6. Lister tous les fichiers <code>phased</code> (Version améliorée) ====
==== 6. Lister tous les fichiers <code>phased</code> (Version améliorée) ====
<syntaxhighlight lang="bash" line>
<syntaxhighlight lang="bash" line>
#check_phased_updates.sh
#!/bin/bash
#!/bin/bash


# =====================================================
: '
# 🔍 Rapport sur les mises à jour phasées - Fusionné
============================================================
# =====================================================
Script : check-phased-list.sh
# Ce script liste tous les paquets Ubuntu en phase de mise à jour (phased updates).
Objet  : Générer un rapport clair sur les mises à jour phasées APT Ubuntu
# 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


# ==========================
DESCRIPTION :
# Couleurs pour la sortie
Ce script analyse les paquets upgradables signalés par APT et
# ==========================
vérifie s’ils sont soumis au "phasage" (phased updates).
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


# ==========================
Le phasage est une fonctionnalité d’APT qui déploie certaines
# Détection de la langue
mises à jour progressivement (ex: 10%, 20%, ... des machines)
# ==========================
afin de limiter l’impact d’éventuels bugs.
# On détecte la locale pour adapter le parsing
LANGUAGE=$(echo $LANG | cut -d_ -f1)


if [ "$LANGUAGE" == "fr" ]; then
Le script :
    REGEX_DEFERRED="Les mises à jour suivantes ont été différées"
  1. Récupère la liste des paquets upgradables via
    REGEX_END="0 mis à jour"
    `apt list --upgradable`.
else
  2. Pour chaque paquet, interroge `apt-cache show` pour
    REGEX_DEFERRED="The following packages have been kept back"
    extraire le champ `Phased-Update-Percentage`.
    REGEX_END="0 upgraded"
  3. Construit une liste fusionnée des paquets concernés,
fi
    en indiquant le pourcentage de phasage appliqué.
  4. Trie et affiche les résultats par ordre alphabétique.
  5. Résume le nombre total de paquets affectés par le phasage.


# ==========================
AFFICHAGE :
# 1) Récupérer les paquets différés par phasage
- Chaque paquet est listé avec son pourcentage de phasage.
# ==========================
- Un résumé final indique le total de paquets concernés.
# 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
UTILISATION :
PKGS_DEFERRED=$(echo "$DEFERRED" | tr -d '\n' | sed 's/  /\n/g' | sed 's/^ *//;s/ *$//' | tr '\n' ' ')
  ./rapport-phasage.sh


# ==========================
PRÉREQUIS :
# 2) Récupérer les paquets upgradables phasés
- Debian/Ubuntu (ou dérivés) avec apt >= 2.2
# ==========================
- Droits de lecture sur `apt list` et `apt-cache show`
UPGRADABLE=$(apt list --upgradable 2>/dev/null | awk -F/ 'NR>1 {print $1}')
============================================================
'


# On ne garde que ceux qui ont un pourcentage de phasage
# --- Définition des couleurs pour l'affichage ---
PHASED_UPGRADABLE=""
RED='\033[0;31m'
for PKG in $UPGRADABLE; do
GREEN='\033[0;32m'
    PERC=$(apt-cache show "$PKG" 2>/dev/null | awk '/^Phased-Update-Percentage:/ {print $2}')
YELLOW='\033[1;33m'
    if [ -n "$PERC" ]; then
BLUE='\033[0;34m'
        PHASED_UPGRADABLE+="$PKG "
NC='\033[0m'  # Reset couleur (No Color)
    fi
done


# ==========================
# --- En-tête ---
# 3) Fusionner les listes pour éviter les doublons
echo "=============================================="
# ==========================
echo " 🔍 Rapport sur les mises à jour phasées"
declare -A PACKAGES
echo "=============================================="
echo


# Ajouter les paquets différés dans le tableau associatif
# Étape 1 : récupération des paquets upgradables
for PKG in $PKGS_DEFERRED; do
UPGRADABLE_PKGS=$(apt list --upgradable 2>/dev/null | awk -F/ 'NR>1 {print $1}')
    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
# Étape 2 : carte associative pour stocker les pourcentages
for PKG in $PHASED_UPGRADABLE; do
declare -A PHASE_MAP
    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


# ==========================
for pkg in $UPGRADABLE_PKGS; do
# 4) Affichage des résultats
     PERC=$(apt-cache show "$pkg" 2>/dev/null | awk '/^Phased-Update-Percentage:/ {print $2}')
# ==========================
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
     if [ -n "$PERC" ]; then
         echo -e " - ${YELLOW}$PKG${NC} → ${RED}$PERC% en phase${NC} (${COLOR_STATE})"
         PHASE_MAP["$pkg"]="$PERC"
    else
        echo -e " - ${YELLOW}$PKG${NC} → phasage actif (${COLOR_STATE})"
     fi
     fi
done
done


# Totaux
# Étape 3 : affichage trié
echo
if [ ${#PHASE_MAP[@]} -eq 0 ]; then
echo " 🔢 Total différés : $COUNT_DIFF"
    echo -e " ${GREEN}→ Aucun paquet soumis au phasage${NC}"
echo "  🔢 Total upgradables phasés : $COUNT_UP"
else
echo
    for pkg in $(printf "%s\n" "${!PHASE_MAP[@]}" | sort); do
echo "=============================================="
        echo -e - ${YELLOW}$pkg${NC} → ${RED}${PHASE_MAP[$pkg]}% en phase${NC}"
echo -e " ✅ ${GREEN}Analyse terminée${NC}"
    done
echo "  Résumé : $COUNT_DIFF différés, $COUNT_UP upgradables phasés"
    echo
echo "=============================================="
    echo "=============================================="
    echo -e " ✅ ${GREEN}Analyse terminée${NC}"
    echo "  Résumé : ${#PHASE_MAP[@]} paquets concernés par le phasage"
    echo "=============================================="
fi
 


</syntaxhighlight>
</syntaxhighlight>
Ligne 296 : Ligne 262 :
chmod +x check_phased_updates.sh
chmod +x check_phased_updates.sh
./check_phased_updates.sh
./check_phased_updates.sh
</syntaxhighlight>
-----
== Lister toutes les installations (avec filtrage) ==
Pour voir tous les paquets installés manuellement (pas les dépendances automatiques)
<syntaxhighlight lang="bash" line copy>
apt-mark showmanual | sort
</syntaxhighlight>
Pour voir tous les paquets installés automatiques
<syntaxhighlight lang="bash" line copy>
apt-mark showauto
</syntaxhighlight>
</syntaxhighlight>