« APT » : différence entre les versions

Aucun résumé des modifications
 
(14 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.
=== 📋 Historique des mises à jour APT ===
Ce script '''AWK''' permet de reformater le contenu du fichier <code>/var/log/apt/history.log</code> afin d’obtenir une vue claire et lisible des opérations réalisées par '''APT'''. Les sessions sont regroupées par date et les paquets installés ou mis à jour sont affichés sous forme de liste, facilitant ainsi le suivi des modifications effectuées sur le système.
- Ligne de commande
<syntaxhighlight lang="bash" line copy>
awk '/^Start-Date:/ {print "\n📅 " substr($0,13)} /^Upgrade:/ {sub(/^Upgrade: /,""); gsub(/, /,"\n  - "); print "⬆️  " $0} /^Install:/ {sub(/^Install: /,""); gsub(/, /,"\n  - "); print "📦 " $0}' /var/log/apt/history.log
</syntaxhighlight>
- Dans fichier bash
<syntaxhighlight lang="bash" line copy>
#!/bin/bash
awk '
/^Start-Date:/ {print "\n📅 " substr($0,13)}
/^Upgrade:/ {
    sub(/^Upgrade: /,"")
    gsub(/, /,"\n  - ")
    print "⬆️  " $0
}
/^Install:/ {
    sub(/^Install: /,"")
    gsub(/, /,"\n  - ")
    print "📦 " $0
}
' /var/log/apt/history.log
</syntaxhighlight>
{| class="wikitable"
|-
! Élément
! Rôle
|-
| <code>/^Start-Date:/</code>
| Détecte le début d’une session APT et affiche la date et l’heure de l’opération.
|-
| <code>/^Upgrade:/</code>
| Détecte la liste des paquets mis à jour lors de la session.
|-
| <code>/^Install:/</code>
| Détecte la liste des nouveaux paquets installés.
|-
| <code>sub()</code>
| Supprime le préfixe (<code>Start-Date:</code>, <code>Upgrade:</code> ou <code>Install:</code>) afin d’alléger l’affichage.
|-
| <code>gsub()</code>
| Remplace les séparateurs <code>,</code> par des retours à la ligne pour présenter les paquets sous forme de liste.
|-
| <code>print</code>
| Affiche le résultat final en ajoutant des icônes et une mise en forme plus lisible.
|-
| <code>substr()</code>
| Extrait uniquement la partie utile de la date, sans afficher le libellé <code>Start-Date:</code>.
|}
==== 🗃️ Historique complet (journaux archivés) ====
Affiche l'historique complet des installations et des mises à jour APT, en incluant les journaux archivés (<code>history.log.*</code>). Les sessions sont présentées dans un format lisible, de la plus récente à la plus ancienne.
<syntaxhighlight lang="bash" line copy>
printf '%s\n' /var/log/apt/history.log* \
| sort -Vr \
| xargs zgrep -h -E "Start-Date|Upgrade:|Install:" \
| awk '/^Start-Date:/ {print "\n📅 " substr($0,13)} /^Upgrade:/ {sub(/^Upgrade: /,""); gsub(/, /,"\n  - "); print "⬆️  " $0} /^Install:/ {sub(/^Install: /,""); gsub(/, /,"\n  - "); print "📦 " $0}'
</syntaxhighlight>
=== 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 145 : Ligne 222 :
* '''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 228 :
#!/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 168 : Ligne 245 :
-----
-----


== DPKG ==
==== 6. Lister tous les fichiers <code>phased</code> (Version améliorée) ====
[[dpkg|Voir DPKG]]
<syntaxhighlight lang="bash" line>
#!/bin/bash
 
: '
============================================================
Script : check-phased-list.sh
Objet  : Générer un rapport clair sur les mises à jour phasées APT Ubuntu
============================================================
 
DESCRIPTION :
Ce script analyse les paquets upgradables signalés par APT et
vérifie s’ils sont soumis au "phasage" (phased updates).
 
Le phasage est une fonctionnalité d’APT qui déploie certaines
mises à jour progressivement (ex: 10%, 20%, ... des machines)
afin de limiter l’impact d’éventuels bugs.
 
Le script :
  1. Récupère la liste des paquets upgradables via
    `apt list --upgradable`.
  2. Pour chaque paquet, interroge `apt-cache show` pour
    extraire le champ `Phased-Update-Percentage`.
  3. Construit une liste fusionnée des paquets concernés,
    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 :
- Chaque paquet est listé avec son pourcentage de phasage.
- Un résumé final indique le total de paquets concernés.
 
UTILISATION :
  ./rapport-phasage.sh
 
PRÉREQUIS :
- Debian/Ubuntu (ou dérivés) avec apt >= 2.2
- Droits de lecture sur `apt list` et `apt-cache show`
============================================================
'
 
# --- Définition des couleurs pour l'affichage ---
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'  # Reset couleur (No Color)
 
# --- En-tête ---
echo "=============================================="
echo " 🔍 Rapport sur les mises à jour phasées"
echo "=============================================="
echo
 
# Étape 1 : récupération des paquets upgradables
UPGRADABLE_PKGS=$(apt list --upgradable 2>/dev/null | awk -F/ 'NR>1 {print $1}')
 
# Étape 2 : carte associative pour stocker les pourcentages
declare -A PHASE_MAP
 
for pkg in $UPGRADABLE_PKGS; do
    PERC=$(apt-cache show "$pkg" 2>/dev/null | awk '/^Phased-Update-Percentage:/ {print $2}')
    if [ -n "$PERC" ]; then
        PHASE_MAP["$pkg"]="$PERC"
    fi
done
 
# Étape 3 : affichage trié
if [ ${#PHASE_MAP[@]} -eq 0 ]; then
    echo -e " ${GREEN}→ Aucun paquet soumis au phasage${NC}"
else
    for pkg in $(printf "%s\n" "${!PHASE_MAP[@]}" | sort); do
        echo -e "  - ${YELLOW}$pkg${NC} → ${RED}${PHASE_MAP[$pkg]}% en phase${NC}"
    done
    echo
    echo "=============================================="
    echo -e " ✅ ${GREEN}Analyse terminée${NC}"
    echo "  Résumé : ${#PHASE_MAP[@]} paquets concernés par le phasage"
    echo "=============================================="
fi
 
 
</syntaxhighlight>


== APTITUDE ==
<syntaxhighlight lang="bash" line>
<syntaxhighlight lang="bash" line>
sudo aptitude update
chmod +x check_phased_updates.sh
aptitude search '~U'
./check_phased_updates.sh
sudo aptitude upgrade
</syntaxhighlight>
</syntaxhighlight>


-----
-----


== <code>apt</code> vs <code>apt-get</code> vs <code>aptitude</code> ==
== 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>


* '''<code>apt</code>''' : Version moderne et conviviale, combinant les fonctionnalités de <code>apt-get</code> et <code>apt-cache</code> avec des couleurs et une barre de progression.
Pour voir tous les paquets installés automatiques
* '''<code>apt-get</code>''' : Outil plus ancien, toujours utilisé dans les scripts pour sa stabilité.
<syntaxhighlight lang="bash" line copy>
* '''<code>aptitude</code>''' : Alternative avec une interface en mode texte (interactive) et une gestion avancée des dépendances.
apt-mark showauto
</syntaxhighlight>
 
-----


== Script bash APT historique ==  
== Script bash APT historique ==