« APT » : différence entre les versions
Aucun résumé des modifications |
|||
| (41 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 34 : | Ligne 30 : | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== Supprimez tous les paquets devenus obsolètes et qui ne sont plus nécessaires === | |||
Supprime les anciens noyaux installés | Supprime les anciens noyaux installés | ||
<syntaxhighlight lang="bash" line copy> | <syntaxhighlight lang="bash" line copy> | ||
| Ligne 40 : | Ligne 36 : | ||
</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> | <syntaxhighlight lang="bash" line copy> | ||
sudo apt --fix-broken install | sudo apt --fix-broken install | ||
</syntaxhighlight> | </syntaxhighlight> | ||
=== | === Affichage des infos d'un paquet === | ||
<syntaxhighlight lang="bash" line copy> | <syntaxhighlight lang="bash" line copy> | ||
apt show firefox | |||
</syntaxhighlight> | </syntaxhighlight> | ||
=== | === Recherche de paquets === | ||
<syntaxhighlight lang="bash" line copy> | <syntaxhighlight lang="bash" line copy> | ||
apt search mot-clé | |||
</syntaxhighlight> | </syntaxhighlight> | ||
=== 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 | 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). | 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)) | echo $((0x$(cut -c1-16 /etc/machine-id | head -c 8) % 100)) | ||
| Ligne 138 : | Ligne 98 : | ||
<span id="résumé"></span> | <span id="résumé"></span> | ||
==== | ==== 2. Résumé ==== | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
| Ligne 166 : | Ligne 126 : | ||
|} | |} | ||
---- | <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 /> | * '''Phased Updates''' : Ubuntu déploie les mises à jour par vagues (ex : 10%, 30%, 50% des machines).<br /> | ||
| Ligne 178 : | Ligne 137 : | ||
** Si la phase est > 64 → Vous devrez attendre. | ** 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 /> | * '''Déterminisme''' : Le score est '''toujours le même''' pour votre machine (car basé sur <code>machine-id</code>).<br /> | ||
| Ligne 187 : | 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> (old version) ==== | ||
<syntaxhighlight lang="bash" line> | <syntaxhighlight lang="bash" line> | ||
| Ligne 193 : | 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 208 : | Ligne 166 : | ||
</syntaxhighlight> | </syntaxhighlight> | ||
----- | |||
==== Lister tous les | |||
<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" | |||
apt | |||
</syntaxhighlight> | </syntaxhighlight> | ||
[[Catégorie:Linux]] [[Catégorie:Debian]] | [[Catégorie:Linux]] [[Catégorie:Debian]] | ||