« APT » : différence entre les versions

Aucun résumé des modifications
 
(19 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.
=== Liste des paquets récemment mis à jour ===
<syntaxhighlight lang="bash" line copy>
ls -lt /var/lib/dpkg/info/*.list | head -n 50
</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 66 : Ligne 61 :


=== voir tous les paquets ===  
=== voir tous les paquets ===  
<syntaxhighlight lang="bash" line copy>
dpkg --list
</syntaxhighlight>
ou
<syntaxhighlight lang="bash" line copy>
dpkg --get-selections
</syntaxhighlight>
ou
<syntaxhighlight lang="bash" line copy>
<syntaxhighlight lang="bash" line copy>
apt list --installed
apt list --installed
Ligne 84 : Ligne 71 :


=== compter les paquets installés sur Ubuntu ===
=== compter les paquets installés sur Ubuntu ===
filtre pour ne montrer que les paquets actifs.
<syntaxhighlight lang="bash" line>
<syntaxhighlight lang="bash" line>
sudo dpkg-query -f '${binary:Package}\n' -W | wc -l
# ou
sudo apt list --installed | wc -l
sudo apt list --installed | wc -l
</syntaxhighlight>
</syntaxhighlight>
Ligne 92 : Ligne 78 :
=== voir si des paquets sont cassés ===
=== voir si des paquets sont cassés ===
<syntaxhighlight lang="bash" line>
<syntaxhighlight lang="bash" line>
apt-get check
sudo apt-get check
dpkg -l | grep -v ^ii
dpkg -l | grep ^rc #(installé et reste des fichiers de configuration)
dpkg -l | grep ^iB #(installé et avec des dépendances cassées)
</syntaxhighlight>
</syntaxhighlight>


Ligne 162 : 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 168 : 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 185 : Ligne 168 :
-----
-----


== 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
 


== Noyau ==
=== Lister tous les paquets liés au noyau installés sur votre système avec la commande suivante ===
<syntaxhighlight lang="bash" line copy>
dpkg --list | grep linux-image
</syntaxhighlight>
</syntaxhighlight>
=== Lister les fichiers dans le répertoire /boot pour voir les versions du noyau installées ===
 
<syntaxhighlight lang="bash" line copy>
<syntaxhighlight lang="bash" line>
ls -l /boot | grep vmlinuz
chmod +x check_phased_updates.sh
./check_phased_updates.sh
</syntaxhighlight>
</syntaxhighlight>
=== Vérifier quel noyau est actuellement en cours d'utilisation ===
 
-----
 
== Lister toutes les installations (avec filtrage) ==
Pour voir tous les paquets installés manuellement (pas les dépendances automatiques)
<syntaxhighlight lang="bash" line copy>
<syntaxhighlight lang="bash" line copy>
uname -r
apt-mark showmanual | sort
</syntaxhighlight>
</syntaxhighlight>
=== Voir noyau version ===
 
Pour voir tous les paquets installés automatiques
<syntaxhighlight lang="bash" line copy>
<syntaxhighlight lang="bash" line copy>
uname -a
apt-mark showauto
</syntaxhighlight>
</syntaxhighlight>


=== Voir noyaux installés ===
-----
 
== Script bash APT historique ==  
<syntaxhighlight lang="bash" line copy>
<syntaxhighlight lang="bash" line copy>
dpkg -l | awk '!/^rc/ && / linux-(c|g|h|i|lo|m|si|t)/{print $1,$2,$3,$4 | "sort -k3 | column -t"}'
#!/bin/bash
</syntaxhighlight>
# Permet de consulter l'historique APT sur un système debian
<syntaxhighlight lang="bash" line copy>
#Usage: ./apt_log_history0.sh [OPTIONS]
dpkg --get-selections | grep 'linux-.*-v'
#Options:
</syntaxhighlight>
#  -f, --upgrades    Affiche uniquement les mises à jour
#  -i, --installs    Affiche uniquement les installations
#  -u, --removals    Affiche uniquement les suppressions
#  -r, --reset      Affiche tout (réinitialise le filtre)
#  -h, --help        Affiche ce message d'aide
 
 
# Fonction pour traiter les fichiers
process_apt_history() {
    local file="$1"
    local filter="${2:-.*}"  # Filtre par défaut : tout afficher
 
    echo -e "\033[1;35m\nFichier: ${file##*/}\033[0m"
 
    if [[ "$file" == *.gz ]]; then
        zcat "$file"
    else
        cat "$file"
    fi | awk -v filter="$filter" '
        /Start-Date:/ {
            start_pos = index($0, "Start-Date:") + 11;
            date = substr($0, start_pos, 19);
            current_date = "\033[1;32m[" date "]\033[0m";
            has_matching_action = 0;
        }
        /Commandline:/ {
            cmd = substr($0, index($0, "Commandline:") + 12);
            current_cmd = cmd;
        }
        /Install:|Upgrade:|Remove:|Installation:|Mise à jour:|Suppression:/ {
            action = $1;
            details = substr($0, index($0, ": ") + 2);
 
            if (action ~ filter) {
                if (!has_matching_action) {
                    print current_date;
                    if (current_cmd != "") {
                        printf "  \033[33m● Commande: %s\033[0m\n", current_cmd;
                    }
                    has_matching_action = 1;
                }


=== Lister les paquets de noyau installés et leur taille ===
                # Couleurs
<syntaxhighlight lang="bash" line copy>
                color = "\033[36m"; # Par défaut (bleu cyan)
dpkg-query -Wf '${Installed-Size}\t${Package}\n' | grep linux-image
                if (action ~ /Install|Installation/) color = "\033[32m"; # Vert
</syntaxhighlight>
                if (action ~ /Remove|Suppression/) color = "\033[31m";  # Rouge


=== Vérifier l'espace disque utilisé dans /boot ===
                printf " %s%-12s\033[0m %s\n", color, action, details;
<syntaxhighlight lang="bash" line copy>
            }
sudo du -sh /boot/*
        }
</syntaxhighlight>
    '
}


=== Pour obtenir plus de détails sur un paquet de noyau spécifique, y compris sa taille  ===
# Affichage de l'aide
Liste
display_help() {
<syntaxhighlight lang="bash" line copy>
    echo "Usage: $0 [OPTIONS]"
dpkg --list | grep linux-image
    echo "Options:"
</syntaxhighlight>
    echo "  -f, --upgrades    Affiche uniquement les mises à jour"
Puis
    echo "  -i, --installs    Affiche uniquement les installations"
<syntaxhighlight lang="bash" line copy>
    echo "  -u, --removals    Affiche uniquement les suppressions"
apt show linux-image-X.Y.Z-W-generic
    echo " -r, --reset      Affiche tout (réinitialise le filtre)"
</syntaxhighlight>
    echo "  -h, --help        Affiche ce message d'aide"
    exit 0
}


=== Supprimer des anciens noyaux ===
# Paramètres
Debian propose un script appelé purge-old-kernels qui peut automatiser la suppression des anciens noyaux. Vous pouvez l'installer et l'utiliser comme suit :
FILTER=".*" # Affiche tout par défaut
<syntaxhighlight lang="bash" line>
sudo apt-get install byobu
sudo purge-old-kernels
</syntaxhighlight>
Ce script supprimera automatiquement les anciens noyaux tout en conservant le noyau actuel et un noyau de secours.


== APTITUDE ==
# Traitement des options
<syntaxhighlight lang="bash" line>
while getopts "fiurh" opt; do
sudo aptitude update
    case $opt in
aptitude search '~U'
        f) FILTER="Upgrade|Mise à jour";;
sudo aptitude upgrade
        i) FILTER="Install|Installation";;
</syntaxhighlight>
        u) FILTER="Remove|Suppression";;
        r) FILTER=".*";;
        h) display_help;;
        *) display_help;;
    esac
done


# Affichage
echo -e "\033[1;34m=== HISTORIQUE APT (Filtre: ${FILTER}) ===\033[0m"


-----
# D'abord les archives (.gz)
for f in $(ls -v /var/log/apt/history.log*.gz 2>/dev/null); do
    process_apt_history "$f" "$FILTER"
done


== <code>apt</code> vs <code>apt-get</code> vs <code>aptitude</code> ==
# Puis le fichier courant
[ -f "/var/log/apt/history.log" ] && process_apt_history "/var/log/apt/history.log" "$FILTER"


* '''<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.
</syntaxhighlight>
* '''<code>apt-get</code>''' : Outil plus ancien, toujours utilisé dans les scripts pour sa stabilité.
* '''<code>aptitude</code>''' : Alternative avec une interface en mode texte (interactive) et une gestion avancée des dépendances.


[[Catégorie:Linux]] [[Catégorie:Debian]]
[[Catégorie:Linux]] [[Catégorie:Debian]]