« APT » : différence entre les versions
Aucun résumé des modifications |
|||
| (56 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. | |||
=== Mise à jour de la liste des paquets === | |||
<syntaxhighlight lang="bash" line copy> | <syntaxhighlight lang="bash" line copy> | ||
sudo apt update | sudo apt update | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== Voir ce qui peut être mis à jour === | |||
<syntaxhighlight lang="bash" line copy> | <syntaxhighlight lang="bash" line copy> | ||
sudo apt list --upgradable | sudo apt list --upgradable | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== Installation === | |||
<syntaxhighlight lang="bash" line copy> | <syntaxhighlight lang="bash" line copy> | ||
sudo apt install --only-upgrade firefox | sudo apt install --only-upgrade firefox | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==== Ne gère pas les dépendances ==== | |||
<syntaxhighlight lang="bash" line copy> | <syntaxhighlight lang="bash" line copy> | ||
sudo apt upgrade | sudo apt upgrade | ||
</syntaxhighlight> | </syntaxhighlight> | ||
==== Gère les dépendances ==== | |||
(permet l'installation de nouveaux paquets pour résoudre les dépendances) | (permet l'installation de nouveaux paquets pour résoudre les dépendances) | ||
<syntaxhighlight lang="bash" line copy> | <syntaxhighlight lang="bash" line copy> | ||
| Ligne 29 : | Ligne 30 : | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== Supprimez tous les paquets devenus obsolètes et qui ne sont plus nécessaires === | |||
<syntaxhighlight lang="bash" line> | Supprime les anciens noyaux installés | ||
<syntaxhighlight lang="bash" line copy> | |||
sudo apt-get autoremove --purge | sudo apt-get autoremove --purge | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== Supprimez le cache des paquets qui ne peuvent plus être téléchargés === | |||
<syntaxhighlight lang="bash" line copy> | <syntaxhighlight lang="bash" line copy> | ||
sudo apt autoclean | sudo apt autoclean | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== Télécharge et installe les dépendances manquantes pour réparer les paquets cassés. === | |||
<syntaxhighlight lang="bash" line copy> | |||
sudo apt --fix-broken install | |||
</syntaxhighlight> | |||
=== Affichage des infos d'un paquet === | |||
<syntaxhighlight lang="bash" line copy> | |||
apt show firefox | |||
</syntaxhighlight> | |||
=== Recherche de paquets === | |||
<syntaxhighlight lang="bash" line copy> | <syntaxhighlight lang="bash" line copy> | ||
apt search mot-clé | |||
</syntaxhighlight> | </syntaxhighlight> | ||
==== voir tous les paquets | |||
=== Termine la configuration des paquets interrompus. === | |||
[[Dpkg#Termine_la_configuration_des_paquets_interrompus.|Voir commande]] | |||
=== voir tous les paquets === | |||
<syntaxhighlight lang="bash" line copy> | <syntaxhighlight lang="bash" line copy> | ||
apt list --installed | |||
</syntaxhighlight> | </syntaxhighlight> | ||
=== voir si un paquet est à jour === | |||
<syntaxhighlight lang="bash" line copy> | <syntaxhighlight lang="bash" line copy> | ||
apt-cache policy firefox | apt-cache policy firefox | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== compter les paquets installés sur Ubuntu === | |||
filtre pour ne montrer que les paquets actifs. | |||
<syntaxhighlight lang="bash" line> | <syntaxhighlight lang="bash" line> | ||
sudo apt list --installed | wc -l | sudo apt list --installed | wc -l | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== voir si des paquets sont cassés === | |||
<syntaxhighlight lang="bash" line> | <syntaxhighlight lang="bash" line> | ||
sudo apt-get check | |||
</syntaxhighlight> | </syntaxhighlight> | ||
==== | ----- | ||
=== <span style="font-size: 1.2em;">phased => déféré (retardé)</span> === | |||
Cette commande permet de calculer un score entre 0 et 99 à partir de votre machine-id, utilisé par Ubuntu pour les phased updates (mises à jour progressives). | |||
==== 1 .Calcul du Score de Phase ==== | |||
<syntaxhighlight lang="bash" line copy> | <syntaxhighlight lang="bash" line copy> | ||
echo $((0x$(cut -c1-16 /etc/machine-id | head -c 8) % 100)) | |||
</syntaxhighlight> | </syntaxhighlight> | ||
ou | |||
<syntaxhighlight lang="bash" line copy> | <syntaxhighlight lang="bash" line copy> | ||
awk '{print strtonum("0x" substr($0,1,8)) % 100}' /etc/machine-id | |||
</syntaxhighlight> | </syntaxhighlight> | ||
==== | <span id="résumé"></span> | ||
<syntaxhighlight lang="bash" line | |||
==== 2. Résumé ==== | |||
{| class="wikitable" | |||
|- | |||
! Étape | |||
! Action | |||
! Exemple | |||
|- | |||
| 1 | |||
| Extraire les 16 premiers caractères de <code>/etc/machine-id</code> | |||
| <code>a1b2c3d4e5f6g7h</code> | |||
|- | |||
| 2 | |||
| Garder les 8 premiers caractères | |||
| <code>a1b2c3d4</code> | |||
|- | |||
| 3 | |||
| Convertir en décimal (hexadécimal <code>0x...</code>) | |||
| <code>2712849364</code> | |||
|- | |||
| 4 | |||
| Appliquer <code>% 100</code> | |||
| <code>64</code> | |||
|- | |||
| 5 | |||
| '''Score final''' | |||
| '''64''' | |||
|} | |||
<span id="à-quoi-sert-ce-score"></span> | |||
==== 3. À Quoi Sert Ce Score ? ==== | |||
* '''Phased Updates''' : Ubuntu déploie les mises à jour par vagues (ex : 10%, 30%, 50% des machines).<br /> | |||
* Votre score (<code>64</code>) détermine si vous recevez une mise à jour : | |||
** Si la '''phase actuelle''' est ≤ 64 → Vous l’obtenez.<br /> | |||
** Si la phase est > 64 → Vous devrez attendre. | |||
<span id="pourquoi-cette-méthode"></span> | |||
==== 4. Pourquoi Cette Méthode ? ==== | |||
* '''Déterminisme''' : Le score est '''toujours le même''' pour votre machine (car basé sur <code>machine-id</code>).<br /> | |||
* '''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> (old version) ==== | |||
<syntaxhighlight lang="bash" line> | |||
#check_phased_updates.sh | |||
#!/bin/bash | |||
# Liste des paquets en phased updates | |||
PACKAGES=$(apt list --upgradable | grep -E "*" | cut -d'/' -f1) | |||
echo "Checking phased updates" | |||
# Parcourir chaque paquet et extraire le pourcentage de phased updates | |||
for PACKAGE in $PACKAGES; do | |||
echo $PACKAGE | |||
apt-cache policy $PACKAGE | grep "phased" | |||
done | |||
</syntaxhighlight> | </syntaxhighlight> | ||
<syntaxhighlight lang="bash" line> | |||
<syntaxhighlight lang="bash" line | chmod +x check_phased_updates.sh | ||
./check_phased_updates.sh | |||
</syntaxhighlight> | </syntaxhighlight> | ||
==== | ----- | ||
<syntaxhighlight lang="bash" line | |||
==== 6. Lister tous les fichiers <code>phased</code> (Version améliorée) ==== | |||
<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> | </syntaxhighlight> | ||
<syntaxhighlight lang="bash" line> | |||
<syntaxhighlight lang="bash" line | chmod +x check_phased_updates.sh | ||
./check_phased_updates.sh | |||
</syntaxhighlight> | </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> | <syntaxhighlight lang="bash" line copy> | ||
apt-mark showmanual | sort | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Pour voir tous les paquets installés automatiques | |||
<syntaxhighlight lang="bash" line copy> | <syntaxhighlight lang="bash" line copy> | ||
apt-mark showauto | |||
</syntaxhighlight> | </syntaxhighlight> | ||
----- | |||
== Script bash APT historique == | |||
<syntaxhighlight lang="bash" line copy> | <syntaxhighlight lang="bash" line copy> | ||
#!/bin/bash | |||
# Permet de consulter l'historique APT sur un système debian | |||
#Usage: ./apt_log_history0.sh [OPTIONS] | |||
#Options: | |||
# -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; | |||
} | |||
# Couleurs | |||
color = "\033[36m"; # Par défaut (bleu cyan) | |||
if (action ~ /Install|Installation/) color = "\033[32m"; # Vert | |||
if (action ~ /Remove|Suppression/) color = "\033[31m"; # Rouge | |||
printf " %s%-12s\033[0m %s\n", color, action, details; | |||
} | |||
} | |||
' | |||
} | |||
# Affichage de l'aide | |||
display_help() { | |||
echo "Usage: $0 [OPTIONS]" | |||
echo "Options:" | |||
echo " -f, --upgrades Affiche uniquement les mises à jour" | |||
echo " -i, --installs Affiche uniquement les installations" | |||
echo " -u, --removals Affiche uniquement les suppressions" | |||
echo " -r, --reset Affiche tout (réinitialise le filtre)" | |||
echo " -h, --help Affiche ce message d'aide" | |||
exit 0 | |||
} | |||
# Paramètres | |||
FILTER=".*" # Affiche tout par défaut | |||
# Traitement des options | |||
while getopts "fiurh" opt; do | |||
case $opt in | |||
f) FILTER="Upgrade|Mise à jour";; | |||
i) FILTER="Install|Installation";; | |||
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 | |||
# Puis le fichier courant | |||
[ -f "/var/log/apt/history.log" ] && process_apt_history "/var/log/apt/history.log" "$FILTER" | |||
</syntaxhighlight> | </syntaxhighlight> | ||
[[Catégorie:Linux]] [[Catégorie:Debian]] | [[Catégorie:Linux]] [[Catégorie:Debian]] | ||
Dernière version du 16 octobre 2025 à 19:52
Paquets APT
Sur Debian (et ses dérivés comme Ubuntu), apt 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.
Mise à jour de la liste des paquets
sudo apt update
Voir ce qui peut être mis à jour
sudo apt list --upgradable
Installation
sudo apt install --only-upgrade firefox
Ne gère pas les dépendances
sudo apt upgrade
Gère les dépendances
(permet l'installation de nouveaux paquets pour résoudre les dépendances)
sudo apt --with-new-pkgs upgrade
(peut également supprimer des paquets pour satisfaire les dépendances) => plus agressive
sudo apt full-upgrade
Supprimez tous les paquets devenus obsolètes et qui ne sont plus nécessaires
Supprime les anciens noyaux installés
sudo apt-get autoremove --purge
Supprimez le cache des paquets qui ne peuvent plus être téléchargés
sudo apt autoclean
Télécharge et installe les dépendances manquantes pour réparer les paquets cassés.
sudo apt --fix-broken install
Affichage des infos d'un paquet
apt show firefox
Recherche de paquets
apt search mot-clé
Termine la configuration des paquets interrompus.
voir tous les paquets
apt list --installed
voir si un paquet est à jour
apt-cache policy firefox
compter les paquets installés sur Ubuntu
filtre pour ne montrer que les paquets actifs.
sudo apt list --installed | wc -l
voir si des paquets sont cassés
sudo apt-get check
phased => déféré (retardé)
Cette commande permet de calculer un score entre 0 et 99 à partir de votre machine-id, utilisé par Ubuntu pour les phased updates (mises à jour progressives).
1 .Calcul du Score de Phase
echo $((0x$(cut -c1-16 /etc/machine-id | head -c 8) % 100))
ou
awk '{print strtonum("0x" substr($0,1,8)) % 100}' /etc/machine-id
2. Résumé
| Étape | Action | Exemple |
|---|---|---|
| 1 | Extraire les 16 premiers caractères de /etc/machine-id
|
a1b2c3d4e5f6g7h
|
| 2 | Garder les 8 premiers caractères | a1b2c3d4
|
| 3 | Convertir en décimal (hexadécimal 0x...)
|
2712849364
|
| 4 | Appliquer % 100
|
64
|
| 5 | Score final | 64 |
3. À Quoi Sert Ce Score ?
- Phased Updates : Ubuntu déploie les mises à jour par vagues (ex : 10%, 30%, 50% des machines).
- Votre score (
64) détermine si vous recevez une mise à jour :- Si la phase actuelle est ≤ 64 → Vous l’obtenez.
- Si la phase actuelle est ≤ 64 → Vous l’obtenez.
- Si la phase est > 64 → Vous devrez attendre.
4. Pourquoi Cette Méthode ?
- Déterminisme : Le score est toujours le même pour votre machine (car basé sur
machine-id).
- Répartition uniforme : Les scores sont distribués entre 0 et 99 pour équilibrer le déploiement.
5. Lister tous les fichiers phased (old version)
#check_phased_updates.sh
#!/bin/bash
# Liste des paquets en phased updates
PACKAGES=$(apt list --upgradable | grep -E "*" | cut -d'/' -f1)
echo "Checking phased updates"
# Parcourir chaque paquet et extraire le pourcentage de phased updates
for PACKAGE in $PACKAGES; do
echo $PACKAGE
apt-cache policy $PACKAGE | grep "phased"
done
chmod +x check_phased_updates.sh
./check_phased_updates.sh
6. Lister tous les fichiers phased (Version améliorée)
#!/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
chmod +x check_phased_updates.sh
./check_phased_updates.sh
Lister toutes les installations (avec filtrage)
Pour voir tous les paquets installés manuellement (pas les dépendances automatiques)
apt-mark showmanual | sort
Pour voir tous les paquets installés automatiques
apt-mark showauto
Script bash APT historique
#!/bin/bash
# Permet de consulter l'historique APT sur un système debian
#Usage: ./apt_log_history0.sh [OPTIONS]
#Options:
# -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;
}
# Couleurs
color = "\033[36m"; # Par défaut (bleu cyan)
if (action ~ /Install|Installation/) color = "\033[32m"; # Vert
if (action ~ /Remove|Suppression/) color = "\033[31m"; # Rouge
printf " %s%-12s\033[0m %s\n", color, action, details;
}
}
'
}
# Affichage de l'aide
display_help() {
echo "Usage: $0 [OPTIONS]"
echo "Options:"
echo " -f, --upgrades Affiche uniquement les mises à jour"
echo " -i, --installs Affiche uniquement les installations"
echo " -u, --removals Affiche uniquement les suppressions"
echo " -r, --reset Affiche tout (réinitialise le filtre)"
echo " -h, --help Affiche ce message d'aide"
exit 0
}
# Paramètres
FILTER=".*" # Affiche tout par défaut
# Traitement des options
while getopts "fiurh" opt; do
case $opt in
f) FILTER="Upgrade|Mise à jour";;
i) FILTER="Install|Installation";;
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
# Puis le fichier courant
[ -f "/var/log/apt/history.log" ] && process_apt_history "/var/log/apt/history.log" "$FILTER"