Compare commits
2 commits
main
...
accueil-de
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ad1f459659 | ||
|
|
0166436000 |
|
|
@ -1,702 +0,0 @@
|
|||
#!/bin/bash
|
||||
# Relève la fiche d'une machine, et l'envoie au serveur de l'install party.
|
||||
#
|
||||
# Ce script vit dans le dépôt du wiki, à côté d'install.sh : il est lu et
|
||||
# versionné comme lui, et c'est de là qu'il faut le prendre.
|
||||
#
|
||||
# wget https://gitea.alpinux.org/alpinux.cedrica5l/alpinux-wiki/raw/branch/main/code/linux/linux-mint/alpi-fiche.sh
|
||||
# chmod +x alpi-fiche.sh
|
||||
# sudo ./alpi-fiche.sh --check # depuis la session live, avant d'installer
|
||||
# sudo ./alpi-fiche.sh # après l'installation
|
||||
#
|
||||
# Sur le réseau de l'install party, plus court :
|
||||
#
|
||||
# wget http://10.0.0.1/alpi-fiche.sh && chmod +x alpi-fiche.sh && sudo ./alpi-fiche.sh --check
|
||||
#
|
||||
# Pourquoi la garder sur le serveur plutôt que sur le poste : trois semaines
|
||||
# plus tard, quand quelqu'un rappelle parce que « ça rame », on n'a plus la
|
||||
# machine sous la main. Savoir qu'elle a huit ans, quatre gigaoctets de
|
||||
# mémoire et un disque mécanique qui commence à réallouer des secteurs répond
|
||||
# à la question avant de l'avoir posée.
|
||||
#
|
||||
# Ce qui est envoyé : le modèle, le processeur, la mémoire, les disques et
|
||||
# leur santé, le système installé.
|
||||
#
|
||||
# Deux de ces champs touchent à la personne, et il faut le dire plutôt que de
|
||||
# prétendre le contraire — la première version de cet en-tête annonçait « rien
|
||||
# qui touche à la personne », ce qui était faux :
|
||||
#
|
||||
# · le NOM DE LA MACHINE, choisi pendant l'installation, contient très
|
||||
# souvent un prénom ;
|
||||
# · l'ADRESSE MATÉRIELLE de la carte réseau identifie durablement l'appareil.
|
||||
#
|
||||
# Les deux servent : le nom pour s'y retrouver, l'adresse pour rapprocher la
|
||||
# fiche du bail DHCP. Mais ils appartiennent à la personne dont on installe
|
||||
# l'ordinateur — il faut le lui dire. Ne sont en revanche jamais envoyés : son
|
||||
# nom d'utilisateur, ses fichiers, son historique, ni rien de ce qu'elle a
|
||||
# installé. Le numéro de série est tronqué à quatre caractères.
|
||||
#
|
||||
# alpi-fiche relève et envoie
|
||||
# alpi-fiche --montrer relève et affiche, sans rien envoyer
|
||||
# alpi-fiche --check relève, envoie, et rend un verdict
|
||||
#
|
||||
# Le mode « --check » est fait pour tourner **depuis la clé USB, avant
|
||||
# d'installer** : c'est le seul moment où l'on peut encore renoncer. Un disque
|
||||
# qui se déclare défaillant, on ne passe pas une heure à installer dessus — on
|
||||
# le dit à son propriétaire et on cherche une autre solution.
|
||||
|
||||
set -u
|
||||
|
||||
# Bash ne compte les caractères — et non les octets — que si la locale le dit.
|
||||
# C'est ce qui aligne les colonnes du tableau des disques.
|
||||
export LC_ALL="${LC_ALL:-C.UTF-8}"
|
||||
|
||||
# Le temps que met la collecte, en millisecondes.
|
||||
#
|
||||
# Une machine n'est relevée qu'une fois quand elle n'a pas connu de session
|
||||
# live : il n'y a alors pas d'écart entre deux passages à mesurer. Cette durée-
|
||||
# ci existe toujours, et elle se compare — elle dit ce que la machine met à
|
||||
# s'interroger elle-même : lire le SMART de ses disques, réveiller ceux qui
|
||||
# dorment, énumérer ses barrettes. Un plateau qui rame se voit là.
|
||||
#
|
||||
# On arrête le chronomètre à la fin de la collecte, avant le verdict : celui-ci
|
||||
# attend une touche, et l'on mesurerait la personne devant l'écran.
|
||||
DEBUT_NS="$(date +%s%N 2>/dev/null || echo 0)"
|
||||
|
||||
# smartctl et dmidecode vivent dans /usr/sbin, que le PATH d'un shell ordinaire
|
||||
# ne contient pas toujours — un « command -v » y échouait alors que le binaire
|
||||
# était là.
|
||||
PATH="$PATH:/usr/sbin:/sbin"
|
||||
|
||||
SERVEUR="${ALPI_SERVEUR:-http://alpicache.lan}"
|
||||
MONTRER=0
|
||||
CHECK=0
|
||||
case "${1:-}" in
|
||||
--montrer) MONTRER=1 ;;
|
||||
--check) CHECK=1 ;;
|
||||
esac
|
||||
|
||||
if [ -t 1 ]; then
|
||||
V=$'\e[32m'; O=$'\e[33m'; R=$'\e[31m'; B=$'\e[1m'; D=$'\e[2m'; Z=$'\e[0m'
|
||||
else
|
||||
V=""; O=""; R=""; B=""; D=""; Z=""
|
||||
fi
|
||||
|
||||
# Ce dont le relevé a besoin, et qu'il installe lui-même plutôt que de rendre
|
||||
# un verdict à trous.
|
||||
#
|
||||
# « état des disques inconnu » n'aide personne : c'est précisément la réponse
|
||||
# qu'on était venu chercher. Les deux paquets pèsent moins de deux mégaoctets,
|
||||
# ils sont dans le cache, et l'installation prend deux secondes sur le réseau
|
||||
# de l'install party. On ne le fait qu'en root, qu'avec apt, et sans rien
|
||||
# demander d'autre.
|
||||
completer_outils() {
|
||||
[ "$(id -u)" = "0" ] || return 0
|
||||
command -v apt-get >/dev/null 2>&1 || return 0
|
||||
|
||||
local manquants=""
|
||||
command -v smartctl >/dev/null 2>&1 || manquants="$manquants smartmontools"
|
||||
command -v dmidecode >/dev/null 2>&1 || manquants="$manquants dmidecode"
|
||||
[ -z "$manquants" ] && return 0
|
||||
|
||||
echo "==> Installation de ce qui manque au relevé :$manquants"
|
||||
# Par le cache s'il répond, directement sinon. « -qq » pour ne pas noyer
|
||||
# l'écran : ce n'est pas l'objet de la manœuvre.
|
||||
local proxy=""
|
||||
if command -v wget >/dev/null 2>&1 \
|
||||
&& wget -q --spider --timeout=3 "$SERVEUR/" 2>/dev/null; then
|
||||
proxy="-o Acquire::http::Proxy=http://apt-proxy:3142"
|
||||
fi
|
||||
DEBIAN_FRONTEND=noninteractive apt-get $proxy -qq -y install $manquants \
|
||||
>/dev/null 2>&1 \
|
||||
|| echo " (échec — le relevé se fera sans)"
|
||||
# Ce qui vient d'arriver est dans /usr/sbin, que le PATH d'un shell
|
||||
# ordinaire ne contient pas toujours.
|
||||
PATH="$PATH:/usr/sbin:/sbin"
|
||||
}
|
||||
|
||||
completer_outils
|
||||
|
||||
lire_dmi() {
|
||||
cat "/sys/class/dmi/id/$1" 2>/dev/null | tr -d '\n' | sed 's/^ *//; s/ *$//'
|
||||
}
|
||||
|
||||
echapper() {
|
||||
# De quoi écrire du JSON sans rien installer : guillemets, antislashs et
|
||||
# sauts de ligne, et c'est tout ce qui peut nous arriver ici.
|
||||
printf '%s' "$1" | sed 's/\\/\\\\/g; s/"/\\"/g' | tr -d '\n\r'
|
||||
}
|
||||
|
||||
champ() { printf '"%s":"%s"' "$1" "$(echapper "${2:-}")"; }
|
||||
|
||||
# --- La machine ------------------------------------------------------------
|
||||
|
||||
MODELE="$(lire_dmi product_name)"
|
||||
MARQUE="$(lire_dmi sys_vendor)"
|
||||
SERIE="$(lire_dmi product_serial)"
|
||||
# Le numéro de série identifie un objet, pas une personne, mais il n'a rien à
|
||||
# faire dans un fichier qu'on partage : on n'en garde que les quatre derniers
|
||||
# caractères, assez pour distinguer deux machines du même modèle.
|
||||
SERIE="${SERIE: -4}"
|
||||
BIOS="$(lire_dmi bios_date)"
|
||||
|
||||
PROCESSEUR="$(awk -F': ' '/^model name/{print $2; exit}' /proc/cpuinfo)"
|
||||
COEURS="$(nproc 2>/dev/null || echo '?')"
|
||||
MEMOIRE_KO="$(awk '/^MemTotal/{print $2}' /proc/meminfo)"
|
||||
|
||||
SYSTEME=""
|
||||
if [ -r /etc/os-release ]; then
|
||||
SYSTEME="$(. /etc/os-release; echo "${PRETTY_NAME:-$NAME $VERSION}")"
|
||||
fi
|
||||
NOYAU="$(uname -r)"
|
||||
ARCHITECTURE="$(uname -m)"
|
||||
|
||||
# Sommes-nous sur la clé USB, ou sur le système installé ?
|
||||
#
|
||||
# La distinction n'est pas cosmétique : les deux relevés répondent à deux
|
||||
# questions différentes. Celui de la session live dit « peut-on installer sur
|
||||
# cette machine ? » et se fait avant d'effacer quoi que ce soit. Celui d'après
|
||||
# dit « qu'avons-nous installé, et sur quoi ». Les garder séparés permet de
|
||||
# comparer — un disque qui allait bien le matin et qui se plaint le soir, cela
|
||||
# se voit.
|
||||
#
|
||||
# Le signe qui ne trompe pas est la racine : une session live la monte en
|
||||
# overlay au-dessus d'un squashfs, ce qu'aucun système installé ne fait. S'y
|
||||
# ajoute « boot=casper » ou « boot=live » sur la ligne de commande du noyau.
|
||||
#
|
||||
# L'existence de /cdrom ou de /rofs, elle, ne prouve rien : l'installateur de
|
||||
# Mint laisse un /cdrom vide derrière lui, et la première version de ce script
|
||||
# a donc déclaré « session live » une machine parfaitement installée. On ne les
|
||||
# retient que s'ils sont réellement montés.
|
||||
MOMENT="post-installation"
|
||||
if findmnt -n -o FSTYPE / 2>/dev/null | grep -qE '^(overlay|aufs|squashfs)$' \
|
||||
|| grep -qE '(^| )boot=(casper|live)( |$)' /proc/cmdline 2>/dev/null \
|
||||
|| mountpoint -q /rofs 2>/dev/null \
|
||||
|| { mountpoint -q /cdrom 2>/dev/null \
|
||||
&& findmnt -n -o FSTYPE /cdrom 2>/dev/null | grep -qE '^(iso9660|squashfs)$'; }; then
|
||||
MOMENT="live"
|
||||
fi
|
||||
|
||||
# --- La mémoire, barrette par barrette ------------------------------------
|
||||
#
|
||||
# La question qu'on pose vraiment devant une machine lente : peut-on en
|
||||
# ajouter ? Elle demande trois réponses — combien de connecteurs, combien
|
||||
# d'occupés, et de quel type. Un slot libre en DDR3 ne se remplit pas avec ce
|
||||
# qu'on a dans le tiroir.
|
||||
#
|
||||
# dmidecode lit cela dans la table du BIOS. Il est présent par défaut sur
|
||||
# Debian, Ubuntu et Mint ; s'il manque, on ne prétend rien plutôt que de
|
||||
# deviner.
|
||||
|
||||
BARRETTES="["
|
||||
SLOTS_TOTAL=0
|
||||
SLOTS_PRIS=0
|
||||
TYPE_MEMOIRE=""
|
||||
VITESSE_MEMOIRE=""
|
||||
if command -v dmidecode >/dev/null 2>&1 && [ "$(id -u)" = "0" ]; then
|
||||
premier=1
|
||||
# Chaque bloc « Memory Device » décrit un connecteur, occupé ou non.
|
||||
while IFS= read -r bloc; do
|
||||
emplacement="$(printf '%s' "$bloc" | sed -n 's/.*|Locator:\([^|]*\).*/\1/p' | sed 's/^ *//; s/ *$//')"
|
||||
taille="$(printf '%s' "$bloc" | sed -n 's/.*|Size:\([^|]*\).*/\1/p' | sed 's/^ *//; s/ *$//')"
|
||||
type_="$(printf '%s' "$bloc" | sed -n 's/.*|Type:\([^|]*\).*/\1/p' | sed 's/^ *//; s/ *$//')"
|
||||
vitesse="$(printf '%s' "$bloc" | sed -n 's/.*|Speed:\([^|]*\).*/\1/p' | sed 's/^ *//; s/ *$//')"
|
||||
forme="$(printf '%s' "$bloc" | sed -n 's/.*|Form Factor:\([^|]*\).*/\1/p' | sed 's/^ *//; s/ *$//')"
|
||||
reference="$(printf '%s' "$bloc" | sed -n 's/.*|Part Number:\([^|]*\).*/\1/p' | sed 's/^ *//; s/ *$//')"
|
||||
# La vitesse configurée est celle à laquelle la barrette travaille
|
||||
# vraiment ; « Speed » n'est que ce dont elle serait capable. L'écart
|
||||
# entre les deux explique bien des machines qui « rament » sans raison
|
||||
# apparente : une DDR4-3200 bridée à 2133 par la carte mère, ou deux
|
||||
# barrettes dépareillées qui s'alignent sur la plus lente.
|
||||
vitesse_reelle="$(printf '%s' "$bloc" | sed -n 's/.*|Configured Memory Speed:\([^|]*\).*/\1/p' | sed 's/^ *//; s/ *$//')"
|
||||
fabricant="$(printf '%s' "$bloc" | sed -n 's/.*|Manufacturer:\([^|]*\).*/\1/p' | sed 's/^ *//; s/ *$//')"
|
||||
rang="$(printf '%s' "$bloc" | sed -n 's/.*|Rank:\([^|]*\).*/\1/p' | sed 's/^ *//; s/ *$//')"
|
||||
tension="$(printf '%s' "$bloc" | sed -n 's/.*|Configured Voltage:\([^|]*\).*/\1/p' | sed 's/^ *//; s/ *$//')"
|
||||
largeur="$(printf '%s' "$bloc" | sed -n 's/.*|Data Width:\([^|]*\).*/\1/p' | sed 's/^ *//; s/ *$//')"
|
||||
detail="$(printf '%s' "$bloc" | sed -n 's/.*|Type Detail:\([^|]*\).*/\1/p' | sed 's/^ *//; s/ *$//')"
|
||||
[ -z "$emplacement" ] && continue
|
||||
|
||||
SLOTS_TOTAL=$(( SLOTS_TOTAL + 1 ))
|
||||
case "$taille" in
|
||||
*"No Module"*|""|"Unknown") taille="" ;;
|
||||
*) SLOTS_PRIS=$(( SLOTS_PRIS + 1 ))
|
||||
[ -z "$TYPE_MEMOIRE" ] && [ "$type_" != "Unknown" ] && TYPE_MEMOIRE="$type_"
|
||||
# Deux barrettes de vitesses différentes s'alignent sur la plus
|
||||
# lente : c'est celle-là qu'il faut retenir pour la machine.
|
||||
if [ -n "$vitesse_reelle" ] && [ "$vitesse_reelle" != "Unknown" ]; then
|
||||
nombre="${vitesse_reelle%% *}"
|
||||
case "$nombre" in
|
||||
''|*[!0-9]*) ;;
|
||||
*) if [ -z "$VITESSE_MEMOIRE" ] || [ "$nombre" -lt "$VITESSE_MEMOIRE" ]; then
|
||||
VITESSE_MEMOIRE="$nombre"
|
||||
fi ;;
|
||||
esac
|
||||
fi ;;
|
||||
esac
|
||||
|
||||
[ "$premier" = 0 ] && BARRETTES="$BARRETTES,"
|
||||
premier=0
|
||||
BARRETTES="$BARRETTES{$(champ emplacement "$emplacement"),$(champ taille "$taille"),\
|
||||
$(champ type "$type_"),$(champ vitesse "$vitesse"),$(champ vitesse_reelle "$vitesse_reelle"),\
|
||||
$(champ forme "$forme"),$(champ reference "$reference"),$(champ fabricant "$fabricant"),\
|
||||
$(champ rang "$rang"),$(champ tension "$tension"),$(champ largeur "$largeur"),\
|
||||
$(champ detail "$detail")}"
|
||||
done < <(dmidecode -t memory 2>/dev/null \
|
||||
| awk '/^Memory Device$/{bloc=""; dedans=1; next}
|
||||
/^$/{if (dedans && bloc != "") print bloc; dedans=0; bloc=""}
|
||||
dedans {gsub(/^[ \t]+/, ""); bloc = bloc "|" $0}
|
||||
END{if (dedans && bloc != "") print bloc}')
|
||||
fi
|
||||
BARRETTES="$BARRETTES]"
|
||||
|
||||
TABLE_DISQUES=""
|
||||
|
||||
# Remplir une colonne à la bonne largeur.
|
||||
#
|
||||
# « printf %-10s » compte les octets, pas les caractères : « mécanique » en
|
||||
# pèse dix pour neuf signes, et la colonne suivante glisse d'un cran. Bash,
|
||||
# lui, sait compter les caractères quand la locale est en UTF-8 — on lui
|
||||
# laisse ce travail, et l'on force la locale plutôt que d'espérer.
|
||||
colonne() {
|
||||
local texte="$1" largeur="$2" cote="${3:-gauche}" n
|
||||
n=${#texte}
|
||||
if [ "$n" -gt "$largeur" ]; then
|
||||
printf '%s' "${texte:0:$largeur}"
|
||||
return
|
||||
fi
|
||||
local blancs=""
|
||||
while [ "$n" -lt "$largeur" ]; do blancs="$blancs "; n=$((n + 1)); done
|
||||
if [ "$cote" = droite ]; then printf '%s%s' "$blancs" "$texte"
|
||||
else printf '%s%s' "$texte" "$blancs"; fi
|
||||
}
|
||||
|
||||
# --- Les disques -----------------------------------------------------------
|
||||
#
|
||||
# lsblk donne la taille et le type ; le drapeau « rotational » du noyau
|
||||
# distingue un disque mécanique d'un SSD sans rien installer. C'est la
|
||||
# distinction qui compte : une machine lente avec un disque mécanique de dix
|
||||
# ans ne s'arrangera pas avec un système plus léger.
|
||||
|
||||
DISQUES="["
|
||||
premier=1
|
||||
for chemin in /sys/block/*; do
|
||||
nom="$(basename "$chemin")"
|
||||
case "$nom" in loop*|ram*|sr*|zram*|dm-*) continue ;; esac
|
||||
[ -r "$chemin/size" ] || continue
|
||||
taille=$(( $(cat "$chemin/size") * 512 ))
|
||||
[ "$taille" -lt 1000000000 ] && continue # moins d'un Go : pas un disque
|
||||
rotatif="$(cat "$chemin/queue/rotational" 2>/dev/null || echo '?')"
|
||||
modele="$(cat "$chemin/device/model" 2>/dev/null | sed 's/ *$//')"
|
||||
|
||||
# L'état SMART, s'il est lisible. Sans smartctl on ne prétend rien.
|
||||
sante=""
|
||||
reallocations=""
|
||||
pending=""
|
||||
illisibles=""
|
||||
heures=""
|
||||
usure=""
|
||||
ecrit=""
|
||||
if command -v smartctl >/dev/null 2>&1; then
|
||||
sortie="$(smartctl -H -A "/dev/$nom" 2>/dev/null)"
|
||||
sante="$(printf '%s' "$sortie" | grep -iE 'overall-health|SMART Health' \
|
||||
| sed 's/.*: *//' | head -1)"
|
||||
reallocations="$(printf '%s' "$sortie" \
|
||||
| awk '/Reallocated_Sector_Ct|Reallocated_Event/{print $10; exit}')"
|
||||
# Les secteurs que le disque n'arrive plus à lire. Ils manquaient à la
|
||||
# fiche, et c'est ce qui a fait qu'alpicache annonçait « sain » un
|
||||
# disque déclaré à remplacer : il ne les avait jamais reçus.
|
||||
pending="$(printf '%s' "$sortie" | awk '$2 == "Current_Pending_Sector"{print $10; exit}')"
|
||||
illisibles="$(printf '%s' "$sortie" | awk '$2 == "Offline_Uncorrectable"{print $10; exit}')"
|
||||
heures="$(printf '%s' "$sortie" | awk '/Power_On_Hours/{print $10; exit}')"
|
||||
|
||||
# L'usure d'un SSD, en pour cent de vie consommée.
|
||||
#
|
||||
# Un disque mécanique s'use en tournant, un SSD en écrivant : les
|
||||
# heures de marche ne disent rien de son état. Chaque constructeur a
|
||||
# son attribut, et deux conventions coexistent — les uns comptent ce
|
||||
# qui est consommé, les autres ce qui reste. On ramène tout à
|
||||
# « consommé », qui est le sens qu'on veut lire. NVMe donne directement
|
||||
# « Percentage Used » ; pour les SATA, la colonne VALUE part de 100 et
|
||||
# descend.
|
||||
usure="$(printf '%s' "$sortie" | awk '/Percentage Used:/{gsub(/[^0-9]/,"",$3); print $3; exit}')"
|
||||
if [ -z "$usure" ]; then
|
||||
usure="$(printf '%s' "$sortie" | awk '
|
||||
/Media_Wearout_Indicator|Wear_Leveling_Count|SSD_Life_Left|Percent_Lifetime_Remain/ {
|
||||
if ($4 ~ /^[0-9]+$/ && $4 <= 100) { print 100 - $4; exit }
|
||||
}')"
|
||||
fi
|
||||
# Ce que le disque a écrit depuis sa mise en service : l'autre façon de
|
||||
# juger un SSD, dont les modèles courants tiennent 100 à 600 To.
|
||||
ecrit="$(printf '%s' "$sortie" | awk '
|
||||
/Total_LBAs_Written|Host_Writes_32MiB|Total_Host_Writes/ {
|
||||
if ($10 ~ /^[0-9]+$/) { print $10; exit }
|
||||
}
|
||||
/Data Units Written:/ { gsub(/[^0-9]/,"",$4); print $4; exit }')"
|
||||
fi
|
||||
|
||||
# Les mêmes chiffres, mis en table pour être lus par quelqu'un. Le verdict
|
||||
# ne dit que ce qui cloche ; on veut aussi voir ce qui va, et sur quoi le
|
||||
# verdict se fonde.
|
||||
taille_go="$(awk -v o="$taille" 'BEGIN{printf "%.1f", o/1000000000}' | tr . ,)"
|
||||
secteurs="—"
|
||||
for valeur in "${pending:-0}" "${illisibles:-0}" "${reallocations:-0}"; do
|
||||
case "$valeur" in ''|*[!0-9]*) continue ;; esac
|
||||
[ "$valeur" -gt 0 ] && secteurs="!"
|
||||
done
|
||||
[ "$secteurs" = "!" ] && secteurs="$(printf '%s/%s/%s' \
|
||||
"${reallocations:-0}" "${pending:-0}" "${illisibles:-0}")"
|
||||
usure_dite="—"
|
||||
if [ "$rotatif" = 1 ]; then
|
||||
case "$heures" in ''|*[!0-9]*) ;; *)
|
||||
usure_dite="$heures h"
|
||||
[ "$heures" -ge 8760 ] && usure_dite="$usure_dite ($(( heures / 8760 )),$(( (heures % 8760) * 10 / 8760 )) an)" ;;
|
||||
esac
|
||||
else
|
||||
case "$usure" in ''|*[!0-9]*) ;; *) usure_dite="usé à $usure %" ;; esac
|
||||
fi
|
||||
TABLE_DISQUES="$TABLE_DISQUES$(
|
||||
colonne "$nom" 7; printf ' '
|
||||
colonne "${modele:-—}" 20; printf ' '
|
||||
colonne "$([ "$rotatif" = 1 ] && echo mécanique || echo SSD)" 10; printf ' '
|
||||
colonne "$taille_go Go" 10 droite; printf ' '
|
||||
colonne "${sante:-—}" 8; printf ' '
|
||||
colonne "$usure_dite" 16; printf ' '
|
||||
printf '%s' "$secteurs")"$'\n'
|
||||
|
||||
[ "$premier" = 0 ] && DISQUES="$DISQUES,"
|
||||
premier=0
|
||||
DISQUES="$DISQUES{$(champ nom "$nom"),$(champ modele "$modele"),\
|
||||
\"octets\":$taille,$(champ type "$([ "$rotatif" = 1 ] && echo mécanique || echo SSD)"),\
|
||||
$(champ sante "$sante"),$(champ reallocations "$reallocations"),\
|
||||
$(champ pending "$pending"),$(champ illisibles "$illisibles"),$(champ heures "$heures"),\
|
||||
$(champ usure "$usure"),$(champ ecrit "$ecrit")}"
|
||||
done
|
||||
DISQUES="$DISQUES]"
|
||||
|
||||
# L'occupation, telle qu'elle est maintenant.
|
||||
OCCUPATION="["
|
||||
premier=1
|
||||
while read -r point taille utilise dispo pourcent; do
|
||||
[ "$premier" = 0 ] && OCCUPATION="$OCCUPATION,"
|
||||
premier=0
|
||||
OCCUPATION="$OCCUPATION{$(champ point "$point"),\"taille\":$taille,\
|
||||
\"utilise\":$utilise,$(champ pourcent "$pourcent")}"
|
||||
done < <(df -B1 --output=target,size,used,avail,pcent 2>/dev/null \
|
||||
| awk 'NR>1 && $2+0 > 1000000000 {print $1, $2, $3, $4, $5}')
|
||||
OCCUPATION="$OCCUPATION]"
|
||||
|
||||
# --- Le rapport ------------------------------------------------------------
|
||||
|
||||
# L'adresse matérielle de l'interface par laquelle on sort — celle que le
|
||||
# serveur a vue en donnant le bail, donc celle qui permettra de rapprocher
|
||||
# cette fiche de la machine servie. « ip -o link » a failli nous donner
|
||||
# l'adresse de diffusion, qui est la même pour tout le monde.
|
||||
INTERFACE="$(ip -o -4 route show default 2>/dev/null | awk '{print $5; exit}')"
|
||||
[ -z "$INTERFACE" ] && INTERFACE="$(ls /sys/class/net 2>/dev/null \
|
||||
| grep -v '^lo$' | head -1)"
|
||||
MAC="$(cat "/sys/class/net/$INTERFACE/address" 2>/dev/null)"
|
||||
|
||||
RAPPORT="{$(champ machine "$(hostname)"),$(champ mac "$MAC"),\
|
||||
$(champ marque "$MARQUE"),$(champ modele "$MODELE"),$(champ serie "$SERIE"),\
|
||||
$(champ bios "$BIOS"),$(champ processeur "$PROCESSEUR"),\"coeurs\":${COEURS:-0},\
|
||||
\"memoire_ko\":${MEMOIRE_KO:-0},$(champ systeme "$SYSTEME"),$(champ noyau "$NOYAU"),\
|
||||
$(champ architecture "$ARCHITECTURE"),$(champ moment "$MOMENT"),\
|
||||
$(champ type_memoire "$TYPE_MEMOIRE"),\
|
||||
$(champ vitesse_memoire "$VITESSE_MEMOIRE"),\
|
||||
\"slots_total\":$SLOTS_TOTAL,\"slots_pris\":$SLOTS_PRIS,\"barrettes\":$BARRETTES,\
|
||||
\"disques\":$DISQUES,\"occupation\":$OCCUPATION}"
|
||||
|
||||
DUREE_MS=0
|
||||
case "$DEBUT_NS" in
|
||||
''|*[!0-9]*) ;;
|
||||
0) ;;
|
||||
*) FIN_NS="$(date +%s%N 2>/dev/null || echo 0)"
|
||||
case "$FIN_NS" in
|
||||
''|*[!0-9]*|0) ;;
|
||||
*) DUREE_MS=$(( (FIN_NS - DEBUT_NS) / 1000000 )) ;;
|
||||
esac ;;
|
||||
esac
|
||||
[ "$DUREE_MS" -lt 0 ] && DUREE_MS=0
|
||||
RAPPORT="${RAPPORT%\}},\"duree_releve_ms\":$DUREE_MS}"
|
||||
|
||||
if [ "$MONTRER" = 1 ]; then
|
||||
if command -v python3 >/dev/null 2>&1; then
|
||||
printf '%s' "$RAPPORT" | python3 -m json.tool 2>/dev/null || printf '%s\n' "$RAPPORT"
|
||||
else
|
||||
printf '%s\n' "$RAPPORT"
|
||||
fi
|
||||
exit 0
|
||||
fi
|
||||
|
||||
[ "$CHECK" = 1 ] && printf " %sLa fiche est envoyée à alpicache…%s\n\n" "$D" "$Z"
|
||||
echo "Relevé : $([ "$MOMENT" = live ] && echo "session live, avant installation" \
|
||||
|| echo "système installé")"
|
||||
echo "Machine : $MARQUE $MODELE"
|
||||
echo "Processeur : $PROCESSEUR ($COEURS cœurs)"
|
||||
if [ "$SLOTS_TOTAL" -gt 0 ]; then
|
||||
echo "Mémoire : $(( MEMOIRE_KO / 1024 )) Mo ${TYPE_MEMOIRE:+$TYPE_MEMOIRE }\
|
||||
${VITESSE_MEMOIRE:+à $VITESSE_MEMOIRE MT/s }· \
|
||||
$SLOTS_PRIS connecteur(s) occupé(s) sur $SLOTS_TOTAL"
|
||||
else
|
||||
echo "Mémoire : $(( MEMOIRE_KO / 1024 )) Mo"
|
||||
fi
|
||||
echo "Système : $SYSTEME"
|
||||
echo
|
||||
|
||||
MOTIFS=""
|
||||
|
||||
# --- Le verdict ------------------------------------------------------------
|
||||
#
|
||||
# Trois réponses possibles, et une seule question : peut-on installer sur cette
|
||||
# machine ? Les seuils viennent de ce qu'on rencontre en install party, pas
|
||||
# d'un idéal — une machine de dix ans avec 4 Go et un disque sain fait très
|
||||
# bien l'affaire, et c'est souvent celle qu'on nous apporte.
|
||||
|
||||
# Le verdict sort toujours, live ou non. C'est l'information qu'on est venu
|
||||
# chercher : la première version ne le rendait qu'en session live, et le
|
||||
# relevé d'après installation défilait sans rien dire de l'état des disques —
|
||||
# précisément ce dont on voulait parler au propriétaire.
|
||||
[ "$MONTRER" = 1 ] || CHECK=1
|
||||
|
||||
if [ "$CHECK" = 1 ]; then
|
||||
GRAVITE=0 # 0 rien à signaler · 1 à surveiller · 2 ne pas installer
|
||||
REMARQUES=""
|
||||
|
||||
note() {
|
||||
[ "$1" -gt "$GRAVITE" ] && GRAVITE="$1"
|
||||
REMARQUES="$REMARQUES$2"$'\n'
|
||||
# Le même motif, débarrassé de ses couleurs et de ses retours à la
|
||||
# ligne, pour qu'alpicache dise exactement ce qui a été dit ici.
|
||||
if [ "$1" -ge 1 ]; then
|
||||
# Une note tient sur plusieurs lignes à l'écran ; le motif, lui,
|
||||
# est d'un seul tenant — il ira dans une case de tableau.
|
||||
nu="$(printf '%s' "$2" | tr '\n' ' ' | sed -e 's/\x1b\[[0-9;]*m//g' \
|
||||
-e 's/[[:space:]]\{1,\}/ /g' \
|
||||
-e 's/^ *[!?✗·] *//' \
|
||||
-e 's/^ *//' -e 's/ *$//')"
|
||||
[ -n "$nu" ] && MOTIFS="$MOTIFS$nu"$'\n'
|
||||
fi
|
||||
}
|
||||
|
||||
# Les disques. C'est pour eux qu'on fait ce contrôle.
|
||||
for chemin in /sys/block/*; do
|
||||
nom="$(basename "$chemin")"
|
||||
case "$nom" in loop*|ram*|sr*|zram*|dm-*) continue ;; esac
|
||||
[ -r "$chemin/size" ] || continue
|
||||
taille=$(( $(cat "$chemin/size") * 512 ))
|
||||
[ "$taille" -lt 1000000000 ] && continue
|
||||
|
||||
if ! command -v smartctl >/dev/null 2>&1; then
|
||||
note 1 " ${O}?${Z} état des disques inconnu — smartmontools n'est pas installé.
|
||||
${D}sudo apt install -y smartmontools${Z} ${D}(il passera par le cache)${Z}"
|
||||
break
|
||||
fi
|
||||
|
||||
sortie="$(smartctl -H -A "/dev/$nom" 2>/dev/null)"
|
||||
if printf '%s' "$sortie" | grep -qiE 'overall-health.*(FAILED|FAILING)'; then
|
||||
note 2 " ${R}✗${Z} ${B}/dev/$nom se déclare défaillant${Z} — ne pas installer dessus."
|
||||
fi
|
||||
# Les trois attributs ne disent pas la même chose, et les confondre
|
||||
# revient à sous-estimer les deux qui comptent.
|
||||
#
|
||||
# Reallocated_Sector_Ct des secteurs déjà remplacés par la réserve
|
||||
# du disque. Quelques-uns sont de l'usure
|
||||
# ordinaire ; c'est leur nombre qui parle.
|
||||
# Current_Pending_Sector des secteurs que le disque n'arrive plus à
|
||||
# lire et n'a pas encore pu déplacer. Ce
|
||||
# qu'ils contenaient est en train d'être
|
||||
# perdu. Un seul suffit à s'inquiéter.
|
||||
# Offline_Uncorrectable des secteurs définitivement illisibles.
|
||||
#
|
||||
# Les deux derniers ne sont pas de l'usure mais une panne en cours :
|
||||
# on ne les mesure pas à la même aune que le premier.
|
||||
for attribut in Reallocated_Sector_Ct Current_Pending_Sector Offline_Uncorrectable; do
|
||||
valeur="$(printf '%s' "$sortie" | awk -v a="$attribut" '$2 == a {print $10; exit}')"
|
||||
case "$valeur" in ''|*[!0-9]*) continue ;; esac
|
||||
[ "$valeur" = "0" ] && continue
|
||||
case "$attribut" in
|
||||
Reallocated_Sector_Ct)
|
||||
libelle="secteur(s) déjà remplacé(s)"
|
||||
if [ "$valeur" -ge 50 ]; then
|
||||
note 2 " ${R}✗${Z} /dev/$nom : ${B}$valeur $libelle${Z} — disque à remplacer."
|
||||
else
|
||||
note 1 " ${O}!${Z} /dev/$nom : $valeur $libelle — à surveiller."
|
||||
fi ;;
|
||||
Current_Pending_Sector)
|
||||
note 2 " ${R}✗${Z} /dev/$nom : ${B}$valeur secteur(s) illisible(s)${Z} en attente.
|
||||
${R}Ce ne sont pas des secteurs usés mais des données que le disque
|
||||
n'arrive plus à relire : le disque est en train de lâcher.${Z}
|
||||
${D}Sauvegarder ce qui doit l'être avant toute autre chose, et
|
||||
ne rien installer dessus — l'installation ne tiendrait pas.${Z}" ;;
|
||||
Offline_Uncorrectable)
|
||||
note 2 " ${R}✗${Z} /dev/$nom : ${B}$valeur secteur(s) définitivement perdu(s)${Z}.
|
||||
${R}Le disque a renoncé à les relire. À remplacer.${Z}" ;;
|
||||
esac
|
||||
done
|
||||
heures="$(printf '%s' "$sortie" | awk '/Power_On_Hours/{print $10; exit}')"
|
||||
rotatif="$(cat "$chemin/queue/rotational" 2>/dev/null)"
|
||||
|
||||
# L'usure, recalculée ici : cette boucle est distincte de celle du
|
||||
# relevé et ne voit pas ses variables.
|
||||
usure="$(printf '%s' "$sortie" | awk '/Percentage Used:/{gsub(/[^0-9]/,"",$3); print $3; exit}')"
|
||||
if [ -z "$usure" ]; then
|
||||
usure="$(printf '%s' "$sortie" | awk '
|
||||
/Media_Wearout_Indicator|Wear_Leveling_Count|SSD_Life_Left|Percent_Lifetime_Remain/ {
|
||||
if ($4 ~ /^[0-9]+$/ && $4 <= 100) { print 100 - $4; exit }
|
||||
}')"
|
||||
fi
|
||||
# Un disque mécanique se signale toujours, et pas seulement quand il
|
||||
# est vieux. C'est le premier frein d'une machine par ailleurs
|
||||
# correcte : remplacer un plateau par un SSD fait plus pour elle que
|
||||
# n'importe quel réglage, et c'est le genre de conseil qu'on donne
|
||||
# pendant qu'on a la machine ouverte devant soi.
|
||||
# Les heures de marche, dites en heures et en années de fonctionnement.
|
||||
# « 477 j 15 h » se lit mal : on croit à un disque épuisé alors que
|
||||
# c'est une année et quelques mois de marche, ce qui est peu.
|
||||
marche=""
|
||||
case "$heures" in
|
||||
''|*[!0-9]*) ;;
|
||||
*) marche="$heures h"
|
||||
if [ "$heures" -ge 8760 ]; then
|
||||
marche="$marche, soit $(( heures / 8760 )),$(( (heures % 8760) * 10 / 8760 )) an de marche"
|
||||
fi ;;
|
||||
esac
|
||||
|
||||
if [ "$rotatif" = "1" ]; then
|
||||
# Un disque mécanique se fatigue en tournant. Les constructeurs
|
||||
# annoncent 300 000 à 600 000 heures de MTBF, mais le retour du
|
||||
# terrain est plus sobre : au-delà de 30 000 heures — trois ans et
|
||||
# demi de marche continue — les pannes deviennent sensiblement plus
|
||||
# fréquentes, et à 45 000 on est dans le sursis.
|
||||
gravite_disque=1
|
||||
supplement=""
|
||||
case "$heures" in
|
||||
''|*[!0-9]*) ;;
|
||||
*) if [ "$heures" -ge 45000 ]; then
|
||||
gravite_disque=2
|
||||
supplement="
|
||||
${R}Au-delà de 45 000 heures : sauvegarder avant toute chose.${Z}"
|
||||
elif [ "$heures" -ge 30000 ]; then
|
||||
supplement="
|
||||
${O}Plus de 30 000 heures de marche : il a fait son temps.${Z}"
|
||||
fi ;;
|
||||
esac
|
||||
note "$gravite_disque" " ${O}!${Z} /dev/$nom est un ${B}disque mécanique${Z}${marche:+ · $marche}.
|
||||
${D}Le remplacer par un SSD ferait plus pour cette machine que
|
||||
tout le reste réuni — démarrage, ouverture des programmes, réactivité.${Z}$supplement"
|
||||
else
|
||||
# Un SSD ne s'use pas en tournant mais en écrivant. Les heures de
|
||||
# marche ne disent rien de son état : c'est l'usure qu'on regarde.
|
||||
case "$usure" in
|
||||
''|*[!0-9]*)
|
||||
[ -n "$marche" ] && note 0 " ${V}·${Z} /dev/$nom est un SSD · $marche.
|
||||
${D}Usure non déclarée par ce modèle.${Z}" ;;
|
||||
*) if [ "$usure" -ge 90 ]; then
|
||||
note 2 " ${R}✗${Z} /dev/$nom : SSD usé à ${B}${usure} %${Z} — il approche de sa fin.
|
||||
${R}Sauvegarder, et prévoir son remplacement.${Z}"
|
||||
elif [ "$usure" -ge 70 ]; then
|
||||
note 1 " ${O}!${Z} /dev/$nom : SSD usé à ${usure} %${marche:+ · $marche}.
|
||||
${D}Encore utilisable, mais il faudra y penser.${Z}"
|
||||
else
|
||||
note 0 " ${V}·${Z} /dev/$nom : SSD usé à ${usure} % seulement${marche:+ · $marche}."
|
||||
fi ;;
|
||||
esac
|
||||
fi
|
||||
if [ "$taille" -lt 32000000000 ]; then
|
||||
note 1 " ${O}!${Z} /dev/$nom ne fait que $(( taille / 1000000000 )) Go — c'est juste."
|
||||
fi
|
||||
done
|
||||
|
||||
# La mémoire, le processeur.
|
||||
MEMOIRE_MO=$(( MEMOIRE_KO / 1024 ))
|
||||
if [ "$MEMOIRE_MO" -lt 2048 ]; then
|
||||
note 2 " ${R}✗${Z} ${B}${MEMOIRE_MO} Mo de mémoire${Z} — trop peu pour Mint.
|
||||
${D}Envisager une version légère, ou ajouter de la mémoire.${Z}"
|
||||
elif [ "$MEMOIRE_MO" -lt 4096 ]; then
|
||||
libres=$(( SLOTS_TOTAL - SLOTS_PRIS ))
|
||||
note 1 " ${O}!${Z} ${MEMOIRE_MO} Mo de mémoire — Mint tournera, mais sans aisance.$(
|
||||
[ "$libres" -gt 0 ] && printf '\n %s' "${D}$libres connecteur(s) ${TYPE_MEMOIRE} libre(s) : la machine est extensible.${Z}")"
|
||||
fi
|
||||
if [ "$ARCHITECTURE" != "x86_64" ] && [ "$ARCHITECTURE" != "aarch64" ]; then
|
||||
note 2 " ${R}✗${Z} processeur ${ARCHITECTURE} — les versions 64 bits ne s'installeront pas."
|
||||
fi
|
||||
|
||||
echo
|
||||
case "$GRAVITE" in
|
||||
0) printf " %s%s BON POUR L'INSTALLATION %s\n" "$B$V" "✓" "$Z" ;;
|
||||
1) printf " %s%s INSTALLATION POSSIBLE, AVEC DES RÉSERVES %s\n" "$B$O" "!" "$Z" ;;
|
||||
2) printf " %s%s NE PAS INSTALLER EN L'ÉTAT %s\n" "$B$R" "✗" "$Z" ;;
|
||||
esac
|
||||
echo
|
||||
if [ -n "$TABLE_DISQUES" ]; then
|
||||
printf ' %s' "$D"
|
||||
colonne "Disque" 7; printf ' '
|
||||
colonne "Modèle" 20; printf ' '
|
||||
colonne "Type" 10; printf ' '
|
||||
colonne "Taille" 10 droite; printf ' '
|
||||
colonne "SMART" 8; printf ' '
|
||||
colonne "Marche / usure" 16; printf ' '
|
||||
printf 'Secteurs R/P/I%s\n' "$Z"
|
||||
printf '%s' "$TABLE_DISQUES" | sed "s/^/ /"
|
||||
printf " %sR : remplacés · P : illisibles en attente · I : perdus%s\n" "$D" "$Z"
|
||||
echo
|
||||
fi
|
||||
[ -n "$REMARQUES" ] && printf "%s\n" "$REMARQUES"
|
||||
|
||||
# Une pause, sans quoi tout cela défile et personne ne le lit. Sa durée
|
||||
# suit la gravité, et l'on n'attend jamais indéfiniment : le script tourne
|
||||
# aussi sans personne devant l'écran, appelé par install.sh.
|
||||
if [ -t 0 ]; then
|
||||
case "$GRAVITE" in
|
||||
2) printf " %sEn parler au propriétaire AVANT de toucher à quoi que ce soit.%s\n" "$D" "$Z"
|
||||
printf " %sEntrée pour continuer malgré tout%s " "$B" "$Z"
|
||||
read -r -t "${ALPI_PAUSE_ALERTE:-120}" _ || echo ;;
|
||||
1) printf " %sEntrée pour continuer (reprise automatique dans %ss)%s " \
|
||||
"$D" "${ALPI_PAUSE:-20}" "$Z"
|
||||
read -r -t "${ALPI_PAUSE:-20}" _ || echo ;;
|
||||
*) sleep "${ALPI_PAUSE_OK:-3}" ;;
|
||||
esac
|
||||
echo
|
||||
fi
|
||||
fi
|
||||
|
||||
# Ce que l'on vient de dire à la personne part avec la fiche.
|
||||
#
|
||||
# Sans cela, alpicache rejugeait à partir des seuls champs reçus — et ne voyait
|
||||
# pas les secteurs en attente, qui ne lui étaient pas envoyés. Il affichait
|
||||
# « sain » un disque que ce script venait de déclarer à remplacer. Deux juges,
|
||||
# deux verdicts : il n'y en a plus qu'un, et c'est celui-ci.
|
||||
VERDICT="ok"
|
||||
case "${GRAVITE:-0}" in
|
||||
2) VERDICT="alerte" ;;
|
||||
1) VERDICT="attention" ;;
|
||||
esac
|
||||
MOTIFS_JSON="["
|
||||
premier=1
|
||||
while IFS= read -r ligne; do
|
||||
[ -n "$ligne" ] || continue
|
||||
[ "$premier" = 0 ] && MOTIFS_JSON="$MOTIFS_JSON,"
|
||||
premier=0
|
||||
MOTIFS_JSON="$MOTIFS_JSON$(printf '%s' "$ligne" \
|
||||
| sed -e 's/\\/\\\\/g' -e 's/"/\\"/g' -e 's/^/"/' -e 's/$/"/')"
|
||||
done <<< "${MOTIFS:-}"
|
||||
MOTIFS_JSON="$MOTIFS_JSON]"
|
||||
RAPPORT="${RAPPORT%\}},$(champ verdict "$VERDICT"),\"motifs\":$MOTIFS_JSON}"
|
||||
|
||||
if command -v curl >/dev/null 2>&1; then
|
||||
reponse="$(printf '%s' "$RAPPORT" | curl -s --max-time 15 \
|
||||
-H 'Content-Type: application/json' --data-binary @- "$SERVEUR/fiche")"
|
||||
elif command -v wget >/dev/null 2>&1; then
|
||||
reponse="$(printf '%s' "$RAPPORT" | wget -qO- --timeout=15 \
|
||||
--header='Content-Type: application/json' --post-file=- "$SERVEUR/fiche")"
|
||||
else
|
||||
echo "Ni curl ni wget : la fiche n'a pas pu être envoyée." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -n "$reponse" ]; then
|
||||
echo "$reponse"
|
||||
else
|
||||
echo "Le serveur n'a pas répondu — la fiche n'est pas enregistrée." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
|
@ -1,39 +1,14 @@
|
|||
#!/bin/bash
|
||||
|
||||
##################################################
|
||||
# Fiche matérielle pour le serveur de l'install party
|
||||
#
|
||||
# Placée au début, et non à la fin : si un disque faiblit, autant le savoir
|
||||
# avant d'avoir passé une heure à installer dessus — c'est le moment où l'on
|
||||
# peut encore en parler à son propriétaire. Et si l'installation s'arrête en
|
||||
# route, on a tout de même la fiche.
|
||||
#
|
||||
# Le relevé est le script voisin du dépôt, lu et versionné comme celui-ci :
|
||||
# rien n'est téléchargé ni exécuté depuis le réseau. S'il n'est pas là, on
|
||||
# passe — la machine d'un particulier qui rejoue ce script chez elle ne doit
|
||||
# rien avoir à faire de tout ceci.
|
||||
#
|
||||
# C'est la seconde passe, celle que « sudo » relance, qui l'exécute :
|
||||
# dmidecode et smartctl demandent les droits d'administration.
|
||||
##################################################
|
||||
|
||||
if [ "$(id -u)" = "0" ] && [ -x "$(dirname "$0")/alpi-fiche.sh" ]; then
|
||||
"$(dirname "$0")/alpi-fiche.sh" || true
|
||||
fi
|
||||
|
||||
|
||||
# Script de post-installation pour Linux Mint 22.3
|
||||
# testé le 25/03/2026
|
||||
#
|
||||
# utilisation
|
||||
# wget https://gitea.alpinux.org/alpinux.cedrica5l/alpinux-wiki/raw/branch/main/code/linux/linux-mint/install.sh
|
||||
# wget https://gitea.alpinux.org/alpinux.cedrica5l/alpinux.site.2026/raw/branch/main/code/linux/linux-mint/install.sh
|
||||
# && chmod +x install.sh
|
||||
# && ./install.sh
|
||||
|
||||
|
||||
GREEN=$'\e[32m'
|
||||
NC=$'\e[0m'
|
||||
|
||||
abort() {
|
||||
echo ""
|
||||
echo ""
|
||||
|
|
@ -123,14 +98,7 @@ opti_journald() {
|
|||
|
||||
opti_fstab () {
|
||||
echo -e "==> Optimisation du montage des disques (noatime)\n"
|
||||
# Remplace relatime par noatime partout dans le fichier.
|
||||
#
|
||||
# ATTENTION : sans effet sur une installation Mint 22.3. Le fstab qu'écrit
|
||||
# l'installateur ne mentionne ni « relatime » ni « noatime » — il s'en remet
|
||||
# à « defaults », et relatime est le comportement par défaut du noyau. Il n'y
|
||||
# a donc rien à substituer. Vérifié le 20/09/2026 sur une installation neuve.
|
||||
# Pour poser réellement noatime, il faudrait ajouter l'option aux lignes
|
||||
# concernées plutôt que d'en remplacer une qui n'y est pas.
|
||||
# Replaces relatime with noatime everywhere in the file
|
||||
sudo sed -i 's/relatime/noatime/g' /etc/fstab
|
||||
}
|
||||
|
||||
|
|
@ -176,7 +144,6 @@ modif_systeme() {
|
|||
microcode
|
||||
opti_journald
|
||||
opti_fstab
|
||||
modif_grub
|
||||
|
||||
mises_a_jour
|
||||
|
||||
|
|
@ -249,7 +216,7 @@ install_logiciels() {
|
|||
DEBIAN_FRONTEND=noninteractive apt install -y ttf-mscorefonts-installer || abort "problème lors de l'installation des polices"
|
||||
|
||||
# mise à jour du système
|
||||
echo -e "==> Mise à jour du système\n"
|
||||
echo "==> Mise à jour du système\n"
|
||||
apt update || abort "impossible de récupérer les informations des dépôts"
|
||||
apt full-upgrade -y || abort "erreur lors de la mise à jour des paquets"
|
||||
|
||||
|
|
@ -311,7 +278,7 @@ install_logiciels() {
|
|||
# Mises à jour #
|
||||
################
|
||||
mises_a_jour() {
|
||||
echo -e "==> Configuration de dconf\n"
|
||||
echo -e "Configuraiton de dconf\n"
|
||||
# Configuration de dconf pour permettre de modifier certaines configurations
|
||||
# par défaut
|
||||
mkdir -p /etc/dconf/profile
|
||||
|
|
@ -359,32 +326,11 @@ configuration_apt() {
|
|||
# GRUB : sélection automatique de la dernière entrée utilisée #
|
||||
###############################################################
|
||||
modif_grub() {
|
||||
# Rien à faire si c'est déjà en place.
|
||||
#
|
||||
# update-grub lance os-prober, qui part sonder toutes les partitions de la
|
||||
# machine à la recherche d'autres systèmes, puis régénère la configuration
|
||||
# entière : vingt à trente secondes qu'on ne rattrape pas, et qu'on payait
|
||||
# jusqu'ici à chaque exécution, y compris quand il n'y avait rien à
|
||||
# changer. Sur une install party de quinze machines, cela se voit.
|
||||
if grep -q '^GRUB_DEFAULT=saved' /etc/default/grub \
|
||||
&& grep -q '^GRUB_SAVEDEFAULT=true' /etc/default/grub; then
|
||||
echo -e "==> GRUB est déjà configuré, rien à changer\n"
|
||||
return 0
|
||||
fi
|
||||
|
||||
echo -e "==> Modification de GRUB\n"
|
||||
# On commente la ligne d'origine, puis on ajoute les nôtres si elles
|
||||
# manquent. Les ajouter plutôt que les insérer règle deux choses : le
|
||||
# fichier ne se retrouve plus avec des lignes indentées — GRUB les accepte,
|
||||
# mais elles trompent la lecture quand on vient déboguer —, et la fonction
|
||||
# fait toujours son travail lorsque « GRUB_DEFAULT=0 » a disparu, ce qui
|
||||
# arrive dès qu'un autre outil est passé avant nous.
|
||||
sed -i 's/^GRUB_DEFAULT=0/#&/' /etc/default/grub
|
||||
grep -q '^GRUB_DEFAULT=saved' /etc/default/grub \
|
||||
|| echo 'GRUB_DEFAULT=saved' >> /etc/default/grub
|
||||
grep -q '^GRUB_SAVEDEFAULT=true' /etc/default/grub \
|
||||
|| echo 'GRUB_SAVEDEFAULT=true' >> /etc/default/grub
|
||||
|
||||
# On comment la ligne "GRUB_DEFAULT=0" et on ajoute les "bonnes" options
|
||||
sed -i '/^GRUB_DEFAULT=0/ i#GRUB_DEFAULT=0\
|
||||
GRUB_DEFAULT=saved\
|
||||
GRUB_SAVEDEFAULT=true' /etc/default/grub
|
||||
# On met à jour GRUB
|
||||
update-grub
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,236 +0,0 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# Alpinux — état des lieux d'une machine avant d'installer Linux Mint
|
||||
#
|
||||
# À lancer depuis la session live, AVANT de toucher au disque :
|
||||
# wget https://gitea.alpinux.org/alpinux.cedrica5l/alpinux-wiki/raw/branch/main/code/linux/linux-mint/verif-disque.sh
|
||||
# chmod +x verif-disque.sh
|
||||
# ./verif-disque.sh
|
||||
#
|
||||
# Ou, sur le réseau de l'install party :
|
||||
# wget http://10.0.0.1/verif-disque.sh && chmod +x verif-disque.sh && ./verif-disque.sh
|
||||
#
|
||||
# Le script ne modifie RIEN : il lit, il affiche, il conseille. Il peut s'exécuter
|
||||
# sans droits d'administration, mais plusieurs vérifications les demandent : il
|
||||
# relance alors sudo de lui-même.
|
||||
#
|
||||
# testé le 20/09/2026 sur Linux Mint 22.3 Cinnamon
|
||||
|
||||
set -u
|
||||
|
||||
VERT=$'\e[32m'; ROUGE=$'\e[31m'; ORANGE=$'\e[33m'; GRAS=$'\e[1m'; RAZ=$'\e[0m'
|
||||
|
||||
titre() { printf '\n%s%s%s\n' "$GRAS" "$1" "$RAZ"; printf '%s\n' "${1//?/─}"; }
|
||||
ok() { printf ' %s✓%s %s\n' "$VERT" "$RAZ" "$1"; }
|
||||
attention(){ printf ' %s!%s %s\n' "$ORANGE" "$RAZ" "$1"; }
|
||||
probleme(){ printf ' %s✗%s %s\n' "$ROUGE" "$RAZ" "$1"; }
|
||||
info() { printf ' %s\n' "$1"; }
|
||||
|
||||
# Les alertes collectées en chemin, résumées à la fin.
|
||||
AVERTISSEMENTS=()
|
||||
BLOQUANTS=()
|
||||
|
||||
if [ "$(id -u)" != "0" ]; then
|
||||
echo "Certaines vérifications demandent les droits d'administration."
|
||||
exec sudo -- "$0" "$@"
|
||||
fi
|
||||
|
||||
printf '%s\n' "════════════════════════════════════════════════════════════"
|
||||
printf '%s\n' " Alpinux — état des lieux avant installation"
|
||||
printf '%s\n' " $(date '+%d/%m/%Y %H:%M')"
|
||||
printf '%s\n' "════════════════════════════════════════════════════════════"
|
||||
|
||||
# ─────────────────────────────────────────────────────────────────────
|
||||
titre "La machine"
|
||||
|
||||
MODELE="$(cat /sys/devices/virtual/dmi/id/sys_vendor 2>/dev/null) $(cat /sys/devices/virtual/dmi/id/product_name 2>/dev/null)"
|
||||
info "Modèle : ${MODELE:-inconnu}"
|
||||
info "Processeur : $(grep -m1 'model name' /proc/cpuinfo | cut -d: -f2- | sed 's/^ //')"
|
||||
|
||||
if grep -qw lm /proc/cpuinfo; then
|
||||
ok "Processeur 64 bits"
|
||||
else
|
||||
probleme "Processeur 32 bits : Linux Mint ne s'installera pas"
|
||||
BLOQUANTS+=("Processeur 32 bits — voir Debian ou LMDE")
|
||||
fi
|
||||
|
||||
RAM_MO=$(( $(grep MemTotal /proc/meminfo | tr -dc '0-9') / 1024 ))
|
||||
info "Mémoire vive : ${RAM_MO} Mo"
|
||||
if [ "$RAM_MO" -lt 2000 ]; then
|
||||
probleme "Moins de 2 Go : en dessous du minimum de Linux Mint"
|
||||
BLOQUANTS+=("RAM insuffisante (${RAM_MO} Mo)")
|
||||
elif [ "$RAM_MO" -lt 4000 ]; then
|
||||
attention "Moins de 4 Go : conseillez l'édition Xfce plutôt que Cinnamon"
|
||||
AVERTISSEMENTS+=("RAM de ${RAM_MO} Mo — édition Xfce conseillée")
|
||||
else
|
||||
ok "Mémoire suffisante pour l'édition Cinnamon"
|
||||
fi
|
||||
|
||||
# ─────────────────────────────────────────────────────────────────────
|
||||
titre "Le mode de démarrage"
|
||||
|
||||
if [ -d /sys/firmware/efi ]; then
|
||||
ok "Démarrage en UEFI — le disque sera en GPT, avec une partition EFI"
|
||||
MODE=UEFI
|
||||
SB=/sys/firmware/efi/efivars/SecureBoot-8be4df61-93ca-11d2-aa0d-00e098032b8c
|
||||
if [ -r "$SB" ]; then
|
||||
if [ "$(od -An -t u1 "$SB" 2>/dev/null | awk '{print $5}')" = "1" ]; then
|
||||
attention "Secure Boot actif : à désactiver si un pilote propriétaire est nécessaire"
|
||||
AVERTISSEMENTS+=("Secure Boot actif")
|
||||
else
|
||||
ok "Secure Boot désactivé"
|
||||
fi
|
||||
fi
|
||||
else
|
||||
attention "Démarrage en BIOS hérité — le disque sera en MBR, sans partition EFI"
|
||||
MODE=BIOS
|
||||
AVERTISSEMENTS+=("Machine démarrée en mode BIOS hérité")
|
||||
fi
|
||||
|
||||
# ─────────────────────────────────────────────────────────────────────
|
||||
titre "Les disques"
|
||||
|
||||
mapfile -t DISQUES < <(lsblk -dn -o NAME,TYPE | awk '$2=="disk"{print $1}')
|
||||
NB_DISQUES=${#DISQUES[@]}
|
||||
|
||||
if [ "$NB_DISQUES" -eq 0 ]; then
|
||||
probleme "Aucun disque détecté"
|
||||
BLOQUANTS+=("Aucun disque vu par le système — contrôleur SATA en RAID/Intel RST ?")
|
||||
elif [ "$NB_DISQUES" -gt 1 ]; then
|
||||
attention "$NB_DISQUES disques présents : identifiez le bon avant de partitionner"
|
||||
AVERTISSEMENTS+=("$NB_DISQUES disques — risque d'effacer le mauvais")
|
||||
fi
|
||||
|
||||
for d in "${DISQUES[@]}"; do
|
||||
TAILLE=$(lsblk -dn -o SIZE "/dev/$d" | tr -d ' ')
|
||||
ROT=$(cat "/sys/block/$d/queue/rotational" 2>/dev/null)
|
||||
TYPE=$([ "$ROT" = "0" ] && echo "SSD/NVMe" || echo "disque mécanique")
|
||||
TABLE=$(blkid -p -s PTTYPE -o value "/dev/$d" 2>/dev/null || echo "aucune")
|
||||
printf '\n %s/dev/%s%s — %s, %s, table %s\n' "$GRAS" "$d" "$RAZ" "$TAILLE" "$TYPE" "${TABLE:-aucune}"
|
||||
lsblk -o NAME,SIZE,FSTYPE,LABEL,FSUSE%,MOUNTPOINT "/dev/$d" | sed '1d;s/^/ /'
|
||||
|
||||
TAILLE_GO=$(( $(lsblk -dbn -o SIZE "/dev/$d") / 1000000000 ))
|
||||
if [ "$TAILLE_GO" -lt 11 ]; then
|
||||
probleme " Moins de 11 Go : l'installateur refusera de démarrer"
|
||||
BLOQUANTS+=("/dev/$d trop petit (${TAILLE_GO} Go)")
|
||||
elif [ "$TAILLE_GO" -lt 30 ]; then
|
||||
attention " ${TAILLE_GO} Go : installable, mais en dessous des 30 Go conseillés"
|
||||
AVERTISSEMENTS+=("/dev/$d de ${TAILLE_GO} Go seulement")
|
||||
fi
|
||||
|
||||
if [ "$MODE" = "UEFI" ] && [ "$TABLE" = "dos" ]; then
|
||||
attention " Machine en UEFI mais disque en MBR : table à refaire en GPT"
|
||||
AVERTISSEMENTS+=("/dev/$d en MBR alors que la machine démarre en UEFI")
|
||||
fi
|
||||
done
|
||||
|
||||
# ─────────────────────────────────────────────────────────────────────
|
||||
titre "Ce qui est déjà installé"
|
||||
|
||||
TROUVE_WINDOWS=0
|
||||
TROUVE_LINUX=0
|
||||
while read -r part type; do
|
||||
[ -z "$part" ] && continue
|
||||
case "$type" in
|
||||
BitLocker)
|
||||
probleme "$part : partition chiffrée par BitLocker"
|
||||
BLOQUANTS+=("$part chiffrée BitLocker — suspendre le chiffrement depuis Windows AVANT de toucher au disque")
|
||||
TROUVE_WINDOWS=1
|
||||
;;
|
||||
ntfs)
|
||||
TROUVE_WINDOWS=1
|
||||
ETIQUETTE=$(blkid -s LABEL -o value "$part" 2>/dev/null)
|
||||
ok "$part : partition Windows (NTFS)${ETIQUETTE:+ — « $ETIQUETTE »}"
|
||||
POINT=$(mktemp -d)
|
||||
if mount -o ro,noexec,nosuid "$part" "$POINT" 2>/dev/null; then
|
||||
[ -f "$POINT/hiberfil.sys" ] && {
|
||||
attention " hiberfil.sys présent : Windows est en veille prolongée ou en démarrage rapide"
|
||||
AVERTISSEMENTS+=("$part : désactiver le démarrage rapide de Windows, puis arrêt complet")
|
||||
}
|
||||
[ -d "$POINT/Windows" ] && info " Windows installé sur cette partition"
|
||||
umount "$POINT" 2>/dev/null
|
||||
else
|
||||
attention " Montage impossible en lecture seule : partition sale, chiffrée, ou mal démontée"
|
||||
AVERTISSEMENTS+=("$part illisible — Windows mal arrêté ?")
|
||||
fi
|
||||
rmdir "$POINT" 2>/dev/null
|
||||
;;
|
||||
ext4|ext3|btrfs|xfs)
|
||||
ETIQUETTE=$(blkid -s LABEL -o value "$part" 2>/dev/null)
|
||||
ok "$part : partition Linux ($type)${ETIQUETTE:+ — « $ETIQUETTE »}"
|
||||
TROUVE_LINUX=1
|
||||
;;
|
||||
vfat)
|
||||
if [ "$(blkid -s PARTLABEL -o value "$part" 2>/dev/null)" = "EFI system partition" ] \
|
||||
|| [ "$(lsblk -no PARTTYPENAME "$part" 2>/dev/null)" = "EFI System" ]; then
|
||||
ok "$part : partition EFI existante — à réutiliser, pas à recréer"
|
||||
fi
|
||||
;;
|
||||
crypto_LUKS)
|
||||
attention "$part : partition chiffrée LUKS"
|
||||
AVERTISSEMENTS+=("$part chiffrée (LUKS) — récupérer la phrase de passe avant d'effacer")
|
||||
;;
|
||||
esac
|
||||
done < <(lsblk -pnl -o NAME,FSTYPE | awk 'NF==2 && $1 ~ /[0-9]$/')
|
||||
|
||||
[ "$TROUVE_WINDOWS" = "0" ] && info "Aucune partition Windows détectée."
|
||||
|
||||
if [ "$TROUVE_LINUX" = "1" ]; then
|
||||
attention "Un système Linux occupe déjà ce disque"
|
||||
AVERTISSEMENTS+=("Linux déjà installé — sauvegarder /home avant de réinstaller")
|
||||
fi
|
||||
|
||||
# ─────────────────────────────────────────────────────────────────────
|
||||
titre "Santé des disques"
|
||||
|
||||
if command -v smartctl >/dev/null; then
|
||||
for d in "${DISQUES[@]}"; do
|
||||
SANTE=$(smartctl -H "/dev/$d" 2>/dev/null | grep -Ei 'overall-health|SMART Health' | cut -d: -f2- | sed 's/^ *//')
|
||||
case "$SANTE" in
|
||||
*PASSED*|*OK*) ok "/dev/$d : $SANTE" ;;
|
||||
"") info "/dev/$d : pas d'information SMART (disque virtuel, USB, ou contrôleur muet)" ;;
|
||||
*) probleme "/dev/$d : $SANTE"
|
||||
BLOQUANTS+=("/dev/$d signalé défaillant par SMART — ne pas installer dessus") ;;
|
||||
esac
|
||||
REALLOC=$(smartctl -A "/dev/$d" 2>/dev/null | awk '/Reallocated_Sector_Ct/{print $10}')
|
||||
if [ -n "${REALLOC:-}" ] && [ "$REALLOC" -gt 0 ] 2>/dev/null; then
|
||||
attention "/dev/$d : $REALLOC secteurs réalloués — disque fatigué"
|
||||
AVERTISSEMENTS+=("/dev/$d : $REALLOC secteurs réalloués")
|
||||
fi
|
||||
done
|
||||
else
|
||||
info "smartmontools absent de la session live."
|
||||
info "Pour l'ajouter : sudo apt update && sudo apt install -y smartmontools"
|
||||
fi
|
||||
|
||||
# ─────────────────────────────────────────────────────────────────────
|
||||
titre "Réseau"
|
||||
|
||||
if ping -c1 -W3 archive.ubuntu.com >/dev/null 2>&1; then
|
||||
ok "Connexion à Internet fonctionnelle (mises à jour et codecs téléchargeables)"
|
||||
else
|
||||
attention "Pas d'accès à Internet : branchez le câble réseau avant d'installer"
|
||||
AVERTISSEMENTS+=("Pas de réseau — codecs et mises à jour ne s'installeront pas")
|
||||
fi
|
||||
|
||||
# ─────────────────────────────────────────────────────────────────────
|
||||
titre "Conclusion"
|
||||
|
||||
if [ ${#BLOQUANTS[@]} -gt 0 ]; then
|
||||
printf ' %s%sÀ RÉGLER AVANT D'"'"'INSTALLER%s\n' "$GRAS" "$ROUGE" "$RAZ"
|
||||
for b in "${BLOQUANTS[@]}"; do printf ' %s✗%s %s\n' "$ROUGE" "$RAZ" "$b"; done
|
||||
echo
|
||||
fi
|
||||
|
||||
if [ ${#AVERTISSEMENTS[@]} -gt 0 ]; then
|
||||
printf ' %s%sÀ SAVOIR%s\n' "$GRAS" "$ORANGE" "$RAZ"
|
||||
for a in "${AVERTISSEMENTS[@]}"; do printf ' %s!%s %s\n' "$ORANGE" "$RAZ" "$a"; done
|
||||
echo
|
||||
fi
|
||||
|
||||
if [ ${#BLOQUANTS[@]} -eq 0 ] && [ ${#AVERTISSEMENTS[@]} -eq 0 ]; then
|
||||
printf ' %s✓%s Rien ne s'"'"'oppose à l'"'"'installation.\n\n' "$VERT" "$RAZ"
|
||||
fi
|
||||
|
||||
printf ' Dans le doute, montrez cet écran à un bénévole avant de continuer.\n'
|
||||
printf ' Guide complet : https://wiki.alpinux.org/guides/linux-mint-depuis-windows/\n\n'
|
||||
|
|
@ -1,134 +0,0 @@
|
|||
---
|
||||
description: Comment Alpinux recueille les adresses e-mail, quels messages l'association envoie, combien de temps elle conserve vos données et comment exercer vos droits.
|
||||
---
|
||||
|
||||
# ✉️ Vos données, vos adresses, nos envois
|
||||
|
||||
Alpinux recueille des adresses e-mail pour faire fonctionner ses activités : vous
|
||||
inscrire à une install party, vous prévenir qu'un rendez-vous a bougé, vous envoyer
|
||||
la lettre d'information, tenir à jour la liste des adhérents. Cette page dit lesquelles, pourquoi, pour combien de temps,
|
||||
et ce que vous pouvez exiger de nous.
|
||||
|
||||
**En une phrase :** une adresse donnée à Alpinux ne sert qu'à ce pour quoi elle a été
|
||||
donnée. Nous ne la revendons pas, ne la partageons pas, et nous ne vous écrivons que
|
||||
pour ce que vous avez demandé.
|
||||
|
||||
---
|
||||
|
||||
## Où nous recueillons une adresse
|
||||
|
||||
| Occasion | Ce que nous recueillons |
|
||||
|---|---|
|
||||
| **Inscription à une install party** | Nom, adresse e-mail, téléphone (facultatif), description de la machine et de ses périphériques, et ce que vous voulez bien nous en dire |
|
||||
| **Inscription comme installateur ou installatrice** | Prénom, nom, adresse e-mail, heures de présence annoncées |
|
||||
| **Organisation d'une install party** | L'adresse e-mail des personnes à qui l'on confie l'organisation ou l'administration de l'événement |
|
||||
| **Adhésion à l'association** | Recueillie par **HelloAsso** au moment de l'adhésion ; les coordonnées des adhérents sont ensuite tenues dans **Dolibarr**, sur le serveur de l'association |
|
||||
| **Compte AlpID** | Votre identifiant, votre nom et votre adresse e-mail, conservés par notre service d'authentification |
|
||||
| **Un message que vous nous envoyez** | Ce que contient votre message, et l'adresse qui l'a envoyé |
|
||||
|
||||
Aucun de nos sites ne collecte d'adresse à votre insu : il faut toujours l'avoir
|
||||
saisie dans un formulaire, ou nous avoir écrit.
|
||||
|
||||
---
|
||||
|
||||
## Ce que nous envoyons
|
||||
|
||||
Tous nos messages automatiques viennent de l'application **Install Party**, et partent
|
||||
de l'adresse **Alpinux <alpinux@alpinux.org>**. Ce sont des messages en texte
|
||||
simple, sans image ni traceur : rien ne nous dit si vous les avez ouverts.
|
||||
|
||||
### Si vous vous êtes inscrit à une install party
|
||||
|
||||
| Message | Quand il part |
|
||||
|---|---|
|
||||
| Confirmation d'inscription | Dès l'inscription enregistrée — il porte le lieu, l'horaire et le lien vers votre fiche |
|
||||
| Lien vers votre espace | Quand vous demandez à retrouver votre inscription |
|
||||
| Votre rendez-vous passe à telle heure | Quand l'organisation déplace votre créneau |
|
||||
| Votre fiche d'installation | Le soir (19 h 30) du jour où un bénévole a noté quelque chose sur votre installation — un seul message, même s'il y a eu plusieurs notes |
|
||||
|
||||
### Si vous êtes bénévole sur une install party
|
||||
|
||||
| Message | Quand il part |
|
||||
|---|---|
|
||||
| Votre code installateur | À votre inscription comme installateur |
|
||||
| Vos heures de présence | Relance quand vos disponibilités manquent encore |
|
||||
| Les fiches d'installation sont prêtes | Quand l'organisation ouvre les fiches avant l'événement |
|
||||
| Note sur l'installation de telle heure | Quand une note est ajoutée sur une machine dont vous vous occupez |
|
||||
| Rendez-vous déplacé | Quand un créneau que vous teniez change d'heure |
|
||||
| Nouvel installateur | À l'organisation, quand quelqu'un rejoint l'équipe |
|
||||
|
||||
Chacun de ces messages répond à quelque chose que vous avez fait, ou à un changement
|
||||
qui vous concerne directement.
|
||||
|
||||
---
|
||||
|
||||
## La lettre d'information
|
||||
|
||||
C'est notre seul envoi régulier : **deux à quatre fois par mois**, un message qui
|
||||
annonce les prochains rendez-vous, les install parties, les présentations et ce qui
|
||||
occupe l'association. Il part du serveur de l'association.
|
||||
|
||||
**Qui la reçoit.** Les adhérents, et toute personne qui a demandé à la recevoir. Une
|
||||
inscription à une install party ne vous y abonne pas : il faut l'avoir demandé. Pour
|
||||
la recevoir sans être adhérent, abonnez-vous vous-même sur
|
||||
**[messagerie.alpinux.org](https://messagerie.alpinux.org)** — la marche à suivre est
|
||||
décrite dans [S'abonner et se désabonner](messagerie-abonnement.md#inscription).
|
||||
|
||||
**Comment s'en aller.** Chaque envoi porte un lien de désinscription, en pied de page
|
||||
et dans ses en-têtes. Un clic suffit, il n'y a rien à justifier, et le retrait est
|
||||
immédiat. Vous continuerez à recevoir les
|
||||
messages liés à vos inscriptions en cours — ce sont deux choses distinctes.
|
||||
|
||||
---
|
||||
|
||||
## Ce que nous n'envoyons pas
|
||||
|
||||
- **Pas de démarchage**, ni pour nous, ni pour personne d'autre.
|
||||
- **Pas de transmission à des tiers.** Vos coordonnées ne sortent pas de l'association,
|
||||
sauf obligation légale.
|
||||
- **Pas de revente.** Jamais, à personne, à aucun prix.
|
||||
|
||||
---
|
||||
|
||||
## Qui voit votre adresse
|
||||
|
||||
- **Pour une install party** : les personnes qui organisent cet événement-là, et les
|
||||
bénévoles qui s'occupent de votre machine. Pas les autres install parties.
|
||||
- **Pour une adhésion** : les membres du bureau qui tiennent le registre dans Dolibarr.
|
||||
- **Pour un compte AlpID** : nos applications (quiz, administration) voient votre
|
||||
adresse le temps de votre session ; elles ne la conservent pas dans leur base.
|
||||
|
||||
---
|
||||
|
||||
## Combien de temps nous les gardons
|
||||
|
||||
- **Les données d'une install party** sont conservées **13 mois**, puis supprimées.
|
||||
Elles servent à nos statistiques d'activité et à nos obligations d'association
|
||||
loi 1901. Vous pouvez demander à les conserver plus longtemps, par exemple pour
|
||||
qu'on retrouve l'historique de votre machine à la prochaine install party.
|
||||
- **Si vous annulez votre inscription**, tout part immédiatement : votre fiche, vos
|
||||
coordonnées, et les photos qui auraient été jointes.
|
||||
- **Les données d'adhésion** sont conservées le temps requis pour la tenue des
|
||||
comptes et du registre des membres.
|
||||
|
||||
---
|
||||
|
||||
## Vos droits
|
||||
|
||||
Vous pouvez à tout moment demander à **accéder** à vos données, à les faire
|
||||
**corriger**, ou à les faire **supprimer**.
|
||||
|
||||
- Pour vos données personnelles : **dpo@alpinux.org**
|
||||
- Pour toute autre question : **secretaire@alpinux.org**
|
||||
|
||||
Une demande de suppression est traitée dès réception. Si nous devons garder une trace
|
||||
pour une obligation légale, nous vous le disons et nous vous disons laquelle.
|
||||
|
||||
---
|
||||
|
||||
## Qui traite ces données
|
||||
|
||||
**Alpinux**, association loi 1901, Chambéry (Savoie). Les inscriptions, le registre
|
||||
des membres et les envois sont gérés par nos propres applications — Install Party et
|
||||
Dolibarr — hébergées sur le serveur de l'association. Seules les adhésions passent par
|
||||
**HelloAsso**, qui applique sa propre politique de confidentialité.
|
||||
|
|
@ -13,13 +13,6 @@ L'association propose également des **services numériques** à ses membres.
|
|||
[Gérer son adhésion](https://www.helloasso.com/associations/alpinux-le-lug-de-savoie){ .md-button }
|
||||
[Install Party](install-party.md){ .md-button }
|
||||
|
||||
## Vos données
|
||||
|
||||
Ce que nous faisons de votre adresse e-mail, ce que nous vous envoyons, et ce que
|
||||
nous ne vous enverrons jamais.
|
||||
|
||||
[Vos données, vos adresses, nos envois](donnees-personnelles.md){ .md-button }
|
||||
|
||||
## Événements
|
||||
|
||||
[Tous les événements et rendez-vous](evenements.md){ .md-button .md-button--primary }
|
||||
|
|
|
|||
|
|
@ -58,7 +58,6 @@ Lors de nos **Install Party**, les bénévoles d'**Alpinux** installent Linux av
|
|||
## 🧰 Après l'installation
|
||||
|
||||
- 🩹 [**Trousse de premiers secours Linux Mint**](../guides/linux-mint-trousse.md) — les réflexes utiles des premiers jours.
|
||||
- 🖧 [**Le serveur qu'on emporte**](../technique/serveur-install-party.md) — le réseau de la salle, le cache de paquets, et ce qu'un bénévole doit en savoir.
|
||||
- 🗣️ [**Ateliers et rencontres**](evenements.md) — pour progresser et échanger avec la communauté.
|
||||
|
||||
---
|
||||
|
|
|
|||
|
|
@ -1,113 +0,0 @@
|
|||
---
|
||||
description: Pour les bénévoles installateurs d'Alpinux : retrouver ses accès, annoncer ses heures de présence, préparer les machines et répondre aux participants.
|
||||
---
|
||||
|
||||
# 🔧 J'aide comme bénévole installateur
|
||||
|
||||
Cette page est pour l'équipe qui installe. Les autres usages du site ont
|
||||
[leur propre page](installparty-mode-emploi.md).
|
||||
|
||||
---
|
||||
|
||||
## Retrouver ses accès
|
||||
|
||||

|
||||
|
||||
[installparty.alpinux.org/party/moi](https://installparty.alpinux.org/party/moi)
|
||||
est le seul endroit où l'on saisit son adresse. Vous y recevez un lien — valable
|
||||
une demi-heure — qui ouvre tout ce que cette adresse ouvre.
|
||||
|
||||

|
||||
|
||||
On y trouve son **code installateur**, les machines dont on s'occupe, et le lien
|
||||
vers sa grille.
|
||||
|
||||
## Entrer dans son espace : deux codes
|
||||
|
||||

|
||||
|
||||
- **Le code installateur**, quatre caractères, donné par l'organisation ;
|
||||
- **un code à quatre chiffres**, que vous choisissez.
|
||||
|
||||
Le premier se dicte au téléphone, donc il se devine ; le second le protège.
|
||||
|
||||
### À votre première venue
|
||||
|
||||
Saisissez votre code installateur et laissez le second champ vide : un lien part
|
||||
vers votre boîte et vous fait choisir vos quatre chiffres.
|
||||
|
||||

|
||||
|
||||
Le lien vaut une demi-heure. Oublié votre code ? Demandez-en un autre depuis la
|
||||
page de connexion — le nouveau remplace l'ancien.
|
||||
|
||||
!!! tip "Faites-le avant le jour J"
|
||||
Le choix du code passe par votre boîte aux lettres. Le faire tranquillement
|
||||
chez soi vaut mieux que de s'y prendre en salle, un samedi matin.
|
||||
|
||||
## Annoncer ses heures
|
||||
|
||||

|
||||
|
||||
!!! warning "Vos heures ouvrent les places"
|
||||
Le nombre de créneaux proposés au public **se calcule à partir des heures
|
||||
annoncées**. Une grille vide n'ouvre aucune place : ce n'est pas une
|
||||
formalité, c'est ce qui décide du nombre de personnes qu'on pourra recevoir.
|
||||
|
||||
Cochez les heures où vous serez là. L'enregistrement est automatique, et vous
|
||||
pouvez y revenir autant de fois que votre journée change — l'organisation le
|
||||
voit aussitôt.
|
||||
|
||||
Le tableau **« Où en est la journée ? »** montre, heure par heure, combien
|
||||
d'installateurs sont annoncés, combien seront occupés et combien restent
|
||||
disponibles. Une colonne dégarnie se comble en cochant une heure de plus.
|
||||
|
||||
## Préparer les installations
|
||||
|
||||
Sous les rendez-vous du jour, vous voyez qui vient, avec quelle machine et ce que
|
||||
la personne a signalé — **sans ses coordonnées** : s'il faut joindre quelqu'un,
|
||||
c'est l'organisation qui s'en charge.
|
||||
|
||||
Vous pouvez :
|
||||
|
||||
- **écrire ce qu'il y a à prévoir** dans la note « À prévoir avant
|
||||
l'installation » : un dongle, un pilote, un point à vérifier ;
|
||||
- **vous charger d'une machine**, pour que l'équipe sache qui s'en occupe. Votre
|
||||
nom s'affiche alors à côté du rendez-vous ;
|
||||
- **répondre** aux questions du participant, et joindre un document ou une photo.
|
||||
|
||||
!!! danger "La personne inscrite lit cette note"
|
||||
« À prévoir avant l'installation » s'affiche sur sa fiche, sous le titre
|
||||
« Informations importantes », et un message l'avertit le soir même.
|
||||
Écrivez-la comme si elle la lisait, parce qu'elle la lira.
|
||||
|
||||
Les versions précédentes de la note restent consultables, avec leur auteur : on
|
||||
peut voir ce qui a été modifié, et reprendre une version antérieure si besoin.
|
||||
|
||||
## Le jour de l'install party
|
||||
|
||||
La **fiche d'installation** — les points à cocher — s'ouvre le jour même. D'ici
|
||||
là, il n'y a rien à y noter.
|
||||
|
||||
Pour l'ouvrir, deux chemins : depuis votre espace si vous vous êtes déjà chargé
|
||||
de la machine, ou en donnant le **numéro de réservation** que la personne annonce
|
||||
à l'accueil.
|
||||
|
||||
---
|
||||
|
||||
## Questions courantes
|
||||
|
||||
??? question "Je me suis inscrit par un lien, et je ne vois aucun rendez-vous"
|
||||
Votre inscription attend d'être confirmée par l'équipe. En attendant, vous
|
||||
pouvez cocher vos heures — c'est même le plus utile. Vous recevrez un message
|
||||
quand ce sera fait.
|
||||
|
||||
??? question "Je me suis trompé plusieurs fois de code"
|
||||
Au bout de quelques essais, l'accès se ferme quelques minutes. Cela ne
|
||||
concerne que vous : vos collègues, même sur le même réseau, ne sont pas
|
||||
gênés.
|
||||
|
||||
??? question "Puis-je laisser une machine à quelqu'un d'autre ?"
|
||||
Oui, tant que vous n'avez rien écrit sur sa fiche : le bouton « Je ne m'en
|
||||
occupe plus » la rend disponible. Une fois que vous y avez noté quelque
|
||||
chose, votre nom y reste — une fiche doit pouvoir dire qui l'a remplie.
|
||||
|
|
@ -1,47 +0,0 @@
|
|||
---
|
||||
description: Le mode d'emploi du site des install parties d'Alpinux, selon que vous venez faire installer Linux, que vous aidez comme bénévole ou que vous organisez la journée.
|
||||
---
|
||||
|
||||
# 🐧 Le site des install parties
|
||||
|
||||
Les install parties d'<span class="alpinux-brand">A<strong>l</strong>p<strong>inux</strong></span>
|
||||
se tiennent avec un outil à nous : **[installparty.alpinux.org](https://installparty.alpinux.org)**.
|
||||
On y réserve son créneau, on y suit ce qui a été fait sur sa machine, et les
|
||||
bénévoles y préparent leur journée.
|
||||
|
||||
!!! info "Pas de compte, pas de mot de passe"
|
||||
Il n'y a rien à créer et rien à retenir. Tout passe par des liens reçus par
|
||||
courriel et, pour les bénévoles, par un code personnel. Une adresse donnée
|
||||
ici ne sert qu'à l'install party.
|
||||
|
||||
---
|
||||
|
||||
## Trois façons d'utiliser le site
|
||||
|
||||
### 💻 [Je viens faire installer Linux](installparty-participant.md)
|
||||
|
||||
Choisir son créneau, s'inscrire, et suivre la fiche de sa machine avant, pendant
|
||||
et après l'install party. Vous pouvez aussi y écrire aux bénévoles.
|
||||
|
||||
### 🔧 [J'aide comme bénévole installateur](installparty-benevole.md)
|
||||
|
||||
Retrouver ses accès, annoncer ses heures de présence — ce sont elles qui ouvrent
|
||||
les places —, préparer les machines qu'on prendra et répondre aux questions.
|
||||
|
||||
### 📋 [J'organise une install party](installparty-organisateur.md)
|
||||
|
||||
Tenir la journée : horaires, places, équipe, fiches. Et ce qu'il faut savoir sur
|
||||
les liens d'accès, qui valent mot de passe.
|
||||
|
||||
---
|
||||
|
||||
## Où trouver quoi
|
||||
|
||||
| Vous cherchez | Adresse |
|
||||
|---|---|
|
||||
| La prochaine install party, et s'y inscrire | [installparty.alpinux.org](https://installparty.alpinux.org) |
|
||||
| Vos accès : code installateur, liens, inscriptions | [/party/moi](https://installparty.alpinux.org/party/moi) |
|
||||
| La fiche de votre machine | le lien personnel reçu à l'inscription |
|
||||
|
||||
Une question à laquelle ces pages ne répondent pas ? Écrivez-nous — l'adresse
|
||||
figure au bas des messages que vous recevez.
|
||||
|
|
@ -1,107 +0,0 @@
|
|||
---
|
||||
description: Pour les organisateurs d'une install party Alpinux : tenir la journée, gérer l'équipe et les créneaux, et les règles à connaître sur les liens d'accès.
|
||||
---
|
||||
|
||||
# 📋 J'organise une install party
|
||||
|
||||
Cette page est pour qui tient une install party de bout en bout. Les autres
|
||||
usages du site ont [leur propre page](installparty-mode-emploi.md).
|
||||
|
||||
---
|
||||
|
||||
## L'espace d'organisation
|
||||
|
||||

|
||||
|
||||
Tout s'y tient : les horaires et leurs places, l'équipe et ses heures, les
|
||||
inscrits et leurs fiches, la check-list.
|
||||
|
||||
!!! danger "Le lien vaut mot de passe"
|
||||
L'adresse de cette page contient une clé. Quiconque l'a peut voir les
|
||||
inscrits, les modifier et les supprimer.
|
||||
|
||||
- Ne la publiez **jamais** : ni sur une affiche, ni dans un code QR, ni dans
|
||||
un message à plusieurs. Voir
|
||||
[Liens et codes QR](../communication/liens-et-codes-qr.md).
|
||||
- Elle **cesse de valoir trente minutes** après votre dernière action. On en
|
||||
redemande une depuis [/party/moi](https://installparty.alpinux.org/party/moi),
|
||||
ce qui remplace l'ancienne.
|
||||
|
||||
## Les places se calculent
|
||||
|
||||
Le nombre de places d'un créneau n'est pas saisi : il se **déduit** des
|
||||
installateurs annoncés présents pendant toute la durée d'une installation,
|
||||
pondérés par la charge que vous fixez.
|
||||
|
||||
- Huit installateurs présents, charge à 90 % : sept places.
|
||||
- Baisser la charge garde de la marge — le temps d'accueillir, de dépanner un
|
||||
voisin, de souffler.
|
||||
- Vous pouvez ajouter ou retirer une place à la main ; l'écart est conservé même
|
||||
si l'équipe change.
|
||||
|
||||
Une conséquence : **relancer les installateurs qui n'ont pas coché leurs heures
|
||||
ouvre des places**. Le bouton est sur la page, à côté de ceux qui manquent.
|
||||
|
||||
## L'équipe
|
||||
|
||||
Deux façons d'entrer dans l'équipe :
|
||||
|
||||
- **vous ajoutez quelqu'un** : il reçoit son code, et voit tout aussitôt ;
|
||||
- **quelqu'un s'inscrit** par le lien d'inscription des installateurs : il
|
||||
attend votre confirmation avant de voir les rendez-vous, et ses heures
|
||||
n'ouvrent pas de place d'ici là. La page le signale par « inscrit lui-même ·
|
||||
à confirmer ».
|
||||
|
||||
Cette différence est voulue : le lien d'inscription circule sur les listes de
|
||||
diffusion, et s'inscrire ne doit pas suffire à voir chez qui l'on va installer.
|
||||
|
||||
## Les coordonnées ne s'affichent pas
|
||||
|
||||
L'adresse et le téléphone de chaque inscrit sont masqués. Un bouton les demande,
|
||||
et **chaque demande est inscrite au journal**.
|
||||
|
||||

|
||||
|
||||
La page **Historique** montre, pour votre install party : quand, quoi, sur qui,
|
||||
depuis quelle adresse et avec quel navigateur. Elle sert à une chose — savoir ce
|
||||
qui a été consulté si un accès venait à fuiter.
|
||||
|
||||
Les adresses IP s'effacent d'elles-mêmes au bout de six mois.
|
||||
|
||||
## Avant la journée
|
||||
|
||||
- **Composer la check-list** que suivront les installateurs : un modèle existe,
|
||||
à adapter.
|
||||
- **Annoncer que les fiches sont prêtes** : un bouton prévient toute l'équipe
|
||||
qu'elle peut préparer les machines.
|
||||
- **Écrire ce qu'il y a à prévoir** sur les fiches que vous connaissez déjà —
|
||||
ce que la personne a dit au téléphone, par exemple.
|
||||
- **Vérifier l'écran de salle** : il affiche les rendez-vous à l'accueil, sans
|
||||
aucune coordonnée. Sa clé est distincte de la vôtre, parce qu'un écran se
|
||||
photographie.
|
||||
|
||||
## Le jour même
|
||||
|
||||
- Les participants annoncent leur **numéro de réservation** à l'accueil.
|
||||
- Un rendez-vous peut être **déplacé** d'un créneau à l'autre : la personne et
|
||||
les installateurs concernés en sont prévenus, et la fiche suit.
|
||||
- Les fiches se remplissent ; vous pouvez les relire et les corriger.
|
||||
|
||||
---
|
||||
|
||||
## Questions courantes
|
||||
|
||||
??? question "J'ai perdu le lien de mon install party"
|
||||
[/party/moi](https://installparty.alpinux.org/party/moi), avec l'adresse
|
||||
enregistrée pour cette install party. Si personne ne l'a plus, écrivez à
|
||||
l'association.
|
||||
|
||||
??? question "Une clé a été publiée par erreur"
|
||||
Renouvelez-la immédiatement en redemandant votre lien, puis regardez
|
||||
l'Historique pour savoir ce qui a été consulté. La marche à suivre complète
|
||||
est dans [Liens et codes QR](../communication/liens-et-codes-qr.md).
|
||||
|
||||
??? question "Comment ouvrir une nouvelle install party ?"
|
||||
Votre adresse doit y être autorisée. Depuis
|
||||
[/party/moi](https://installparty.alpinux.org/party/moi), un bouton
|
||||
« Ouvrir une install party » apparaît si c'est le cas.
|
||||
|
|
@ -1,130 +0,0 @@
|
|||
---
|
||||
description: S'inscrire à une install party Alpinux, comprendre ce qu'on vous demande, et suivre la fiche de votre machine avant, pendant et après la journée.
|
||||
---
|
||||
|
||||
# 💻 Je viens faire installer Linux
|
||||
|
||||
Cette page suit votre parcours, de l'inscription au compte rendu de
|
||||
l'installation. Les autres usages du site ont
|
||||
[leur propre page](installparty-mode-emploi.md).
|
||||
|
||||
---
|
||||
|
||||
## 1. Choisir son créneau
|
||||
|
||||
Depuis [installparty.alpinux.org](https://installparty.alpinux.org), vous arrivez
|
||||
sur la liste des install parties à venir.
|
||||
|
||||

|
||||
|
||||
Chaque carte indique la date, le lieu et s'il reste de la place. Un clic sur
|
||||
**S'inscrire** ouvre le formulaire.
|
||||
|
||||
## 2. S'inscrire
|
||||
|
||||

|
||||
|
||||
Ce qu'on vous demande, et pourquoi :
|
||||
|
||||
| Ce qu'on demande | À quoi cela sert |
|
||||
|---|---|
|
||||
| Votre nom | vous accueillir, et retrouver votre machine dans la journée |
|
||||
| Votre adresse électronique | vous envoyer votre confirmation et le suivi |
|
||||
| Votre téléphone | vous joindre le jour même si besoin — facultatif |
|
||||
| La machine et son âge | préparer ce qu'il faut : une clé, un pilote, un adaptateur |
|
||||
| Ce que vous signalez | tout ce que vous jugez utile : un bruit, une lenteur, un doute |
|
||||
| L'heure de passage | les créneaux restants s'affichent seuls |
|
||||
|
||||
Deux cases sont à cocher : **vos sauvegardes sont faites** et vous avez lu la
|
||||
décharge.
|
||||
|
||||
!!! danger "Les sauvegardes ne sont pas une formalité"
|
||||
Une installation efface le disque. Copiez vos documents, vos photos et vos
|
||||
mots de passe sur un disque externe ou une clé **avant** de venir. Les
|
||||
bénévoles vous aideront volontiers à le faire, mais cela prend du temps —
|
||||
autant arriver prêt.
|
||||
|
||||
## 3. Après l'inscription
|
||||
|
||||
Vous recevez un courriel avec :
|
||||
|
||||
- **votre numéro de réservation**, à annoncer à l'accueil le jour J ;
|
||||
- **un lien personnel** vers la fiche de votre machine. Gardez-le : c'est par
|
||||
lui qu'on la retrouve, pendant **douze mois après l'install party**.
|
||||
|
||||
## 4. Suivre la fiche de sa machine
|
||||
|
||||

|
||||
|
||||
Cette page vit avant, pendant et après l'install party.
|
||||
|
||||
Pour l'ouvrir, cliquez sur votre lien : la page vous propose de vous envoyer
|
||||
une clé, et un message arrive aussitôt.
|
||||
|
||||
**Avant**, les bénévoles y notent ce qu'il faudra prévoir pour votre machine —
|
||||
sous « Informations importantes ». Lisez-le : on vous y demande parfois
|
||||
d'apporter un câble, de retrouver un mot de passe ou de préciser un détail.
|
||||
|
||||
**Pendant**, elle se remplit au fur et à mesure : ce qui a été vérifié, ce qui a
|
||||
été installé, ce qui reste à faire.
|
||||
|
||||
**Après**, elle reste consultable pendant douze mois. C'est le compte rendu de
|
||||
ce qui a été fait sur votre machine : si vous y tenez, imprimez-la ou
|
||||
enregistrez-la avant la fin de ce délai.
|
||||
|
||||
Un message vous prévient le soir quand quelque chose a changé.
|
||||
|
||||
## 5. Écrire aux bénévoles
|
||||
|
||||
Le bloc **« Répondre »**, en bas de votre fiche, envoie votre message aux
|
||||
bénévoles qui préparent votre passage : un doute sur ce qu'on vous demande
|
||||
d'apporter, une machine de plus, un empêchement.
|
||||
|
||||
Vous pouvez y joindre une **photo ou une capture d'écran** — un message d'erreur
|
||||
se montre mieux qu'il ne se décrit.
|
||||
|
||||
!!! info "Une clé vous est envoyée à chaque visite"
|
||||
Votre lien dit **quelle** fiche vous demandez ; il ne l'ouvre pas. Nous
|
||||
envoyons une clé à l'adresse de votre inscription : elle ouvre la fiche pour
|
||||
une demi-heure, le temps de la lire et de répondre. Tant que vous y êtes,
|
||||
rien ne vous est redemandé.
|
||||
|
||||
Pourquoi : un lien qu'on garde finit par traîner — dans une archive, une
|
||||
boîte partagée, un téléphone changé. Ce qu'on a noté sur votre machine ne
|
||||
regarde que vous.
|
||||
|
||||
!!! warning "Ne répondez pas au courriel"
|
||||
Les messages que le site vous envoie partent d'une adresse automatique.
|
||||
Une réponse n'atteindrait pas les bénévoles et se perdrait : utilisez le bloc
|
||||
« Répondre » de votre fiche.
|
||||
|
||||
---
|
||||
|
||||
## Questions courantes
|
||||
|
||||
??? question "J'ai perdu le lien de ma fiche"
|
||||
Rendez-vous sur [installparty.alpinux.org/party/moi](https://installparty.alpinux.org/party/moi),
|
||||
donnez l'adresse avec laquelle vous vous êtes inscrit, et tout ce que cette
|
||||
adresse ouvre vous est renvoyé — la fiche comprise.
|
||||
|
||||
??? question "Ma clé ne fonctionne plus"
|
||||
Une clé reçue par courriel vaut une demi-heure — comme toutes celles que
|
||||
nous envoyons. Redemandez-en une depuis votre lien : elle repart aussitôt.
|
||||
|
||||
??? question "Mon lien ne fonctionne plus"
|
||||
Les fiches se ferment douze mois après l'install party. Passé ce délai, le
|
||||
lien ne mène plus à rien : ce qui a été fait sur votre machine ne nous
|
||||
regarde plus, et nous n'avons pas de raison de le garder consultable
|
||||
indéfiniment.
|
||||
|
||||
??? question "Je ne peux plus venir"
|
||||
Dites-le nous : votre place sera rendue à quelqu'un d'autre, et vos
|
||||
informations effacées si vous le souhaitez. L'adresse figure au bas des
|
||||
messages que vous avez reçus.
|
||||
|
||||
??? question "Qui voit mes coordonnées ?"
|
||||
L'organisation, et seulement en les demandant — chaque consultation est
|
||||
inscrite au journal de l'install party. Les bénévoles installateurs, eux,
|
||||
voient votre nom, votre machine et ce que vous avez signalé, mais **ni votre
|
||||
adresse ni votre téléphone**. Voir
|
||||
[Vos données, vos adresses, nos envois](donnees-personnelles.md).
|
||||
|
|
@ -1,130 +0,0 @@
|
|||
---
|
||||
description: Comment s'abonner à une liste de diffusion d'Alpinux, confirmer son adresse, se désabonner, et lire les messages déjà envoyés.
|
||||
---
|
||||
|
||||
# ✉️ S'abonner et se désabonner
|
||||
|
||||
Ce guide s'adresse à toute personne qui veut **recevoir les annonces de
|
||||
l'association**, ou cesser de les recevoir. Aucun compte n'est nécessaire.
|
||||
|
||||
**En une phrase :** vous vous abonnez et vous vous désabonnez vous-même, personne ne
|
||||
peut le faire à votre place, et rien ne part vers une adresse qui ne l'a pas
|
||||
demandé.
|
||||
|
||||
---
|
||||
|
||||
## S'abonner { #inscription }
|
||||
|
||||
Rendez-vous sur la page d'accueil de la messagerie de l'association.
|
||||
|
||||

|
||||
|
||||
Indiquez votre adresse de courriel, choisissez la liste qui vous intéresse, puis
|
||||
**Continuer**.
|
||||
|
||||
L'écran suivant affiche un **code** — de la forme `ALPX-7K3M9Q` — et vous demande de
|
||||
faire une chose, une seule :
|
||||
|
||||
!!! tip "Envoyez-nous un message depuis l'adresse que vous venez de saisir"
|
||||
Destinataire : **messagerie@alpinux.org**
|
||||
Objet : **le code affiché**, recopié tel quel
|
||||
Corps du message : ce que vous voulez, il n'est pas lu
|
||||
|
||||

|
||||
|
||||
Un bouton **Ouvrir mon logiciel de messagerie** prépare le message pour vous. Il ne
|
||||
l'envoie pas : c'est à vous de le faire.
|
||||
|
||||
Vous avez **trente minutes**. Passé ce délai, le code ne vaut plus rien et la demande
|
||||
s'efface d'elle-même — sans aucune conséquence, vous pouvez recommencer.
|
||||
|
||||
Dans la minute qui suit votre envoi, vous recevez une réponse qui confirme
|
||||
l'inscription, rappelle la liste, et porte déjà le lien pour partir.
|
||||
|
||||

|
||||
|
||||
### Pourquoi est-ce à moi d'écrire ?
|
||||
|
||||
D'habitude, un site vous envoie un courriel de confirmation. Ici, c'est l'inverse.
|
||||
Trois raisons.
|
||||
|
||||
- **Rien ne part vers une adresse non vérifiée.** Écrire à des adresses non
|
||||
confirmées est ce qui abîme le plus la réputation d'un expéditeur — et quand elle
|
||||
est abîmée, ce sont les messages de toute l'association qui finissent en
|
||||
indésirable, chez tout le monde.
|
||||
- **Inscrire l'adresse de quelqu'un d'autre ne lui envoie rien.** La demande reste en
|
||||
attente puis s'efface. Personne ne peut vous abonner à votre insu, ni se servir de
|
||||
ce formulaire pour vous faire parvenir un message.
|
||||
- **Un message venu de votre boîte prouve mieux que vous la possédez** qu'un clic sur
|
||||
un lien : certains antivirus d'entreprise cliquent les liens tout seuls.
|
||||
|
||||
La contrepartie, c'est une manipulation à faire. Elle est assumée.
|
||||
|
||||
### Je me suis déjà abonné, ou désabonné, par le passé
|
||||
|
||||
Le parcours est le même. C'est d'ailleurs **le seul moyen de revenir** : l'association
|
||||
ne réinscrit jamais personne de sa propre initiative.
|
||||
|
||||
### Je n'ai pas reçu la confirmation
|
||||
|
||||
Trois choses à vérifier, dans cet ordre :
|
||||
|
||||
1. **Avez-vous écrit depuis l'adresse que vous aviez saisie ?** Le code ne vaut que
|
||||
présenté depuis celle-ci. Un message envoyé depuis une autre boîte est refusé.
|
||||
2. **Les trente minutes sont-elles passées ?** Recommencez, c'est sans conséquence.
|
||||
3. **Le code était-il bien dans l'objet ?** Il est aussi reconnu dans le corps du
|
||||
message, mais l'objet est le plus sûr.
|
||||
|
||||
---
|
||||
|
||||
## Se désabonner { #desabonnement }
|
||||
|
||||
**Chaque message reçu porte un lien de désabonnement**, à deux endroits : en pied de
|
||||
page, et dans les en-têtes techniques du message.
|
||||
|
||||
C'est ce second emplacement qui fait apparaître un bouton **Se désabonner** en haut
|
||||
du message dans les logiciels modernes — Gmail, Outlook, Thunderbird, Apple Mail. Un
|
||||
clic suffit.
|
||||
|
||||

|
||||
|
||||
La page qui s'ouvre vous laisse choisir :
|
||||
|
||||
- quitter **cette liste seulement** ;
|
||||
- ou quitter **toutes les listes** de l'association d'un coup.
|
||||
|
||||

|
||||
|
||||
Aucune justification n'est demandée. Le retrait est immédiat, et il n'y a personne à
|
||||
qui écrire.
|
||||
|
||||
!!! note "Vous n'avez plus aucun message sous la main ?"
|
||||
Reprenez simplement le parcours d'inscription : il vous renverra un message, qui
|
||||
portera le lien.
|
||||
|
||||
---
|
||||
|
||||
## Lire ce qui a déjà été envoyé { #archives }
|
||||
|
||||
Les listes ouvertes au public ont des **archives** consultables sans compte. C'est
|
||||
utile avant de s'abonner, pour voir à quoi on s'engage.
|
||||
|
||||

|
||||
|
||||
Seuls y figurent les messages **réellement envoyés** : ni les brouillons, ni les
|
||||
envois annulés.
|
||||
|
||||
!!! info "Aucune adresse de courriel n'apparaît dans les archives"
|
||||
Les adresses citées dans le corps d'un message — signature, contact d'un
|
||||
événement, adresse d'un partenaire — y sont masquées : `s****@a****.xxx`. On voit
|
||||
qu'un contact existait, sans pouvoir le reconstituer ni même savoir chez quel
|
||||
fournisseur il est hébergé. Leurs titulaires n'ont pas consenti à une publication
|
||||
sur le web, où un robot les ramasserait pour en faire du spam.
|
||||
|
||||
---
|
||||
|
||||
## Voir aussi
|
||||
|
||||
- [Vos données, vos adresses, nos envois](donnees-personnelles.md)
|
||||
- [Écrire et recevoir des messages](messagerie-membre.md) — la messagerie entre
|
||||
membres, qui est autre chose que les listes.
|
||||
|
|
@ -1,300 +0,0 @@
|
|||
---
|
||||
description: Guide du gestionnaire de listes Alpinux — créer une liste, préparer et envoyer un message, gérer les abonnés, comprendre les adresses désactivées et surveiller la réputation d'envoi.
|
||||
---
|
||||
|
||||
# 📣 Gérer une liste de diffusion
|
||||
|
||||
Ce guide s'adresse aux personnes qui **écrivent à toute une liste** : le bureau, et
|
||||
les administrateurs de l'outil.
|
||||
|
||||
**En une phrase :** vous rédigez un brouillon, vous le mettez en file d'envoi, et un
|
||||
automate le distribue en lissant le débit pendant que vous faites autre chose.
|
||||
|
||||
!!! warning "N'envoyez plus de message en copie cachée depuis votre logiciel de messagerie"
|
||||
Les deux méthodes ne se coordonnent pas : l'outil ne saurait rien de ce qui est
|
||||
parti par l'autre chemin, ni des rebonds que cela aurait provoqués. Et c'est
|
||||
précisément ce mode d'envoi qui saturait le serveur — au-delà d'un certain
|
||||
nombre de messages par heure, il refuse les suivants et une partie de l'envoi
|
||||
est perdue sans que personne le voie.
|
||||
|
||||
---
|
||||
|
||||
## Envoyer un message à une liste { #envoyer }
|
||||
|
||||
### 1. Rédiger
|
||||
|
||||
Menu **Listes → Campagnes**, puis **Nouvelle campagne**.
|
||||
|
||||

|
||||
|
||||
Choisissez la liste destinataire, écrivez l'objet et le corps.
|
||||
|
||||
Le corps s'écrit en **Markdown** — la même syntaxe que ce wiki, voir
|
||||
[Écrire en Markdown](../contribuer/markdown.md). Un aperçu s'affiche à côté ; le
|
||||
bouton **Enregistrer et actualiser l'aperçu** le rafraîchit.
|
||||
|
||||
Trois variables sont remplacées à l'envoi, pour chaque destinataire :
|
||||
|
||||
| Variable | Remplacée par |
|
||||
|---|---|
|
||||
| `{{nom}}` | le nom de l'abonné, s'il est connu |
|
||||
| `{{email}}` | son adresse |
|
||||
| `{{desabonnement}}` | le lien de désabonnement qui lui est propre |
|
||||
|
||||
**Enregistrer le brouillon** vous permet de revenir plus tard : rien ne part tant que
|
||||
vous n'avez rien demandé.
|
||||
|
||||
!!! danger "Le lien de désabonnement n'est pas optionnel"
|
||||
Si vous ne placez pas `{{desabonnement}}` vous-même, un lien est ajouté
|
||||
automatiquement en pied de message. Ce comportement ne se désactive pas : un
|
||||
envoi de masse sans lien de désabonnement est signalé comme spam, et c'est
|
||||
ensuite toute l'association qui n'arrive plus à écrire à personne.
|
||||
|
||||
### 2. Vérifier avant d'envoyer
|
||||
|
||||
Relisez l'aperçu. C'est le dernier moment confortable : une fois la file remplie, ce
|
||||
qui est parti est parti.
|
||||
|
||||
Deux choses valent le coup d'œil :
|
||||
|
||||
- **les liens** — un lien faux dans un message envoyé à toute la liste ne se
|
||||
rattrape pas ;
|
||||
- **le nombre de destinataires**, affiché sur la fiche de la liste.
|
||||
|
||||
### 3. Envoyer
|
||||
|
||||
Bouton **Mettre en file d'envoi…**. Une confirmation vous est demandée, avec le
|
||||
nombre de destinataires.
|
||||
|
||||

|
||||
|
||||
L'envoi se fait ensuite tout seul, une minute sur l'autre, **sous un plafond horaire**
|
||||
fixé pour ne pas saturer le serveur. Une liste de quelques centaines de personnes
|
||||
part en une heure environ.
|
||||
|
||||
Vous pouvez fermer la page : l'envoi continue.
|
||||
|
||||
### 4. Suivre
|
||||
|
||||
La fiche de la campagne affiche la progression : envoyés, en attente, échecs.
|
||||
|
||||

|
||||
|
||||
Si le compteur semble figé, c'est probablement le plafond horaire : l'envoi reprend
|
||||
de lui-même à l'heure suivante.
|
||||
|
||||
### Arrêter, recommencer
|
||||
|
||||
- **Annuler les envois restants…** abandonne ce qui n'est pas encore parti. Ce qui
|
||||
est déjà distribué ne revient pas.
|
||||
- **Dupliquer en brouillon** recrée une copie modifiable d'un envoi passé — pratique
|
||||
pour une lettre dont la structure ne change pas d'un mois sur l'autre.
|
||||
- **Supprimer ce brouillon…** efface un brouillon abandonné. Une confirmation est
|
||||
demandée, et il n'y a pas de corbeille. Seul un brouillon se supprime : une
|
||||
campagne partie reste, puisque des gens l'ont reçue et qu'elle figure dans les
|
||||
archives.
|
||||
|
||||
---
|
||||
|
||||
## Créer une liste { #creer }
|
||||
|
||||
Menu **Listes → Listes de diffusion**, puis le formulaire de création.
|
||||
|
||||

|
||||
|
||||
Seuls **le nom** et **la description** sont demandés. Le reste est automatique :
|
||||
|
||||
- l'**identifiant technique** se déduit du nom ;
|
||||
- l'**expéditeur** est celui de l'association, suivi du nom de l'auteur à
|
||||
l'envoi — « Alpinux (de la part de Prénom Nom) » ;
|
||||
- les **réponses** reviennent à l'adresse d'expédition, qui est relevée.
|
||||
|
||||
Rien de cela ne se règle liste par liste : l'association écrit sous une seule
|
||||
identité. Multiplier les expéditeurs éparpille la réputation du domaine autant que
|
||||
cela désoriente les destinataires.
|
||||
|
||||
!!! note "Le nom d'une liste n'est pas modifiable après création"
|
||||
Relisez-le avant de valider.
|
||||
|
||||
---
|
||||
|
||||
## Gérer les abonnés { #abonnes }
|
||||
|
||||
Menu **Listes → Listes de diffusion**, puis la liste voulue.
|
||||
|
||||

|
||||
|
||||
Quatre compteurs résument l'état : destinataires joignables, inscrits au total,
|
||||
désabonnés, adresses mortes.
|
||||
|
||||
### Les adresses sont masquées
|
||||
|
||||
Elles s'affichent sous la forme `c••••••e@exemple.fr`. Le domaine reste lisible — il
|
||||
suffit au diagnostic — sans étaler à l'écran un carnet d'adresses exploitable.
|
||||
|
||||
Un lien **Afficher les adresses en clair** lève le masque quand c'est nécessaire.
|
||||
|
||||
### Ajouter des abonnés
|
||||
|
||||
Deux moyens, dans le volet **Ajouter des abonnés** :
|
||||
|
||||
- **coller une liste d'adresses**, une par ligne. Les formes `nom@exemple.fr`,
|
||||
`nom@exemple.fr;Prénom Nom` et `Prénom Nom <nom@exemple.fr>` sont acceptées ;
|
||||
- **importer depuis Dolibarr** les adhérents à jour de cotisation.
|
||||
|
||||
!!! danger "Un import ne réactive jamais une adresse partie"
|
||||
Désabonnée, morte, ou ayant signalé un spam : l'outil refuse de la remettre en
|
||||
service, même si elle figure dans le fichier importé. Seule la personne
|
||||
concernée peut revenir, par le parcours d'inscription.
|
||||
|
||||
Réinscrire quelqu'un qui est parti est le meilleur moyen de se faire signaler
|
||||
comme spam — et cette fois définitivement.
|
||||
|
||||
---
|
||||
|
||||
## Ouvrir une liste au public { #publique }
|
||||
|
||||
*Réservé aux administrateurs.*
|
||||
|
||||
Sur la fiche de la liste, cochez **Liste publique** et enregistrez.
|
||||
|
||||

|
||||
|
||||
Trois conséquences, à peser avant de cocher :
|
||||
|
||||
- n'importe qui peut **demander à s'abonner** depuis la page d'accueil ;
|
||||
- les envois passés deviennent **lisibles publiquement** dans les archives ;
|
||||
- le **nom et la description** de la liste sont visibles de tout visiteur.
|
||||
|
||||
Ce dernier point n'est pas anodin pour une liste interne. Le geste est enregistré
|
||||
dans le journal de l'outil.
|
||||
|
||||
### Les demandes en attente
|
||||
|
||||
Quand une liste est publique, la fiche affiche les **demandes d'inscription en
|
||||
attente de confirmation**, avec leur heure d'expiration.
|
||||
|
||||

|
||||
|
||||
Ces adresses **ne sont pas inscrites** et ne le seront que si leurs titulaires
|
||||
confirment depuis leur propre boîte. Il n'y a rien à faire : celles qui restent
|
||||
s'effacent seules.
|
||||
|
||||
---
|
||||
|
||||
## Les adresses désactivées { #desactivees }
|
||||
|
||||
Menu **Listes → Adresses désactivées**.
|
||||
|
||||
L'écran comporte deux tableaux, et la différence entre les deux est importante.
|
||||
|
||||
### Rejets définitifs et plaintes
|
||||
|
||||
Ces adresses ont été retirées de **toutes** les listes : le serveur d'en face a
|
||||
répondu que la boîte n'existait pas, ou la personne nous a signalés comme spam.
|
||||
|
||||

|
||||
|
||||
La colonne de droite affiche **le texte exact du refus**, extrait du rapport reçu —
|
||||
« utilisateur inconnu », « boîte pleine », le nom d'une liste noire. Le rapport
|
||||
complet est dépliable si vous voulez tout lire.
|
||||
|
||||
Continuer à écrire à ces adresses abîmerait la réputation du serveur pour tous les
|
||||
autres envois. C'est pourquoi l'outil les écarte sans demander.
|
||||
|
||||
### Blocages d'opérateur
|
||||
|
||||
**Ces adresses-là sont conservées**, et c'est délibéré.
|
||||
|
||||
Le message a été refusé non pas parce que la boîte a disparu, mais parce qu'un
|
||||
opérateur refuse *notre* serveur — un grand fournisseur de messagerie qui nous a mis
|
||||
sur une liste d'attente, ou un serveur qui interroge une liste noire.
|
||||
|
||||

|
||||
|
||||
La distinction est vitale. Une part notable des abonnés d'une association tient ses
|
||||
adresses chez deux ou trois grands fournisseurs : les traiter comme mortes parce que
|
||||
l'un d'eux nous bloque un jour ferait perdre d'un coup une fraction de la liste, en
|
||||
silence, pour une faute qui n'est pas la leur.
|
||||
|
||||
Quand cette section se remplit, ce n'est donc pas un problème d'abonnés mais de
|
||||
réputation d'envoi. Le délistage se demande auprès de l'opérateur concerné.
|
||||
|
||||
---
|
||||
|
||||
## Surveiller la réputation d'envoi { #postmaster }
|
||||
|
||||
*Réservé aux administrateurs.* Menu **Configuration → Postmaster**.
|
||||
|
||||
Les grands opérateurs de messagerie envoient chaque jour un rapport disant **quelles
|
||||
adresses IP ont émis du courrier au nom du domaine de l'association**, et si ces
|
||||
envois étaient correctement signés. L'outil les dépouille tout seul.
|
||||
|
||||

|
||||
|
||||
Deux lectures valent le détour :
|
||||
|
||||
- **une adresse IP inconnue dans la liste** : quelqu'un émet en notre nom. Usurpation,
|
||||
ou service de l'association qu'on avait oublié ;
|
||||
- **une adresse IP connue mais jamais alignée** : elle émet sans être autorisée par
|
||||
nos enregistrements, et ses messages tombent en indésirable chez tout le monde.
|
||||
|
||||
Le second tableau liste le courrier reçu à l'adresse *postmaster* que l'automate n'a
|
||||
pas su traiter — avis d'opérateur, signalement — et qui attend une lecture humaine.
|
||||
Le bouton **Marquer comme lu** le retire de la liste une fois traité.
|
||||
|
||||
---
|
||||
|
||||
## Attribuer les rôles { #droits }
|
||||
|
||||
*Réservé aux administrateurs.* Menu **Configuration → Droits**.
|
||||
|
||||

|
||||
|
||||
Trois rôles indépendants, cumulables :
|
||||
|
||||
| Rôle | Donne accès à |
|
||||
|---|---|
|
||||
| Rédacteur | la section **Listes** : campagnes et abonnés |
|
||||
| Administrateur | les listes publiques, les imports, **Droits** et **Postmaster** |
|
||||
| Messagerie interne | la section **Messagerie** |
|
||||
|
||||
Un administrateur ne peut pas se retirer lui-même l'administration : l'outil refuse
|
||||
de se retrouver sans personne pour le gérer. Demandez-le à un autre administrateur.
|
||||
|
||||
---
|
||||
|
||||
## Questions fréquentes
|
||||
|
||||
??? question "Mon envoi semble arrêté à mi-parcours"
|
||||
C'est le plafond horaire. L'envoi reprend de lui-même à l'heure suivante, et la
|
||||
fiche de la campagne affiche ce qui reste en attente.
|
||||
|
||||
??? question "Une adresse apparaît comme désactivée alors qu'elle fonctionne"
|
||||
Regardez dans quel tableau elle se trouve. Dans **Blocages d'opérateur**, elle
|
||||
n'est pas désactivée et il n'y a rien à faire de ce côté. Dans **Rejets
|
||||
définitifs**, lisez le texte du refus : il dit précisément ce que le serveur
|
||||
distant a répondu.
|
||||
|
||||
??? question "Quelqu'un veut revenir après s'être désabonné"
|
||||
Il doit refaire le parcours d'inscription lui-même. Ne le réinscrivez pas à la
|
||||
main : l'outil l'interdit, et pour de bonnes raisons.
|
||||
|
||||
??? question "Puis-je renvoyer exactement le même message plus tard ?"
|
||||
Oui, **Dupliquer en brouillon** sur la campagne passée. Vérifiez les dates et les
|
||||
liens avant de renvoyer : ce qui était vrai il y a un mois ne l'est plus
|
||||
forcément.
|
||||
|
||||
??? question "Comment savoir qui a ouvert le message ?"
|
||||
On ne le sait pas, et c'est voulu. Les messages ne contiennent ni image de suivi
|
||||
ni lien piégé. Ce que l'on sait, c'est ce qui a été **remis** et ce qui a
|
||||
**rebondi**.
|
||||
|
||||
---
|
||||
|
||||
## Voir aussi
|
||||
|
||||
- [S'abonner et se désabonner](messagerie-abonnement.md) — ce que voient les
|
||||
personnes à qui vous écrivez.
|
||||
- [Vos données, vos adresses, nos envois](donnees-personnelles.md)
|
||||
- [Écrire en Markdown](../contribuer/markdown.md)
|
||||
|
|
@ -1,120 +0,0 @@
|
|||
---
|
||||
description: La messagerie interne d'Alpinux — écrire à un autre membre sans connaître son adresse, lire ses messages, régler ses avis par courriel.
|
||||
---
|
||||
|
||||
# 💬 Écrire et recevoir des messages
|
||||
|
||||
Ce guide s'adresse aux **membres** de l'association qui veulent s'écrire entre eux.
|
||||
|
||||
C'est autre chose que les listes de diffusion : ici, personne ne diffuse à tout le
|
||||
monde. On écrit à une personne, et elle seule.
|
||||
|
||||
**En une phrase :** vous écrivez à quelqu'un sans connaître son adresse, et il vous
|
||||
répond sans connaître la vôtre.
|
||||
|
||||
!!! info "Il faut être connecté"
|
||||
La messagerie interne demande le **compte de l'association**, le même que pour
|
||||
le portail. Le rôle correspondant est attribué par un administrateur.
|
||||
|
||||
---
|
||||
|
||||
## Lire mes messages { #boite }
|
||||
|
||||
Menu **Messagerie → Mes messages**.
|
||||
|
||||

|
||||
|
||||
Le nombre de messages non lus apparaît à côté du mot **Messagerie** dans le menu :
|
||||
vous le voyez donc depuis n'importe quel écran, sans avoir à aller voir.
|
||||
|
||||
Un message s'ouvre d'un clic sur son objet. Il est marqué lu à ce moment-là.
|
||||
|
||||
---
|
||||
|
||||
## Écrire à quelqu'un { #ecrire }
|
||||
|
||||
Menu **Messagerie → Écrire**.
|
||||
|
||||

|
||||
|
||||
Choisissez le destinataire dans la liste proposée : c'est l'annuaire des membres.
|
||||
**Vous n'avez pas besoin de son adresse** — vous ne la verrez pas, et il ne verra pas
|
||||
la vôtre.
|
||||
|
||||
Écrivez l'objet et le message, puis envoyez.
|
||||
|
||||
### Ce que reçoit votre destinataire
|
||||
|
||||
Un **avis** par courriel, qui dit qu'un message l'attend, de la part de qui, et sur
|
||||
quel sujet. **Le texte du message n'est pas recopié dans cet avis** : il faut se
|
||||
connecter pour le lire.
|
||||
|
||||
C'est volontaire. Un avis qui recopierait le message rendrait la messagerie interne
|
||||
inutile — autant s'écrire directement.
|
||||
|
||||
---
|
||||
|
||||
## Régler mes avis par courriel { #avis }
|
||||
|
||||
Menu **Configuration → Mon profil**.
|
||||
|
||||

|
||||
|
||||
Vous y choisissez :
|
||||
|
||||
- **si** vous voulez être prévenu par courriel quand un message arrive ;
|
||||
- **à quelle adresse** ces avis doivent partir.
|
||||
|
||||
### Le résumé quotidien
|
||||
|
||||
Si des messages restent non lus, un **résumé** part une fois par jour — et seulement
|
||||
les jours où quelque chose est arrivé. Il dit qui vous a écrit et sur quels sujets.
|
||||
|
||||
Ni le corps des messages, ni les adresses des auteurs n'y figurent.
|
||||
|
||||
Il se coupe depuis le même écran que les avis.
|
||||
|
||||
---
|
||||
|
||||
## Emporter mes messages { #export }
|
||||
|
||||
Menu **Messagerie → Copie de mes messages**.
|
||||
|
||||
Vous téléchargez l'ensemble de vos messages — reçus et envoyés — dans une archive.
|
||||
Chaque message y est au format standard des courriels, lisible par n'importe quel
|
||||
logiciel de messagerie.
|
||||
|
||||
C'est ce qu'il faut utiliser pour garder une trace hors de l'outil, ou pour exercer
|
||||
votre droit d'accès à vos données.
|
||||
|
||||
---
|
||||
|
||||
## Questions fréquentes
|
||||
|
||||
??? question "Mon correspondant verra-t-il mon adresse ?"
|
||||
Non. Les messages ne circulent pas par courriel entre vous : ils restent dans
|
||||
l'outil. Seuls les **avis** partent par courriel, et chacun part vers l'adresse
|
||||
de son propre destinataire.
|
||||
|
||||
??? question "Puis-je répondre depuis mon logiciel de messagerie ?"
|
||||
Non. L'avis est une notification, pas le message. Il faut se connecter pour lire
|
||||
et répondre — c'est la contrepartie de ne pas divulguer les adresses.
|
||||
|
||||
??? question "Je ne reçois plus d'avis"
|
||||
Vérifiez d'abord **Configuration → Mon profil** : les avis y sont peut-être
|
||||
coupés. S'ils sont actifs et que rien n'arrive, c'est probablement que votre
|
||||
adresse a rebondi ; l'outil suspend alors les avis pour ne pas s'acharner.
|
||||
Signalez-le à un administrateur, qui le verra dans ses écrans.
|
||||
|
||||
??? question "Puis-je écrire à quelqu'un qui n'est pas dans l'annuaire ?"
|
||||
Non. L'annuaire ne contient que les membres à qui un rôle a été attribué. Pour
|
||||
écrire à quelqu'un d'autre, il faut son adresse et un logiciel de messagerie
|
||||
ordinaire.
|
||||
|
||||
---
|
||||
|
||||
## Voir aussi
|
||||
|
||||
- [S'abonner et se désabonner](messagerie-abonnement.md) — les listes de diffusion,
|
||||
qui sont autre chose.
|
||||
- [Vos données, vos adresses, nos envois](donnees-personnelles.md)
|
||||
|
|
@ -1,50 +0,0 @@
|
|||
---
|
||||
description: La messagerie d'Alpinux — trois guides selon que vous voulez vous abonner, écrire aux membres, ou gérer une liste de diffusion.
|
||||
---
|
||||
|
||||
# 📬 La messagerie d'Alpinux
|
||||
|
||||
La messagerie de l'association sert à deux choses qu'il ne faut pas confondre :
|
||||
|
||||
- **les listes de diffusion**, par lesquelles le bureau écrit à tout le monde ;
|
||||
- **la messagerie interne**, par laquelle les membres s'écrivent entre eux sans se
|
||||
communiquer leurs adresses.
|
||||
|
||||
Selon ce que vous voulez faire, la suite n'est pas la même.
|
||||
|
||||
---
|
||||
|
||||
## Je veux…
|
||||
|
||||
| Ce que vous voulez faire | Le guide qu'il vous faut |
|
||||
|---|---|
|
||||
| Recevoir les annonces de l'association, ou arrêter de les recevoir | [S'abonner et se désabonner](messagerie-abonnement.md) |
|
||||
| Lire ce qui a déjà été envoyé | [S'abonner et se désabonner](messagerie-abonnement.md#archives) |
|
||||
| Écrire à un autre membre, ou lire mes messages | [Écrire et recevoir des messages](messagerie-membre.md) |
|
||||
| Envoyer un message à toute une liste | [Gérer une liste de diffusion](messagerie-gestionnaire.md) |
|
||||
| Ajouter des abonnés, ouvrir une liste au public | [Gérer une liste de diffusion](messagerie-gestionnaire.md) |
|
||||
| Comprendre pourquoi une adresse ne reçoit plus rien | [Gérer une liste de diffusion](messagerie-gestionnaire.md#desactivees) |
|
||||
|
||||
---
|
||||
|
||||
## Qui peut quoi
|
||||
|
||||
L'accès aux écrans dépend d'un rôle, attribué par un administrateur dans
|
||||
**Configuration → Droits**.
|
||||
|
||||
| Vous êtes… | Vous voyez… |
|
||||
|---|---|
|
||||
| Une personne sans compte | l'inscription et les archives des listes publiques |
|
||||
| Membre | la section **Messagerie** |
|
||||
| Rédacteur | la section **Listes** |
|
||||
| Administrateur | tout, plus **Configuration → Droits** et **Configuration → Postmaster** |
|
||||
|
||||
Une même personne peut cumuler les trois.
|
||||
|
||||
---
|
||||
|
||||
## Voir aussi
|
||||
|
||||
- [Vos données, vos adresses, nos envois](donnees-personnelles.md) — ce que
|
||||
l'association recueille, combien de temps elle le garde, et ce que vous pouvez
|
||||
exiger.
|
||||
|
Before Width: | Height: | Size: 82 KiB |
|
Before Width: | Height: | Size: 107 KiB |
|
Before Width: | Height: | Size: 78 KiB |
|
Before Width: | Height: | Size: 87 KiB |
|
Before Width: | Height: | Size: 131 KiB |
|
Before Width: | Height: | Size: 158 KiB |
|
Before Width: | Height: | Size: 68 KiB |
|
Before Width: | Height: | Size: 57 KiB |
|
Before Width: | Height: | Size: 330 KiB |
|
Before Width: | Height: | Size: 200 KiB |
|
Before Width: | Height: | Size: 56 KiB |
|
Before Width: | Height: | Size: 73 KiB |
|
Before Width: | Height: | Size: 88 KiB |
|
Before Width: | Height: | Size: 54 KiB |
|
Before Width: | Height: | Size: 44 KiB |
|
Before Width: | Height: | Size: 64 KiB |
|
Before Width: | Height: | Size: 104 KiB |
|
Before Width: | Height: | Size: 52 KiB |
|
Before Width: | Height: | Size: 55 KiB |
|
Before Width: | Height: | Size: 63 KiB |
|
Before Width: | Height: | Size: 92 KiB |
|
Before Width: | Height: | Size: 52 KiB |
|
Before Width: | Height: | Size: 59 KiB |
|
Before Width: | Height: | Size: 88 KiB |
|
Before Width: | Height: | Size: 88 KiB |
|
Before Width: | Height: | Size: 83 KiB |
|
Before Width: | Height: | Size: 48 KiB |
|
Before Width: | Height: | Size: 58 KiB |
|
Before Width: | Height: | Size: 65 KiB |
|
Before Width: | Height: | Size: 55 KiB |
|
|
@ -1,109 +0,0 @@
|
|||
---
|
||||
description: Quelles adresses de l'outil d'install party se publient sur une affiche, un article ou un code QR, lesquelles ne se publient jamais, et comment le vérifier avant impression.
|
||||
---
|
||||
|
||||
# 🔗 Liens et codes QR : ce qui se publie
|
||||
|
||||
Affiche, flyer, article de presse, message sur une liste de diffusion,
|
||||
publication d'une commune : dès qu'une adresse sort de l'équipe, elle est
|
||||
publique pour de bon. Une affiche s'imprime, un article se reprend, un code QR
|
||||
se scanne des semaines plus tard.
|
||||
|
||||
Cette page existe parce qu'un code QR a déjà mené à la page d'organisation d'une
|
||||
install party au lieu de la page d'inscription — et que rien ne distingue les
|
||||
deux à l'œil nu.
|
||||
|
||||
---
|
||||
|
||||
## La règle, en une phrase
|
||||
|
||||
!!! danger "À retenir"
|
||||
**Une adresse qui contient `key=` ou `jeton=` ne se publie jamais.**
|
||||
|
||||
Ces deux mots signalent une clé d'accès. Elles valent mot de passe et sont
|
||||
faites pour une seule personne.
|
||||
|
||||
---
|
||||
|
||||
## Les adresses qui se publient
|
||||
|
||||
| Pour | Adresse |
|
||||
|---|---|
|
||||
| **Le public** — affiches, articles, codes QR | `https://installparty.alpinux.org` |
|
||||
| **S'inscrire** directement à une install party | `https://installparty.alpinux.org/party/<uid>/register` |
|
||||
| Voir les **install parties à venir** | `https://installparty.alpinux.org/party/` |
|
||||
| **Retrouver ses accès** (organisateur, installateur, inscrit) | `https://installparty.alpinux.org/party/moi` |
|
||||
|
||||
Aucune ne contient de clé : ce sont les seules à faire figurer sur un support.
|
||||
|
||||
!!! tip "Sur une affiche, c'est la première qu'il faut"
|
||||
`https://installparty.alpinux.org` est courte, se retient, se lit à voix
|
||||
haute et ne vieillit pas : elle mène à la page qui annonce la prochaine
|
||||
install party et porte le bouton d'inscription. Une adresse qui contient
|
||||
l'identifiant d'une install party, elle, ne vaudra plus rien à la
|
||||
suivante — et une affiche dure plus longtemps qu'un événement.
|
||||
|
||||
## Les adresses qui ne se publient pas
|
||||
|
||||
| Ce que c'est | À quoi on la reconnaît | Ce qu'elle ouvre |
|
||||
|---|---|---|
|
||||
| Espace d'organisation | `/status/?key=…` | les inscrits et leurs coordonnées, avec de quoi les modifier |
|
||||
| Écran de salle | `/accueil?key=…` | prénoms, machines et heures de la journée |
|
||||
| Inscription des installateurs | `/benevole/inscription?key=…` | le formulaire par lequel on rejoint l'équipe |
|
||||
| Fiche d'un participant | `/fiche/…?jeton=…` | ses données et la conversation le concernant |
|
||||
|
||||
---
|
||||
|
||||
## Avant d'envoyer un support à l'impression
|
||||
|
||||
1. **Relire l'adresse en entier** — pas son début : la clé est à la fin.
|
||||
2. **Scanner soi-même le code QR** avec son téléphone et regarder où il mène.
|
||||
C'est la seule vérification qui porte sur ce qui sera réellement diffusé,
|
||||
et non sur ce qu'on croit y avoir mis.
|
||||
3. **Faire regarder par quelqu'un d'autre.** Celui qui a fabriqué le code voit
|
||||
ce qu'il voulait faire, pas ce qu'il a fait.
|
||||
4. **Demander le fichier final** à qui publie — commune, imprimeur, journal —
|
||||
et le vérifier avant parution, pas après.
|
||||
|
||||
### Décoder un code QR depuis une image
|
||||
|
||||
```sh
|
||||
zbarimg affiche.png
|
||||
```
|
||||
|
||||
La commande affiche l'adresse encodée. `sudo apt install zbar-tools` si elle
|
||||
manque.
|
||||
|
||||
### Fabriquer le bon code
|
||||
|
||||
```sh
|
||||
qrencode -o installparty.png -s 12 -m 3 "https://installparty.alpinux.org"
|
||||
```
|
||||
|
||||
En SVG pour l'impression, où le code doit rester net à toute taille :
|
||||
|
||||
```sh
|
||||
qrencode -t SVG -o installparty.svg -s 12 -m 3 "https://installparty.alpinux.org"
|
||||
```
|
||||
|
||||
`sudo apt install qrencode` si la commande manque.
|
||||
|
||||
---
|
||||
|
||||
## Si une clé a été publiée malgré tout
|
||||
|
||||
!!! warning "Agir le jour même"
|
||||
1. **Renouveler la clé.** Pour l'espace d'organisation, il suffit de
|
||||
redemander son lien depuis `/party/moi` : la clé publiée est remplacée.
|
||||
Pour l'écran de salle et l'inscription des installateurs, un bouton
|
||||
existe sur la page d'organisation.
|
||||
2. **Regarder les journaux du serveur** pour savoir qui a consulté, et
|
||||
depuis quand.
|
||||
3. **Prévenir les personnes concernées** si leurs données ont été
|
||||
exposées, et notifier la CNIL — le délai est de 72 heures à compter de
|
||||
la découverte.
|
||||
|
||||
Une clé d'organisation cesse de valoir trente minutes après la dernière action
|
||||
de son détenteur : une clé publiée ne reste donc pas utilisable indéfiniment.
|
||||
Ce n'est pas une raison d'en publier une — quelques jours d'exposition
|
||||
suffisent à ce qu'elle serve.
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
# wiki.alpinux.org
|
||||
|
||||
Documentation publique Alpinux — MkDocs Material.
|
||||
|
||||
## Déploiement
|
||||
|
||||
```bash
|
||||
cd org.alpinux.owni/wiki
|
||||
mkdocs build --strict
|
||||
rsync -rlcz --delete site/ alpinux.org:/var/www/wiki.alpinux.org/web/
|
||||
```
|
||||
|
||||
## Développement local
|
||||
|
||||
```bash
|
||||
pip install mkdocs-material
|
||||
mkdocs serve # http://localhost:8000
|
||||
```
|
||||
|
||||
## Notes
|
||||
|
||||
- Pas de service systemd — site statique servi directement par Apache
|
||||
- Les docs publiques sont dans `wiki/docs/technique/`
|
||||
|
|
@ -9,22 +9,12 @@ l'ordinateur rendu à son propriétaire. Il sert aussi bien au bénévole qui in
|
|||
personne qui veut recommencer chez elle.
|
||||
|
||||
!!! info "État du document"
|
||||
Procédure **rejouée de bout en bout le 20/09/2026 sur Linux Mint 22.3 Cinnamon**, de
|
||||
la clé USB au premier démarrage : les libellés et les captures de l'installation sont
|
||||
ceux de la 22.3. Restent d'anciennes captures pour les écrans Windows — qui n'ont pas
|
||||
changé — et pour la post-installation.
|
||||
Vérifié le **19/09/2026** par alpinux.cedrica5l, sur **Linux Mint 22.3 Cinnamon**.
|
||||
Pendant une Install Party, la checklist de suivi est le document numérique
|
||||
[installparty.alpinux.org/party/moi](https://installparty.alpinux.org/party/moi).
|
||||
Vos [remarques et suggestions](../alpinux/evenements.md) sont bienvenues pour
|
||||
l'améliorer.
|
||||
|
||||
|
||||
!!! tip "Quatre pages, quatre moments"
|
||||
- **Cette page** — l'installation elle-même, de la clé USB à l'ordinateur rendu.
|
||||
- [Régler Linux Mint après l'installation](linux-mint-parametres.md) — le premier démarrage : mises à jour, langue, pilotes.
|
||||
- [Trousse de premiers secours](linux-mint-trousse.md) — les gestes de base, en format court et imprimable.
|
||||
- [Utiliser Linux Mint](utiliser-linux-mint.md) — la vie courante : paramètres, matériel, logiciels, entretien.
|
||||
|
||||
---
|
||||
|
||||
## 1. Préparer Windows
|
||||
|
|
@ -104,6 +94,10 @@ Clic droit sur **Démarrer** → *Terminal (administrateur)*, puis :
|
|||
powercfg /hibernate off
|
||||
```
|
||||
|
||||
!!! tip "Le dernier arrêt de Windows"
|
||||
Au moment d'éteindre Windows pour insérer la clé USB, maintenez **Maj (Shift)**
|
||||
enfoncée en cliquant sur *Démarrer → Arrêter*. Cela force un arrêt complet.
|
||||
|
||||
### Gestion de l'alimentation de la carte Wi-Fi
|
||||
|
||||
Certaines cartes Wi-Fi (puces Realtek ou Broadcom notamment) restent dans l'état de basse
|
||||
|
|
@ -184,8 +178,6 @@ Linux. Il faut le basculer sur **AHCI**, dans la section *Storage*, *SATA Config
|
|||
conserver Windows, faites le changement avec un bénévole. Si Windows est de toute
|
||||
façon remplacé, la bascule est sans conséquence.
|
||||
|
||||
|
||||
|
||||
---
|
||||
|
||||
## 2. Préparer son support d'installation
|
||||
|
|
@ -244,11 +236,8 @@ Avec [Ventoy](ventoy.md), la préparation tient en un copier-coller :
|
|||
### Branchements
|
||||
|
||||
- Insérez la clé Ventoy dans un **port USB de la machine**, en évitant les hubs.
|
||||
- **Branchez un câble Ethernet.** Le script install.sh de Alpinux effectue des tests.
|
||||
|
||||
!!! tip "Le dernier arrêt de Windows - Comment arrêter Windows pour démarrer sur la clé USB"
|
||||
Au moment d'éteindre Windows pour insérer la clé USB, maintenez **Maj (Shift)**
|
||||
enfoncée en cliquant sur *Démarrer → Arrêter*. Cela force un arrêt complet.
|
||||
- **Branchez un câble Ethernet.** Mint pourra télécharger mises à jour, codecs et paquets
|
||||
de langue pendant l'installation — cela évite beaucoup de réglages ensuite.
|
||||
|
||||
### Accéder au menu de démarrage
|
||||
|
||||
|
|
@ -268,7 +257,7 @@ constructeur :
|
|||
|
||||
### Le menu Ventoy
|
||||
|
||||

|
||||

|
||||
|
||||
Sur l'écran de Ventoy, sélectionnez l'ISO de Linux Mint avec les flèches, **Entrée**, puis
|
||||
**Boot in normal mode**.
|
||||
|
|
@ -281,11 +270,10 @@ machines d'avant 2012.
|
|||
|
||||

|
||||
|
||||
Un second menu apparaît, le GRUB de Mint : choisissez
|
||||
**Start Linux Mint 22.3 Cinnamon 64-bit**. Le
|
||||
Un second menu apparaît, le GRUB de Mint : choisissez **Start Linux Mint (64-bit)**. Le
|
||||
logo « LM » s'affiche en blanc sur fond vert, puis le bureau.
|
||||
|
||||

|
||||

|
||||
|
||||
Une notification confirme la connexion : *« Vous êtes maintenant connecté au réseau filaire
|
||||
1 »*. Vous êtes dans une session **live**, qui tourne entièrement en mémoire vive :
|
||||
|
|
@ -332,123 +320,29 @@ Si un élément important — le Wi-Fi par exemple — ne fonctionne pas du tout
|
|||
demandez l'aide d'un bénévole avant de lancer l'installation. Dans la grande majorité des
|
||||
cas il s'agit d'un pilote propriétaire à activer, mais mieux vaut le savoir maintenant.
|
||||
|
||||
### Faire l'état des lieux du disque
|
||||
|
||||
**C'est l'étape qu'on oublie, et c'est celle qui coûte le plus cher.** Avant de toucher au
|
||||
partitionnement, il faut savoir ce qu'il y a dans la machine : un seul disque ou deux, un
|
||||
Windows chiffré par BitLocker, une partition de récupération du constructeur, un disque
|
||||
fatigué. On ne le découvre pas au milieu du partitionnement.
|
||||
|
||||
En session live, taper les commandes une à une est fastidieux. Un script d'Alpinux fait
|
||||
l'inventaire et rend un verdict :
|
||||
|
||||
**Sur le réseau de l'install party**, où les scripts sont servis par
|
||||
[le serveur qu'Alpinux emporte](../technique/serveur-install-party.md) :
|
||||
|
||||
```bash
|
||||
wget http://alpicache.lan/verif-disque.sh && chmod +x verif-disque.sh && ./verif-disque.sh
|
||||
```
|
||||
|
||||
!!! tip "Si le nom ne répond pas"
|
||||
Le serveur répond aussi à `alpicache`, `apt-proxy` et `10.0.0.1` — cette
|
||||
dernière adresse fonctionne même quand la résolution de noms n'est pas encore
|
||||
en place :
|
||||
`wget http://10.0.0.1/verif-disque.sh`
|
||||
|
||||
**Ailleurs, depuis Internet :**
|
||||
|
||||
```bash
|
||||
wget https://gitea.alpinux.org/alpinux.cedrica5l/alpinux.scripts/raw/branch/stable/poste/verif-disque.sh
|
||||
chmod +x verif-disque.sh
|
||||
./verif-disque.sh
|
||||
```
|
||||
|
||||
Il **ne modifie rien** — il lit, il affiche, il conseille. Il demande le mot de passe pour
|
||||
les vérifications qui le nécessitent, puis passe en revue :
|
||||
|
||||
- la **machine** : processeur 64 bits, mémoire vive, et l'édition à conseiller en dessous
|
||||
de 4 Go ;
|
||||
- le **mode de démarrage** réel (UEFI ou BIOS hérité) et l'état du **Secure Boot** ;
|
||||
- les **disques** : nombre, taille, SSD ou mécanique, table de partition, et l'alerte si
|
||||
la machine démarre en UEFI alors que le disque est en MBR ;
|
||||
- ce qui est **déjà installé** : Windows, Linux, partition EFI existante à réutiliser ;
|
||||
- les **pièges** : BitLocker, chiffrement LUKS, `hiberfil.sys` laissé par le démarrage
|
||||
rapide de Windows ;
|
||||
- la **santé SMART** des disques, et l'**accès à Internet**.
|
||||
|
||||
Il finit par deux listes : *à régler avant d'installer*, et *à savoir*.
|
||||
|
||||
### Relever la fiche de la machine
|
||||
|
||||
En install party, un second script complète l'état des lieux : il relève la **fiche
|
||||
matérielle** — modèle, processeur, mémoire et ses connecteurs, disques et leur santé —
|
||||
et l'envoie au serveur de l'association.
|
||||
|
||||
```bash
|
||||
wget http://alpicache.lan/alpi-fiche.sh && chmod +x alpi-fiche.sh && sudo ./alpi-fiche.sh --check
|
||||
```
|
||||
|
||||
Hors réseau de l'install party, il se prend sur Internet :
|
||||
|
||||
```bash
|
||||
wget https://gitea.alpinux.org/alpinux.cedrica5l/alpinux.scripts/raw/branch/stable/poste/alpi-fiche.sh
|
||||
```
|
||||
|
||||
Il n'aura alors aucun serveur à qui remettre la fiche : il l'affiche, et c'est tout.
|
||||
|
||||
Lancé depuis la session live, il rend en plus un verdict en trois états : **bon pour
|
||||
l'installation**, **possible avec des réserves**, ou **ne pas installer en l'état** — un
|
||||
disque qui se déclare défaillant, des secteurs réalloués, moins de 2 Go de mémoire, un
|
||||
processeur 32 bits. C'est le dernier moment où l'on peut encore renoncer et en parler au
|
||||
propriétaire.
|
||||
|
||||
Le même script, relancé après l'installation (sans `--check`), enregistre ce qui a
|
||||
finalement été installé. Les deux relevés se comparent : un disque qui allait bien le
|
||||
matin et se plaint le soir, cela se voit.
|
||||
|
||||
!!! warning "Dites-le à la personne dont vous installez la machine"
|
||||
La fiche part sur le réseau local, vers le serveur de l'association, et n'en sort
|
||||
pas. Elle ne contient ni fichiers, ni historique, ni nom d'utilisateur — mais elle
|
||||
contient le **nom de la machine**, souvent un prénom, et l'**adresse matérielle** de
|
||||
la carte réseau. C'est son ordinateur : cela se demande, cela ne se suppose pas.
|
||||
|
||||
!!! danger "BitLocker : ne touchez à rien"
|
||||
Si le script annonce une partition chiffrée par BitLocker, **arrêtez-vous là**. Le
|
||||
chiffrement doit être suspendu depuis Windows — *Paramètres → Confidentialité et
|
||||
sécurité → Chiffrement de l'appareil* — et la clé de récupération mise à l'abri.
|
||||
Redimensionner ou effacer une partition BitLocker sans cette précaution rend les
|
||||
données définitivement illisibles.
|
||||
|
||||
---
|
||||
|
||||
## 5. Installer le système
|
||||
|
||||

|
||||

|
||||
|
||||
Double-cliquez sur **Install Linux Mint**.
|
||||
|
||||

|
||||

|
||||
|
||||
**Langue** : sélectionnez **Français** dans la colonne de gauche, puis **Continuer**.
|
||||
|
||||

|
||||

|
||||
|
||||
**Disposition du clavier** : choisissez **French** dans la colonne de gauche. La colonne de
|
||||
droite liste les variantes, en anglais elles aussi : **French - French (legacy, alt.)** est
|
||||
proposée par défaut et convient à un clavier AZERTY français ordinaire. Les autres entrées
|
||||
couvrent les cas particuliers — *(BEPO, AFNOR)*, *(Dvorak)*, *(Macintosh)*, *(no dead
|
||||
keys)* pour un clavier sans touches mortes.
|
||||
**Disposition du clavier** : choisissez **Français** à gauche, et à droite **Français
|
||||
(variante)** ou **Français (variante, AltGr morte)**. Étape à ne pas bâcler — un clavier mal
|
||||
choisi se paie au premier mot de passe. Testez dans la zone de saisie en bas : le `²`, le
|
||||
`@`, les accents.
|
||||
|
||||
Étape à ne pas bâcler — un clavier mal choisi se paie au premier mot de passe. Testez dans
|
||||
le champ **« Saisissez du texte ici pour tester votre clavier »** : le `²`, le `@`, les
|
||||
accents. Le bouton **Détecter la disposition du clavier** fait deviner la disposition en
|
||||
demandant d'appuyer sur quelques touches.
|
||||

|
||||
|
||||

|
||||
|
||||
**Codecs multimédia** : cochez **Installer les codecs multimédias**, décochée par défaut.
|
||||
Ces composants, parfois propriétaires, sont indispensables pour lire du MP3, du MP4 ou les
|
||||
vidéos de nombreux sites.
|
||||
**Codecs multimédia** : cochez la case. Ces composants, parfois propriétaires, sont
|
||||
indispensables pour lire du MP3, du MP4 ou les vidéos de nombreux sites.
|
||||
|
||||
!!! info "Pourquoi ces codecs ne sont-ils pas installés d'office ?"
|
||||
Certains formats, comme le MP3 ou le H.264, sont couverts par des brevets. Linux Mint
|
||||
|
|
@ -459,13 +353,9 @@ vidéos de nombreux sites.
|
|||
|
||||
## 6. Créer les partitions
|
||||
|
||||

|
||||

|
||||
|
||||

|
||||
|
||||
À l'écran *Type d'installation*, choisissez **Autre chose** — la première option,
|
||||
*Effacer le disque et installer Linux Mint*, est sélectionnée par défaut — puis cliquez sur
|
||||
**Installer maintenant** (et non « Continuer », comme aux écrans précédents).
|
||||
À l'écran *Type d'installation*, choisissez **Autre chose**, puis **Continuer**.
|
||||
|
||||
!!! danger "Plusieurs disques ?"
|
||||
Si la fenêtre montre plusieurs disques (`sda`, `sdb`, `nvme0n1`), ne prenez aucun
|
||||
|
|
@ -474,26 +364,16 @@ vidéos de nombreux sites.
|
|||
|
||||
### Préparer le disque
|
||||
|
||||

|
||||

|
||||
|
||||
- **Disque vierge** : cliquez sur **Nouvelle table de partition…**, puis **Continuer** dans
|
||||
le message d'avertissement. L'installateur choisit seul le format adapté au mode de
|
||||
démarrage — GPT en UEFI, MBR en BIOS hérité — sans rien demander.
|
||||
- **Disque vierge** : cliquez sur **Nouvelle table de partition…** — **GPT** en UEFI,
|
||||
**MBR** en BIOS hérité.
|
||||
- **Anciennes partitions Windows** : supprimez-les une à une avec le bouton **-** pour
|
||||
obtenir un grand *espace libre*, ou repartez d'une nouvelle table de partition.
|
||||
|
||||
### Les partitions à créer
|
||||
|
||||
Cliquez sur l'espace libre, puis sur **+** pour chacune. La fenêtre **Créer une
|
||||
partition** demande la taille, le type, l'emplacement, l'usage et le point de montage :
|
||||
|
||||

|
||||
|
||||
La liste **Utiliser comme** contient tout ce dont vous aurez besoin — *système de fichiers
|
||||
journalisé ext4*, *espace d'échange (« swap »)*, *Partition système EFI*, et *Zone
|
||||
réservée pour le chargeur d'amorçage BIOS* :
|
||||
|
||||

|
||||
Cliquez sur l'espace libre, puis sur **+** pour chacune.
|
||||
|
||||
**Selon le mode de démarrage :**
|
||||
|
||||
|
|
@ -509,7 +389,7 @@ réservée pour le chargeur d'amorçage BIOS* :
|
|||
1. **Le swap** (espace d'échange) — environ 1,5 fois la mémoire vive : pour 4 ou 8 Go de
|
||||
RAM, indiquez 8000 Mo, et *Utiliser comme* → **espace d'échange (« swap »)**.
|
||||
|
||||

|
||||

|
||||
|
||||
2. **La racine `/`** — 30 à 150 Go selon le disque, *Utiliser comme* → **système de
|
||||
fichiers journalisé ext4**, point de montage `/`.
|
||||
|
|
@ -523,18 +403,16 @@ réservée pour le chargeur d'amorçage BIOS* :
|
|||
|
||||
### Lancer l'écriture
|
||||
|
||||

|
||||

|
||||
|
||||
Vérifiez que le **Périphérique où sera installé le programme de démarrage** est bien le
|
||||
disque principal (`/dev/sda`, `/dev/nvme0n1`…), puis **Installer maintenant**. Un dialogue
|
||||
récapitule alors les partitions qui seront formatées : c'est le dernier écran avant
|
||||
écriture.
|
||||
Vérifiez que le *périphérique où sera installé le chargeur d'amorçage* est bien le disque
|
||||
principal (`/dev/sda`, `/dev/nvme0n1`…), puis **Installer maintenant**.
|
||||
|
||||

|
||||
|
||||
Un message peut signaler une particularité EFI : lisez-le, puis **Continuer**.
|
||||
|
||||

|
||||

|
||||
|
||||
Le dernier écran récapitule les changements. **Après ce clic, les données des partitions
|
||||
concernées sont définitivement effacées.**
|
||||
|
|
@ -543,11 +421,11 @@ concernées sont définitivement effacées.**
|
|||
|
||||
## 7. Compte utilisateur et fin de l'installation
|
||||
|
||||

|
||||

|
||||
|
||||
**Où êtes-vous ?** — choisissez le fuseau horaire.
|
||||
|
||||

|
||||

|
||||
|
||||
Pendant que les fichiers se copient, créez le compte principal :
|
||||
|
||||
|
|
@ -558,24 +436,20 @@ Pendant que les fichiers se copient, créez le compte principal :
|
|||
(*jean*).
|
||||
- **Mot de passe** : en Install Party, nous utilisons le mot de passe temporaire
|
||||
`alpinux73`, remplacé avant de rendre la machine.
|
||||
- Laissez **Demander mon mot de passe pour ouvrir une session**, sélectionné par défaut :
|
||||
l'autre choix, *Ouvrir la session automatiquement*, laisse l'ordinateur accessible à qui
|
||||
l'allume. L'option *Chiffrer mon dossier personnel* existe, mais un mot de passe oublié
|
||||
rend alors les données définitivement irrécupérables.
|
||||
- Le nom d'ordinateur et le nom d'utilisateur se remplissent tout seuls dès que vous
|
||||
saisissez votre nom : le nom proposé pour la machine est souvent long et technique, il
|
||||
gagne à être remplacé par quelque chose de court.
|
||||
- Cochez **Demander mon mot de passe pour ouvrir une session**. L'option *Chiffrer mon
|
||||
dossier personnel* existe, mais un mot de passe oublié rend alors les données
|
||||
définitivement irrécupérables.
|
||||
|
||||

|
||||

|
||||
|
||||
Comptez **10 à 30 minutes** selon le disque et la connexion : Mint en profite pour
|
||||
récupérer les mises à jour de sécurité et les paquets de langue française.
|
||||
|
||||

|
||||

|
||||
|
||||
À la fin, la fenêtre **Installation terminée** propose **Redémarrer maintenant**.
|
||||
|
||||

|
||||

|
||||
|
||||
!!! warning "Ne retirez pas la clé trop tôt"
|
||||
L'écran devient noir, puis affiche *« Please remove the installation medium, then press
|
||||
|
|
@ -585,85 +459,42 @@ récupérer les mises à jour de sécurité et les paquets de langue française.
|
|||
|
||||
---
|
||||
|
||||
## 8. Le premier démarrage
|
||||
|
||||

|
||||
|
||||
L'écran de connexion s'affiche en français, avec le nom saisi pendant l'installation. La
|
||||
disposition du clavier retenue est rappelée en haut à droite — `fr` et `latin9` pour un
|
||||
clavier français ordinaire : vérifiez-la avant de taper le mot de passe.
|
||||
|
||||

|
||||
|
||||
La session s'ouvre sur l'écran **Bienvenue**. Sa rubrique **Premiers pas** enchaîne les
|
||||
réglages que Mint juge prioritaires, chacun avec son bouton *Lancer* : couleurs du bureau,
|
||||
**instantanés du système**, gestionnaire de pilotes, gestionnaire de mises à jour. C'est un
|
||||
bon fil à suivre — et il recoupe ce qui suit.
|
||||
|
||||
La case *Afficher cette fenêtre au démarrage*, en bas, permet de ne plus la revoir une fois
|
||||
le tour fait.
|
||||
|
||||
---
|
||||
|
||||
## 9. Opérations de post-installation
|
||||
## 8. Opérations de post-installation
|
||||
|
||||
Le système est installé ; quelques réglages le rendent réellement utilisable.
|
||||
|
||||
### Le script de post-installation Alpinux
|
||||
|
||||
Il automatise ce qui manque presque toujours après une installation standard. Ouvrez un
|
||||
terminal (`Ctrl + Alt + T`) et récupérez-le — **sur le réseau local de l'Install Party**,
|
||||
où [le serveur d'Alpinux](../technique/serveur-install-party.md) le sert et met en cache
|
||||
tout ce que la machine téléchargera ensuite :
|
||||
terminal (`Ctrl + Alt + T`) et récupérez-le — **sur le réseau local de l'Install Party** :
|
||||
|
||||
```bash
|
||||
wget http://alpicache.lan/install.sh http://alpicache.lan/alpi-fiche.sh
|
||||
wget http://10.0.0.1/install.sh
|
||||
```
|
||||
|
||||
**ou depuis Internet :**
|
||||
|
||||
```bash
|
||||
wget https://gitea.alpinux.org/alpinux.cedrica5l/alpinux.scripts/raw/branch/stable/poste/install.sh \
|
||||
https://gitea.alpinux.org/alpinux.cedrica5l/alpinux.scripts/raw/branch/stable/poste/alpi-fiche.sh
|
||||
wget https://gitea.alpinux.org/alpinux.cedrica5l/alpinux-wiki/raw/branch/main/code/linux/linux-mint/install.sh
|
||||
```
|
||||
|
||||
Puis, dans les deux cas :
|
||||
|
||||
```bash
|
||||
chmod +x install.sh alpi-fiche.sh
|
||||
chmod +x install.sh
|
||||
./install.sh
|
||||
```
|
||||
|
||||
!!! note "Pourquoi deux fichiers"
|
||||
`install.sh` commence par relever la fiche matérielle, et il ne le fait **que s'il
|
||||
trouve `alpi-fiche.sh` à côté de lui** — il ne va rien chercher sur le réseau de
|
||||
lui-même. Téléchargé seul, il s'installera très bien, simplement sans relevé. En
|
||||
install party, prenez les deux.
|
||||
|
||||
Le mot de passe est demandé au passage (`alpinux73` en Install Party) : les caractères ne
|
||||
s'affichent pas, c'est normal.
|
||||
|
||||
Ce que le script met en place :
|
||||
|
||||
- **Le français partout** : paquets de langue manquants, dictionnaires LibreOffice
|
||||
(`hunspell-fr`, `mythes-fr`, `hyphen-fr`) et préférences Firefox globales — interface,
|
||||
correcteur, langue demandée aux sites, et lecture des contenus protégés (Netflix,
|
||||
Prime).
|
||||
- **Une logithèque prête à l'emploi** : polices Microsoft, VLC, GParted, Shotwell, Cheese,
|
||||
pdfarranger, tesseract-ocr en français, backintime, stacer, `numlockx` pour le pavé
|
||||
numérique — plus Flathub, avec KeePassXC et Flatseal en Flatpak.
|
||||
- **Des réglages système** : microcode processeur Intel ou AMD, journaux plafonnés, cache
|
||||
APT allégé, proxy APT détecté automatiquement sur le réseau de l'install party, Timeshift
|
||||
désactivé, et GRUB qui redémarre sur la dernière entrée utilisée.
|
||||
- **Les mises à jour** appliquées dans la foulée.
|
||||
|
||||
Le script s'efface lui-même une fois terminé.
|
||||
|
||||
!!! note "Comptez vingt minutes, et une connexion qui tient"
|
||||
Le script installe les polices Microsoft (leur licence est acceptée automatiquement),
|
||||
puis applique la mise à jour complète du système — plusieurs centaines de paquets sur
|
||||
une installation neuve. Il demande le mot de passe au début, pour se relancer avec les
|
||||
droits d'administration, puis se déroule seul.
|
||||
- **Logithèque enrichie** : polices Microsoft, outils de gravure, application de webcam,
|
||||
gestionnaire de mots de passe, utilitaires de sauvegarde.
|
||||
- **Confort matériel** : `numlockx`, pour le pavé numérique dès le démarrage.
|
||||
- **Mises à jour automatiques** : les correctifs de sécurité s'installent sans intervention.
|
||||
- **Paquets de langue** : les traductions manquantes de LibreOffice, Firefox et consorts.
|
||||
|
||||
!!! info "Pourquoi installer les polices Microsoft ?"
|
||||
Linux utilise des polices libres. Un document reçu en *Arial* ou *Times New Roman*
|
||||
|
|
@ -786,7 +617,7 @@ Video.
|
|||
|
||||
---
|
||||
|
||||
## 10. Tests matériels finaux
|
||||
## 9. Tests matériels finaux
|
||||
|
||||
Avant de considérer l'installation comme terminée, éprouvez chaque composant : c'est ainsi
|
||||
qu'on détecte un pilote manquant pendant que les bénévoles sont encore là.
|
||||
|
|
@ -818,7 +649,7 @@ qu'on détecte un pilote manquant pendant que les bénévoles sont encore là.
|
|||
|
||||
---
|
||||
|
||||
## 11. Rendre l'ordinateur
|
||||
## 10. Rendre l'ordinateur
|
||||
|
||||
Une **vérification par une autre personne** que celle qui a installé conclut la séance :
|
||||
un regard neuf repère ce que l'habitude a fait oublier.
|
||||
|
|
|
|||
|
|
@ -14,13 +14,7 @@ son bureau pour la première fois.
|
|||
21 : les fenêtres ont pu changer d'allure, les chemins et les boutons décrits restent
|
||||
ceux de la 22.3.
|
||||
|
||||
!!! tip "Quatre pages, quatre moments"
|
||||
- [Installer Linux Mint depuis Windows](linux-mint-depuis-windows.md) — l'installation elle-même, de la clé USB à l'ordinateur rendu.
|
||||
- **Cette page** — le premier démarrage : mises à jour, langue, pilotes.
|
||||
- [Trousse de premiers secours](linux-mint-trousse.md) — les gestes de base, en format court et imprimable.
|
||||
- [Utiliser Linux Mint](utiliser-linux-mint.md) — la vie courante : paramètres, matériel, logiciels, entretien.
|
||||
|
||||
!!! note "Vous sortez d'une Install Party ?"
|
||||
!!! tip "Vous sortez d'une Install Party ?"
|
||||
Le [guide d'installation](linux-mint-depuis-windows.md) couvre déjà ces réglages dans
|
||||
le fil de l'installation, avec le script de post-installation d'Alpinux qui en
|
||||
automatise une partie. Cette page reprend les mêmes points, en détail et dans l'ordre
|
||||
|
|
@ -73,8 +67,7 @@ Thunderbird ont leurs propres paquets, téléchargés après coup.
|
|||
Dans la même fenêtre, le bouton **Installer / Supprimer des langues** signale par un
|
||||
avertissement les paquets qui manquent pour le français.
|
||||
|
||||
Le même constat remonte dans **Renseignements sur le système**, l'outil de diagnostic de
|
||||
Mint, à sa rubrique *Relevés du système* :
|
||||
Le même constat remonte dans **Relevés du système**, l'outil de diagnostic de Mint :
|
||||
|
||||

|
||||
|
||||
|
|
@ -93,31 +86,22 @@ Si des mises à jour complémentaires sont proposées au passage, acceptez-les.
|
|||
|
||||
---
|
||||
|
||||
## 3. Lire ce que le système signale
|
||||
## 3. Lire ce que « Relevés du système » signale
|
||||
|
||||

|
||||
|
||||
**Menu → Renseignements sur le système** centralise ce que Mint a remarqué sur votre
|
||||
machine. Son menu latéral donne, dans l'ordre : l'identité de la machine (modèle, version
|
||||
de Mint, noyau, processeur, carte graphique, mémoire, disques, environnement de bureau),
|
||||
puis *USB*, *Processeur graphique*, *PCI*, *BIOS*, et enfin les deux rubriques qui
|
||||
signalent quelque chose — **Relevés du système** (paquets de langue incomplets, pilotes
|
||||
disponibles) et **Relevés de plantage**.
|
||||
|
||||
!!! tip "Le bouton qui fait gagner un quart d'heure"
|
||||
La page d'accueil porte un bouton **Copier** : il met tout le résumé matériel dans le
|
||||
presse-papiers, prêt à coller dans un message au LUG ou sur le forum. C'est la
|
||||
première chose qu'un bénévole vous demandera.
|
||||
**Menu → Relevés du système** est l'outil qui centralise ce que Mint a remarqué sur votre
|
||||
machine : paquets de langue incomplets, pilotes propriétaires disponibles, rapports de
|
||||
plantage, et informations système utiles quand on demande de l'aide.
|
||||
|
||||
Prenez l'habitude d'y passer après une installation, puis à chaque fois que quelque chose
|
||||
se comporte bizarrement.
|
||||
se comporte bizarrement : c'est la première chose qu'un bénévole vous demandera d'ouvrir.
|
||||
|
||||
---
|
||||
|
||||
## 4. Activer les pilotes du matériel
|
||||
|
||||
Toujours dans **Renseignements sur le système**, la rubrique *Installer des pilotes de
|
||||
périphériques*
|
||||
Toujours dans **Relevés du système**, la rubrique *Installer des pilotes de périphériques*
|
||||
ouvre le **Gestionnaire de pilotes** — accessible aussi par **Menu → Gestionnaire de
|
||||
pilotes**.
|
||||
|
||||
|
|
@ -169,7 +153,7 @@ contrôler ce que votre navigateur annonce réellement aux sites.
|
|||
- [ ] *Langues* indique **Français, France UTF-8** pour la langue, la région et l'heure
|
||||
- [ ] **Appliquer à tout le système** a été cliqué, et l'écran de connexion est en français
|
||||
- [ ] Les paquets de langue manquants sont installés
|
||||
- [ ] *Renseignements sur le système* ne signale plus rien d'urgent
|
||||
- [ ] *Relevés du système* ne signale plus rien d'urgent
|
||||
- [ ] Le pilote recommandé est activé, la machine a redémarré derrière
|
||||
- [ ] Firefox est en français et souligne les fautes de frappe
|
||||
- [ ] Le son, le Wi-Fi et le Bluetooth ont été essayés au moins une fois
|
||||
|
|
@ -178,7 +162,8 @@ contrôler ce que votre navigateur annonce réellement aux sites.
|
|||
|
||||
## Et ensuite
|
||||
|
||||
- [Utiliser Linux Mint](utiliser-linux-mint.md) — la suite directe de cette page : les
|
||||
Paramètres système, le confort du bureau, le matériel qui résiste, l'entretien.
|
||||
- [Trousse de premiers secours](linux-mint-trousse.md) — les mêmes gestes en images, à
|
||||
imprimer pour une install party.
|
||||
- [Installer Linux Mint depuis Windows](linux-mint-depuis-windows.md) — le parcours
|
||||
complet, y compris la restauration du profil Firefox et les tests matériels.
|
||||
- [Trousse de premiers secours](linux-mint-trousse.md) — les gestes des premiers jours,
|
||||
en format court et imprimable.
|
||||
- [Utiliser Linux Mint](utiliser-linux-mint.md) — la prise en main au quotidien.
|
||||
|
|
|
|||
|
|
@ -1,23 +1,6 @@
|
|||
---
|
||||
description: Trousse de premiers secours Linux Mint — les gestes des premiers jours en images : wifi, bluetooth, mises à jour, clé USB, installer et désinstaller un logiciel.
|
||||
---
|
||||
# Linux Mint 21 (Vanessa), Trousse de premiers secours
|
||||
|
||||
# Trousse de premiers secours
|
||||
|
||||
Les gestes des tout premiers jours, en images, pour qui découvre Linux Mint. Rien de plus :
|
||||
chaque sujet est traité en détail ailleurs, et les liens y mènent.
|
||||
|
||||
!!! tip "Quatre pages, quatre moments"
|
||||
- [Installer Linux Mint depuis Windows](linux-mint-depuis-windows.md) — l'installation elle-même, de la clé USB à l'ordinateur rendu.
|
||||
- [Régler Linux Mint après l'installation](linux-mint-parametres.md) — le premier démarrage : mises à jour, langue, pilotes.
|
||||
- **Cette page** — les gestes de base, en format court et imprimable.
|
||||
- [Utiliser Linux Mint](utiliser-linux-mint.md) — la vie courante : paramètres, matériel, logiciels, entretien.
|
||||
|
||||
!!! info "État du document"
|
||||
Captures et PDF réalisés sous **Linux Mint 21 (Vanessa)**. Les fenêtres ont changé
|
||||
d'allure depuis, les gestes décrits restent les mêmes en 22.3.
|
||||
|
||||
[Télécharger la trousse de premiers secours (PDF, Mint 21)](https://static.alpinux.org/wiki/technique/pratique/premiers_secours.pdf){ .md-button }
|
||||
[Télécharger la trousse de premiers secours Linux Mint 21 (PDF)](https://static.alpinux.org/wiki/technique/pratique/premiers_secours.pdf){ .md-button }
|
||||
|
||||
## Modifier l'arrière plan du bureau
|
||||

|
||||
|
|
@ -38,9 +21,6 @@ Choisir votre box et entrer la clé wifi. Elle est généralement inscrite sur l
|
|||
## Faire les mises à jour
|
||||
Les mises à jour sont importantes parce qu'elles protègent votre ordinateur, éliminent les bogues et peuvent même ajouter de nouvelles fonctions à votre système d'exploitation. L'icône des mises à jour se trouve en bas à droite de votre écran.
|
||||
|
||||
Le fonctionnement du gestionnaire, les notifications et les réglages utiles sont expliqués
|
||||
dans [Utiliser Linux Mint](utiliser-linux-mint.md#le-gestionnaire-de-mises-a-jour).
|
||||
|
||||

|
||||
|
||||
## Enlever proprement une clé USB ou un disque dur externe
|
||||
|
|
@ -52,8 +32,7 @@ Clic droit sur le volume que l'on veut enlever **Ejecter** pour une clé USB ou
|
|||

|
||||
|
||||
## Installer des logiciels
|
||||
Pour être sûr d'installer un logiciel compatible avec votre système, il faut utiliser le gestionnaire de logiciels. La différence entre les logiciels des dépôts et les Flatpak est
|
||||
expliquée dans [Utiliser Linux Mint](utiliser-linux-mint.md#installer-des-logiciels).
|
||||
Pour être sûr d'installer un logiciel compatible avec votre système, il faut utiliser le gestionnaire de logiciels.
|
||||
|
||||

|
||||
|
||||
|
|
|
|||
|
|
@ -1,313 +1,53 @@
|
|||
---
|
||||
description: Utiliser Linux Mint au quotidien — les Paramètres système, les réglages à faire une fois, le confort du bureau, le matériel qui résiste, l'installation de logiciels et les mises à jour.
|
||||
---
|
||||
|
||||
# Utiliser Linux Mint
|
||||
|
||||
Le système est installé et réglé : cette page est celle de la vie courante. Où changer
|
||||
quoi, quoi installer, comment tenir la machine à jour, et quoi faire quand un périphérique
|
||||
refuse de coopérer.
|
||||
|
||||
!!! tip "Quatre pages, quatre moments"
|
||||
- [Installer Linux Mint depuis Windows](linux-mint-depuis-windows.md) — l'installation
|
||||
elle-même, de la clé USB à l'ordinateur rendu.
|
||||
- [Régler Linux Mint après l'installation](linux-mint-parametres.md) — le premier
|
||||
démarrage : mises à jour, langue, pilotes.
|
||||
- [Trousse de premiers secours](linux-mint-trousse.md) — les gestes de base, en format
|
||||
court et imprimable.
|
||||
- **Cette page** — tout ce qui vient ensuite.
|
||||
|
||||
---
|
||||
|
||||
## Les Paramètres système
|
||||
|
||||
Tout se règle au même endroit : **Menu → Paramètres système**, dont la fenêtre s'intitule
|
||||
**Paramètres du système**. Une quarantaine de rubriques, rangées en quatre familles :
|
||||
|
||||
| Famille | Ce qu'on y trouve |
|
||||
| --- | --- |
|
||||
| **Apparence** | Choix des polices, Effets, Fonds d'écran, Thèmes |
|
||||
| **Préférences** | Accessibilité, Applets, Applications lancées au démarrage, Applications par défaut, Comptes en ligne, Date et heure, Détails du compte, Économiseur d'écran, Espaces de travail, Fenêtres, Gestes, Langues… |
|
||||
| **Matériel** | Affichage, Bluetooth, Clavier, Disques, Gestion de l'alimentation, Imprimantes, Réseau, Son, Souris et pavé tactile, Renseignements sur le système |
|
||||
| **Administration** | Fenêtre de connexion, Gestionnaire de pilotes, Pare-feu, Sources des logiciels, Administration du système |
|
||||
|
||||
Deux réflexes font gagner beaucoup de temps :
|
||||
|
||||
- **la barre de recherche en haut** de cette fenêtre : tapez « écran », « son », « heure »
|
||||
plutôt que de chercher l'icône ;
|
||||
- **la recherche du menu** : la même chose depuis le menu principal, sans ouvrir les
|
||||
paramètres.
|
||||
|
||||
!!! note "Paramètres système ou Gestionnaire de logiciels ?"
|
||||
Les **Paramètres système** règlent le comportement de l'ordinateur — ce qui est déjà
|
||||
là. Le **Gestionnaire de logiciels** installe et retire des applications. Deux outils
|
||||
différents, deux icônes différentes : la confusion entre les deux est la première
|
||||
source d'égarement.
|
||||
|
||||
---
|
||||
|
||||
## Les réglages à faire une fois
|
||||
|
||||
### Le gestionnaire de mises à jour
|
||||
|
||||
Les mises à jour ajoutent des fonctions, corrigent des bogues et bouchent des failles de
|
||||
sécurité. Sous Linux elles ne concernent pas que le système : les logiciels et les pilotes
|
||||
installés avec la distribution passent par le même canal.
|
||||
|
||||
Linux Mint repose sur des **paquets** — des archives contenant un logiciel et les
|
||||
informations nécessaires à son installation — gérés par un **gestionnaire de paquets**,
|
||||
qui automatise l'ensemble.
|
||||
|
||||
Une mise à jour peut aussi provoquer une régression : logiciel instable, fonction perdue,
|
||||
matériel qui cesse d'être reconnu (Wi-Fi, webcam).
|
||||
|
||||
!!! warning "Les « niveaux » de mise à jour n'existent plus"
|
||||
Jusqu'à Mint 19, le gestionnaire classait les mises à jour en quatre niveaux, et l'on
|
||||
conseillait aux débutants de s'en tenir au niveau 2. **Ce système a disparu** : sur
|
||||
Mint 22.3, il n'y a plus ni menu *Édition → Niveaux*, ni réglage correspondant.
|
||||
Vérifié sur une installation 22.3 en septembre 2026 — si vous trouvez un tutoriel qui
|
||||
en parle, il décrit une version ancienne.
|
||||
|
||||
La réponse de Mint au risque de régression est ailleurs : **les instantanés système**,
|
||||
que le gestionnaire met en avant dès son premier lancement (voir *Prendre des
|
||||
instantanés avec Timeshift*, plus bas).
|
||||
|
||||
**Au premier lancement**
|
||||
|
||||
Le gestionnaire commence par un écran d'accueil qui distingue trois choses : les **mises à
|
||||
jour de sécurité**, les **mises à jour logicielles** et les **instantanés système**. Il
|
||||
propose ensuite d'utiliser un **miroir de dépôts local**, plus rapide que le serveur par
|
||||
défaut : acceptez. Il peut enfin se mettre à jour lui-même avant d'afficher le reste.
|
||||
|
||||
**Quand mettre à jour ?**
|
||||
|
||||
L'applet en forme de bouclier, à droite de la barre des tâches, change d'aspect selon
|
||||
l'état du système :
|
||||
|
||||
| Bouclier | Signification |
|
||||
| --- | --- |
|
||||
| **V vert** | Le système est à jour |
|
||||
| **! bleu** | Des mises à jour sont disponibles — cliquez pour les installer |
|
||||
| **Gris, vide** | Le système cherche les mises à jour, ou n'arrive pas à joindre le réseau |
|
||||
| **X rouge** | Une erreur est survenue ; réessayez plus tard, et voyez avec le LUG si elle persiste |
|
||||
|
||||
**Comment ?** Cliquez sur l'applet, puis sur **Installer les mises à jour**, saisissez
|
||||
votre mot de passe, et laissez faire. Le gestionnaire annonce à la fin que le système est
|
||||
à jour.
|
||||
|
||||
**Ce que contient le menu Édition** : *Préférences*, *Instantanés système* et *Sources de
|
||||
logiciels* — rien d'autre.
|
||||
|
||||
Les **Préférences** s'organisent en trois onglets :
|
||||
|
||||
| Onglet | Ce qu'on y règle |
|
||||
| --- | --- |
|
||||
| **Options** | L'interface (cacher la fenêtre après installation, afficher une icône de notification), l'actualisation automatique de la liste, et les notifications — dont *N'afficher que les notifications des mises à jour de sécurité et des noyaux* |
|
||||
| **Paquets** | Ce qui apparaît dans la liste : mises à jour de Cinnamon, paquets Flatpak, noyaux |
|
||||
| **Automatisation** | Les mises à jour appliquées sans intervention |
|
||||
|
||||
!!! tip "Le piège du `/boot` plein"
|
||||
Les anciens noyaux s'accumulent et finissent par saturer la partition de démarrage,
|
||||
ce qui bloque toute nouvelle mise à jour. L'onglet *Automatisation* permet de
|
||||
programmer leur suppression ; à défaut, passez de temps en temps par
|
||||
**Affichage → Noyaux Linux**, qui les liste et permet de retirer les plus anciens.
|
||||
|
||||
!!! warning "Changer de noyau n'est pas anodin"
|
||||
La même fenêtre *Noyaux Linux* s'ouvre sur un avertissement qu'il vaut la peine de
|
||||
lire : un noyau plus récent peut faire disparaître le Wi-Fi, l'accélération graphique,
|
||||
ou donner un écran noir au démarrage — surtout avec des pilotes propriétaires.
|
||||
|
||||
La sortie de secours tient en quatre gestes, à connaître **avant** d'en installer un :
|
||||
redémarrer, maintenir **Maj** pour afficher le menu GRUB, choisir *Advanced options*
|
||||
puis un noyau antérieur, et désinstaller le plus récent une fois revenu.
|
||||
|
||||
### Activer le pare-feu
|
||||
|
||||
Le pare-feu est installé, mais **désactivé par défaut**. Pour un ordinateur portable qui
|
||||
se connecte à des réseaux publics, il vaut mieux l'allumer :
|
||||
|
||||
**Paramètres du système → Pare-feu** (famille *Administration*). L'ouverture demande votre
|
||||
mot de passe, puis il suffit de basculer **État** sur *Activé*.
|
||||
|
||||
Le profil proposé par défaut, **Domestique**, convient : les deux lignes en dessous
|
||||
annoncent la règle appliquée — *Entrant : Refuser*, *Sortant : Autoriser*. Autrement dit,
|
||||
rien ne rentre sans y avoir été invité, tout ce que vous lancez sort normalement. Les
|
||||
profils *Bureau* et *Public* servent à mémoriser d'autres jeux de règles ; sans besoin
|
||||
précis, n'y touchez pas.
|
||||
|
||||
### Vérifier ses pilotes
|
||||
|
||||
**Paramètres du système → Gestionnaire de pilotes** (famille *Administration*) liste le
|
||||
matériel pour lequel un pilote propriétaire existe. Si la case cochée est celle d'un pilote libre alors qu'un pilote recommandé est
|
||||
proposé, essayez ce dernier, puis redémarrez.
|
||||
|
||||
!!! warning "Prudence avec la carte graphique"
|
||||
Changer un pilote graphique peut mener à un écran noir au redémarrage. Faites-le quand
|
||||
vous avez le temps de revenir en arrière — et de préférence après avoir pris un
|
||||
instantané Timeshift.
|
||||
|
||||
### Alléger le démarrage
|
||||
|
||||
**Paramètres du système → Applications lancées au démarrage** montre ce qui se lance à
|
||||
l'ouverture de session. Désactivez ce que vous n'utilisez pas : chaque entrée retarde l'arrivée du
|
||||
bureau. Dans le doute, désactivez plutôt que de supprimer.
|
||||
|
||||
### Prendre des instantanés avec Timeshift
|
||||
|
||||
**Menu → Timeshift** photographie le système à intervalles réguliers et permet de revenir
|
||||
en arrière après une mise à jour malheureuse ou une fausse manœuvre.
|
||||
|
||||
- Choisissez **RSYNC** à la première ouverture.
|
||||
- Gardez peu d'instantanés — deux ou trois — sur un petit disque.
|
||||
- Timeshift sauvegarde le **système**, pas vos documents : pour ces derniers, voyez
|
||||
*Menu → Sauvegarde*, ou une copie sur disque externe.
|
||||
|
||||
!!! tip "Des instantanés qui grossissent trop"
|
||||
Les applications Flatpak sont volumineuses et changent souvent : elles peuvent faire
|
||||
gonfler les instantanés hors de proportion. Dans *Timeshift → Paramètres → Filtres*,
|
||||
excluez `/var/lib/flatpak` si l'espace disque devient un souci.
|
||||
|
||||
---
|
||||
|
||||
## Le confort du bureau
|
||||
|
||||
### Écrans
|
||||
|
||||
**Paramètres du système → Affichage** gère la disposition d'un deuxième écran (à gauche, à
|
||||
droite, en miroir), la résolution et la fréquence.
|
||||
|
||||
Sur un portable récent à écran très fin — 13 ou 14 pouces en haute définition — tout
|
||||
paraît minuscule. C'est le réglage d'**échelle de l'interface** qu'il faut modifier, dans
|
||||
la même fenêtre, et non la résolution : baisser la résolution rend l'image floue, alors
|
||||
que l'échelle agrandit proprement.
|
||||
|
||||
### Apparence
|
||||
|
||||
**Paramètres du système → Thèmes** change l'aspect général, y compris le mode sombre —
|
||||
Mint 22.3 démarre d'ailleurs en thème sombre. **Choix des polices** règle la taille du
|
||||
texte partout à la fois, plus efficace que d'agrandir chaque application séparément.
|
||||
|
||||
### Panneau et menu
|
||||
|
||||
Clic droit sur la barre des tâches → **Configurer** : hauteur, position (en haut plutôt
|
||||
qu'en bas, par exemple), et **Ajouter des applets** pour la météo, la charge, ou un
|
||||
sélecteur de fenêtres.
|
||||
|
||||
Clic droit sur une application dans le menu → **Ajouter aux favoris** pour l'épingler.
|
||||
|
||||
### Énergie et veille
|
||||
|
||||
**Paramètres du système → Gestion de l'alimentation** décide de ce qui se passe quand on
|
||||
ferme le capot, au bout de combien de temps l'écran s'éteint, et si la machine se met en
|
||||
veille. Sur un ordinateur de bureau, mettre la veille sur *Jamais* évite bien des retours
|
||||
d'écran capricieux.
|
||||
|
||||
### Clavier
|
||||
|
||||
**Paramètres du système → Clavier** contient deux réglages qui rendent service :
|
||||
|
||||
- la **touche compose**, dans *Options*, qui donne accès aux caractères absents du clavier
|
||||
(œ, æ, ©, majuscules accentuées) ;
|
||||
- les **raccourcis**, pour ouvrir un terminal ou changer de bureau sans la souris.
|
||||
|
||||
Pour que le **pavé numérique** soit actif dès l'écran de connexion :
|
||||
*Paramètres du système → Fenêtre de connexion → Paramètres → Activer le verrouillage
|
||||
numérique*.
|
||||
|
||||
### Pavé tactile
|
||||
|
||||
**Paramètres du système → Souris et pavé tactile** : défilement à deux doigts, clic par
|
||||
tapotement, désactivation pendant la frappe — le réglage qui évite le curseur qui saute
|
||||
au milieu d'une phrase.
|
||||
|
||||
---
|
||||
|
||||
## Quand le matériel résiste
|
||||
|
||||
Trois sujets reviennent sans cesse sur les forums francophones, et valent d'être connus
|
||||
avant de chercher.
|
||||
|
||||
### Imprimante
|
||||
|
||||
**Paramètres du système → Imprimantes → Ajouter**. La plupart des imprimantes réseau sont
|
||||
détectées seules ; les modèles USB aussi, une fois allumés et branchés.
|
||||
|
||||
Si l'imprimante apparaît mais imprime de travers, ou se présente comme « imprimante
|
||||
générique », le pilote générique ne suffit pas : certains constructeurs — **Canon** en
|
||||
particulier — publient des pilotes Linux à télécharger sur leur site et à installer à la
|
||||
main. Un passage par le [forum
|
||||
francophone](https://forum-francophone-linuxmint.fr/) évite souvent une heure de
|
||||
tâtonnement : le modèle a généralement déjà été traité.
|
||||
|
||||
### Bluetooth
|
||||
|
||||
L'adaptateur peut être éteint au démarrage : l'applet Bluetooth de la barre des tâches
|
||||
permet de l'allumer, et *Paramètres du système → Bluetooth* de gérer les appareils
|
||||
appairés.
|
||||
|
||||
Un casque qui ne se reconnecte pas tout seul se règle le plus souvent en le supprimant de
|
||||
la liste puis en le réappairant. Si l'adaptateur n'apparaît pas du tout, c'est un pilote
|
||||
manquant : voyez le gestionnaire de pilotes, puis demandez de l'aide avec le modèle exact
|
||||
de la machine.
|
||||
|
||||
### Son
|
||||
|
||||
**Paramètres du système → Son** liste les sorties disponibles. Le cas classique : le son
|
||||
reste dans les haut-parleurs alors qu'un casque est branché — il suffit de choisir la
|
||||
bonne sortie dans cette fenêtre. Même chose pour le micro, dans l'onglet *Entrée*, où le
|
||||
niveau peut être à zéro.
|
||||
|
||||
---
|
||||
|
||||
## Installer des logiciels
|
||||
|
||||
Le **Gestionnaire de logiciels** (*Menu → Gestionnaire de logiciels*) est la bonne porte
|
||||
d'entrée : il cherche, installe et désinstalle proprement. La
|
||||
[trousse de premiers secours](linux-mint-trousse.md) en montre les écrans pas à pas.
|
||||
|
||||
Deux origines coexistent, et le gestionnaire indique laquelle il propose :
|
||||
|
||||
| Origine | Ce que c'est |
|
||||
| --- | --- |
|
||||
| **Dépôts système** (apt) | Les paquets intégrés à Mint, testés avec votre version. À préférer par défaut. |
|
||||
| **Flatpak** | Des applications autonomes, souvent plus récentes, qui embarquent ce dont elles ont besoin. Utile quand la version des dépôts est trop ancienne. |
|
||||
|
||||
!!! note "Et Snap ?"
|
||||
Mint **bloque volontairement** l'installation de `snapd`, le format concurrent poussé
|
||||
par Ubuntu. Ce n'est pas un bogue : un équivalent Flatpak existe pour à peu près tout.
|
||||
N'essayez pas de le contourner sans raison précise.
|
||||
|
||||
Quelques logiciels installés d'office, pour situer : **LibreOffice** (traitement de texte,
|
||||
tableur, présentation), **Firefox** (navigateur), **Thunderbird** (courriel), **VLC**
|
||||
(vidéo et audio), **GIMP** (retouche d'images), **Timeshift** (instantanés système).
|
||||
|
||||
---
|
||||
|
||||
## Entretenir la machine
|
||||
|
||||
Quelques gestes, quelques minutes par mois :
|
||||
|
||||
- [ ] Installer les mises à jour proposées par l'applet bouclier
|
||||
- [ ] Redémarrer après une mise à jour du noyau (l'applet le signale)
|
||||
- [ ] Vérifier l'espace disque restant (*Menu → Analyseur d'utilisation des disques*)
|
||||
- [ ] Vider la corbeille et le dossier des téléchargements
|
||||
- [ ] Contrôler que les instantanés Timeshift sont récents — et qu'ils ne saturent pas le
|
||||
disque
|
||||
- [ ] Sauvegarder ses documents ailleurs que sur la machine
|
||||
|
||||
!!! tip "Une question sans réponse ici ?"
|
||||
Les réunions Alpinux ont lieu les 1er et 3e jeudis du mois, et le
|
||||
[forum francophone Linux Mint](https://forum-francophone-linuxmint.fr/) traite déjà la
|
||||
plupart des cas. Donnez toujours votre version de Mint — *Menu → Renseignements sur le
|
||||
système*, bouton **Copier** —,
|
||||
le modèle de la machine, et le message d'erreur exact.
|
||||
|
||||
---
|
||||
|
||||
## Références
|
||||
|
||||
- [Paramétrer Linux Mint — InfoLibre](https://infolib.re/Parametrer_Linux_Mint)
|
||||
- [Le panneau de paramètres système — TuxLibre](https://lewinux.over-blog.fr/2020/12/linux-mint-le-panneau-de-parametres-systeme.html)
|
||||
- [Instantanés système — guide d'installation officiel de Linux Mint](https://linuxmint-installation-guide.readthedocs.io/en/latest/timeshift.html)
|
||||
- [Gestionnaire de mises à jour — Link-Zilla](https://link-zilla.blogspot.com/2020/05/linux-mint-gestionnaire-mises-a-jour.html)
|
||||
- [Forum francophone Linux Mint](https://forum-francophone-linuxmint.fr/)
|
||||
## Logiciels
|
||||
Libre Office - suite bureautique : tableur, traitement de texte...
|
||||
|
||||
VLC - lecteur de vidéo
|
||||
|
||||
Firefox - navigateur Internet
|
||||
|
||||
Chromium - navigateur Internet
|
||||
|
||||
## Maintenir son système à jour
|
||||
Les mises à jour du système d'exploitation sont destinées à ajouter de nouvelles fonctionnalités, à corriger des bugues de fonctionnement et/ou des failles de sécurité. Votre système doit donc impérativement être mis à jour. Sous Linux, les mises à jour ne concernent pas uniquement le système d'exploitation, mais également les logiciels et pilotes installés avec la distribution.
|
||||
|
||||
Pour votre information, le système d’exploitation Linux Mint reposent sur l’utilisation de paquets logiciels via un gestionnaire de paquets.
|
||||
Un paquet Archives (fichier compressé) contenant les données et informations nécessaires à l’installation d’un logiciel.
|
||||
Un gestionnaire de paquets est un ensemble d’outils logiciels permettant d’automatiser l’installation et la gestion de paquets logiciels.
|
||||
|
||||
Les mises à jour peuvent cependant entraîner des régressions, c’est-à-dire qu’elles peuvent rendre certains logiciels instables, entraîner la perte de certaines fonctions, perturber le bon fonctionnement d’autres logiciels, perdre la compatibilité avec certains matériels (Wifi, webcam…), etc.
|
||||
Pour certains logiciels isolés, ces régressions seront sans conséquences sur l’ensemble du système d’exploitation, mais pour d’autres paquets plus sensibles, les perturbations peuvent être très handicapantes pour l’utilisation du système. Nous appelons les mises à jour concernant ces derniers paquets « Mises à jour sensibles ».
|
||||
Afin d’aider à identifier les différents types de mise à jour (fonctionnelle ou de sécurité) et quel est le niveau de risques concernant les possibles régressions, Linux Mint propose un gestionnaire de mise à jour permettant de gérer au mieux son système d’exploitation et ses paquets.
|
||||
Son utilisation est donc recommandée pour les utilisateurs non experts ainsi que pour ceux souhaitant disposer d’un récapitulatif graphique des informations essentielles concernant les mises à jour disponibles avant de les appliquer.
|
||||
|
||||
****Paramétrage du gestionnaire de mises à jour****
|
||||
Lors de la première installation de Linux Mint, il vous sera demandé de choisir quel degré de mises à jour vous entendez appliquer.
|
||||
Pour les novices, il est plus prudent de ne cocher que le niveau 2 ( Niveau par défaut - Faible impact sur le système ).
|
||||
Il vous sera possible de modifier ces choix plus tard en allant sur le gestionnaire de mises à jour / Menu Édition / Niveaux /
|
||||
Les quatre possibilités de niveau d'impact des mises à jour sur votre système sont les suivants :
|
||||
- **Niveau 1** : Minimal - Aucun impact sur le système ou sur d'autres programmes.
|
||||
- **Niveau 2** : Normal - Habituellement faible impact sur le système.
|
||||
- **Niveau 3** : Grand - Impact sur plusieurs applications.
|
||||
- **Niveau 4** : Sensible - Impact sur les parties sensibles du système.
|
||||
|
||||
****Procédure de mise à jour Linux Mint par le gestionnaire de mises à jour****
|
||||
|
||||
****QUAND ?****
|
||||
Votre système Linux Mint est conçu pour vous prévenir de la présence de nouvelles mises à jour. L'applet des mises à jour modifie automatiquement son apparence pour mettre en évidence l'état du système. Il se trouve à droite de votre barre de tâches et représente un bouclier.
|
||||
|
||||
- ****Bouclier avec un V vert**** : Votre système est à jour.
|
||||
- ****Bouclier avec un ! bleu**** : Des mises à jour sont disponibles. Cliquez sur l'applet pour les installer.
|
||||
- ****Bouclier vide et gris**** : Le système est occupé. Soit il effectue une recherche de mises à jour, soit il ne parvient pas à se connecter au réseau pour vérifier les mises à jour.
|
||||
- ****Bouclier avec une X rouge**** : Une erreur est survenue. Veuillez réessayer plus tard. Si vous ne parvenez pas à installer les mises à jour après plusieurs tentatives, mettez-vous en contact avec le LUG ( Groupe d'Utilisateurs Linux - En anglais **L**inux **U**ser **G**roup ) près de chez vous.
|
||||
|
||||
****COMMENT ?****
|
||||
- En cliquant sur l'applet, la liste des mises à jour apparaît.
|
||||
- Cliquez sur le bouton Installer les mises à jour.
|
||||
- Entrez votre mot de passe.
|
||||
- Les mises à jour se téléchargent et s'installent automatiquement.
|
||||
- A la fin du processus, le gestionnaire des mises à jour vous indique que votre système est à jour.
|
||||
- Vous pouvez alors fermer la fenêtre du gestionnaire.
|
||||
|
||||
### Références
|
||||
- https://link-zilla.blogspot.com/2020/05/linux-mint-gestionnaire-mises-a-jour.html
|
||||
- https://forum-francophone-linuxmint.fr/viewtopic.php?t=8953
|
||||
|
|
|
|||
|
|
@ -181,53 +181,45 @@ Une exécution réussie encadre le build par une ligne `Deploy started` et une l
|
|||
|
||||
---
|
||||
|
||||
## Ce que le build publie pour alpinux.org
|
||||
## Ce que le build publie pour la page d'accueil
|
||||
|
||||
Chaque build écrit deux fichiers à la racine du site, avec pour chaque page son titre,
|
||||
son adresse et la date du commit qui a touché son contenu :
|
||||
Chaque build écrit, à la racine du site, un fichier
|
||||
**[`derniers-articles.json`](https://wiki.alpinux.org/derniers-articles.json)** : les
|
||||
vingt dernières pages créées ou modifiées, avec leur titre, leur URL et la date du commit
|
||||
qui a touché leur contenu. C'est ce fichier que lit la page d'accueil
|
||||
[alpinux.org](https://alpinux.org) pour afficher « Le wiki, fraîchement mis à jour ».
|
||||
|
||||
| Fichier | Ce qu'il porte | Qui le lit |
|
||||
|---|---|---|
|
||||
| `derniers-articles.json` | Les vingt dernières pages créées ou modifiées | L'accueil d'alpinux.org, section « Le wiki, fraîchement mis à jour » |
|
||||
| `toutes-les-pages.json` | Toutes les pages, sans limite, avec leur rubrique | La page des mises à jour d'alpinux.org |
|
||||
Il est produit par le hook `hooks/derniers_articles.py`, déclaré dans `mkdocs.yml`. Trois
|
||||
choses à savoir :
|
||||
|
||||
Le second est la liste entière, le premier son début : un seul parcours de l'historique
|
||||
git les produit tous les deux, et ils portent la même date de génération.
|
||||
- **Un déplacement n'est pas une mise à jour.** Les dates viennent de `git log` avec suivi
|
||||
des renommages : déplacer `guides/truc.md` ne fait pas remonter l'article en tête de
|
||||
liste, seule une modification de son texte le fait.
|
||||
- **Seules les pages de la navigation sont annoncées.** Une page hors `nav` — typiquement
|
||||
la redirection laissée derrière un article déplacé — n'apparaît jamais dans la liste.
|
||||
- **Le hook n'échoue jamais.** Sans historique git, il n'écrit rien et le build continue ;
|
||||
l'accueil d'alpinux.org masque alors simplement sa section wiki. Ses messages sont pour
|
||||
cela de niveau *info* et jamais *warning* : le déploiement construit avec `--strict`, où
|
||||
un seul avertissement suffit à interrompre le build et donc la publication.
|
||||
|
||||
Ils sont produits par le hook `hooks/derniers_articles.py`, déclaré dans `mkdocs.yml`.
|
||||
Trois choses à savoir :
|
||||
!!! warning "Deux conditions côté serveur"
|
||||
**Le clone doit avoir son historique.** Un clone `--depth 1` ne porte qu'un commit :
|
||||
toutes les pages sembleraient modifiées le même jour. Le hook le détecte et le
|
||||
signale dans le journal du build, sans rien casser.
|
||||
|
||||
- **Un déplacement n'est pas une mise à jour.** Les dates viennent de `git log` avec
|
||||
suivi des renommages : déplacer `guides/truc.md` ne fait pas remonter l'article en
|
||||
tête de liste, seule une modification de son texte le fait.
|
||||
- **Seules les pages de la navigation sont annoncées.** Une page absente de `nav` —
|
||||
typiquement la redirection laissée derrière un article déplacé — n'apparaît jamais
|
||||
dans la liste.
|
||||
- **Le hook n'échoue jamais.** Sans historique git, il n'écrit rien et le build
|
||||
continue ; alpinux.org masque alors simplement ce qu'il ne peut pas remplir. Ses
|
||||
messages sont pour cela de niveau *info* et jamais *warning* : le déploiement
|
||||
construit avec `--strict`, où un seul avertissement suffit à interrompre le build,
|
||||
et donc la publication.
|
||||
**Le `.htaccess` du DocumentRoot est réécrit à chaque déploiement.** Le hook le
|
||||
dépose dans le staging, que `rsync --delete` recopie intégralement : un `.htaccess`
|
||||
qui aurait été posé à la main sur le serveur serait effacé au premier build. S'il
|
||||
faut d'autres règles Apache, ajoutez-les dans le hook — c'est désormais lui qui fait
|
||||
foi.
|
||||
|
||||
Le même hook pose l'en-tête `Access-Control-Allow-Origin` sur ces deux fichiers, et
|
||||
sur eux seuls, au moyen d'un `.htaccess` déposé à la racine du site construit. Sans
|
||||
lui, le navigateur refuserait à alpinux.org le droit de lire une réponse venue de
|
||||
wiki.alpinux.org.
|
||||
|
||||
!!! warning "Deux conditions"
|
||||
**Le clone doit avoir son historique.** Un clone `--depth 1` ne porte qu'un
|
||||
commit : toutes les pages sembleraient modifiées le même jour. Le hook le détecte
|
||||
et le signale dans le journal du build, sans rien casser.
|
||||
|
||||
**Un `.htaccess` posé à la main sur le serveur est effacé au déploiement suivant**,
|
||||
puisque le staging est recopié avec `rsync --delete`. Pour ajouter des règles
|
||||
Apache durables, placez-les dans `docs/.htaccess` : MkDocs le recopie dans le site
|
||||
construit, et le hook **ajoute** son bloc à la suite au lieu de le remplacer.
|
||||
Le même hook dépose un `.htaccess` d'une ligne utile : il autorise les autres sous-domaines
|
||||
à lire ce seul fichier JSON (`Access-Control-Allow-Origin`). Sans lui, le navigateur
|
||||
refuserait à alpinux.org le droit de lire une réponse venue de wiki.alpinux.org.
|
||||
|
||||
```bash
|
||||
# vérifier ce que le dernier build a publié
|
||||
curl -s https://wiki.alpinux.org/derniers-articles.json | head -20
|
||||
curl -s https://wiki.alpinux.org/toutes-les-pages.json | head -20
|
||||
```
|
||||
|
||||
---
|
||||
|
|
@ -264,5 +256,4 @@ Ouvrez [http://localhost:8000](http://localhost:8000) — MkDocs recharge automa
|
|||
| Déployer à la main (webhook en panne) | `deploy-wiki.sh`, sur le serveur |
|
||||
| Voir le journal des déploiements | `tail -20 /var/log/wiki-deploy.log` |
|
||||
| Vérifier la liste envoyée à l'accueil | `curl -s https://wiki.alpinux.org/derniers-articles.json` |
|
||||
| Vérifier l'inventaire complet publié | `curl -s https://wiki.alpinux.org/toutes-les-pages.json` |
|
||||
| Régénérer les fichiers du logo (poste local) | `python3 scripts/build-assets.py` |
|
||||
|
|
|
|||
|
|
@ -1,169 +0,0 @@
|
|||
---
|
||||
description: Le serveur qu'Alpinux emporte en install party — partage de connexion, réseau local, cache de paquets APT, page de santé, et ce qu'un bénévole doit en savoir sur place.
|
||||
---
|
||||
|
||||
# Le serveur qu'on emporte en install party
|
||||
|
||||
Quinze ordinateurs qui s'installent le même matin, c'est quinze fois les mêmes
|
||||
cinq cents mégaoctets tirés par la ligne de la salle — quand il y en a une. Alpinux
|
||||
apporte donc sa propre machine, **alpicache**, qui partage l'accès à Internet, sert un
|
||||
réseau local aux postes en cours d'installation, et **garde en cache les paquets déjà
|
||||
téléchargés**.
|
||||
|
||||
!!! note "Pour qui est cette page"
|
||||
Pour les bénévoles qui installent, et pour qui prépare la salle. La configuration
|
||||
complète de la machine — interfaces, services, dépannage détaillé — vit dans son
|
||||
propre dépôt, `alpinux.alpicache`, et non ici.
|
||||
|
||||
---
|
||||
|
||||
## Le réseau de la salle
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
A[Prise murale<br/>ou box de la salle] --> B[alpicache<br/>10.0.0.1]
|
||||
B --> C[Switch]
|
||||
C --> D[Poste 1]
|
||||
C --> E[Poste 2]
|
||||
C --> F[Poste n]
|
||||
```
|
||||
|
||||
La machine tient les deux bouts : d'un côté elle demande un accès à la salle, de l'autre
|
||||
elle distribue un réseau en **10.0.0.x** aux postes branchés sur le switch. Les rôles ne
|
||||
sont pas figés à l'avance : elle désigne comme sortie la première prise où on lui répond,
|
||||
et sert le réseau local sur l'autre.
|
||||
|
||||
!!! warning "Les postes se branchent sur le switch, jamais sur la box"
|
||||
Un poste branché directement sur la box de la salle reçoit une adresse de la salle :
|
||||
il ne voit plus le cache, ne trouve plus les scripts, et fait tomber les compteurs à
|
||||
zéro. C'est l'erreur la plus fréquente, et elle ne se voit pas tout de suite.
|
||||
|
||||
---
|
||||
|
||||
## Ce que la machine offre, une fois branchée
|
||||
|
||||
| Adresse | À quoi ça sert |
|
||||
| --- | --- |
|
||||
| **<http://alpicache.lan/>** | La page de santé : réseau, disques, machines servies, cache |
|
||||
| **`http://apt-proxy:3142`** | Le cache de paquets, à déclarer comme mandataire |
|
||||
| **`http://10.0.0.1/`** | Les scripts d'Alpinux, servis sur place — dont `verif-disque.sh` et `install.sh` |
|
||||
|
||||
La page de santé se rafraîchit seule ; c'est le tableau de bord de la journée. Quatre
|
||||
cartes à surveiller :
|
||||
|
||||
| Carte | Ce qu'on veut y voir |
|
||||
| --- | --- |
|
||||
| **Réseau** | une sortie *et* un réseau local nommés, « Internet joignable » |
|
||||
| **Disques** | le disque du cache présent, avec de la place |
|
||||
| **Machines servies** | le nombre grandit à mesure que les postes arrivent |
|
||||
| **Cache de paquets** | « Économisé » qui monte au fil de la matinée |
|
||||
|
||||
**« Machines servies » qui reste à zéro** alors que des postes sont branchés, c'est le
|
||||
signe que le réseau local ne distribue pas d'adresses : prévenez la personne qui tient la
|
||||
machine plutôt que de chercher sur le poste du participant.
|
||||
|
||||
---
|
||||
|
||||
## Faire passer une installation par le cache
|
||||
|
||||
C'est là que tout se joue, et le geste n'est pas le même selon le système.
|
||||
|
||||
### Debian
|
||||
|
||||
L'installateur demande un mandataire à l'écran **« Configurer le miroir de l'archive
|
||||
Debian »**. Saisissez-y :
|
||||
|
||||
```
|
||||
http://apt-proxy:3142
|
||||
```
|
||||
|
||||
C'est **le seul moment** où on peut le faire, et c'est celui qui compte : toute
|
||||
l'installation passe alors par le cache.
|
||||
|
||||
### Linux Mint et Ubuntu
|
||||
|
||||
Leur installateur ne demande pas de mandataire : l'installation elle-même sortira sur
|
||||
Internet. Le gain arrive juste après — sur les mises à jour et les logiciels ajoutés,
|
||||
c'est-à-dire sur l'essentiel du volume.
|
||||
|
||||
Une fois la machine redémarrée sur son nouveau système :
|
||||
|
||||
```bash
|
||||
sudo apt install auto-apt-proxy
|
||||
```
|
||||
|
||||
Ce paquet cherche un cache sur le réseau local et s'en sert quand il en trouve un — sans
|
||||
rien à configurer, et sans gêner la machine une fois rentrée chez son propriétaire.
|
||||
|
||||
!!! tip "Le script de post-installation le fait déjà"
|
||||
Le [script d'Alpinux](../guides/linux-mint-depuis-windows.md#le-script-de-post-installation-alpinux)
|
||||
installe `auto-apt-proxy` parmi ses réglages : si vous le lancez, c'est fait.
|
||||
|
||||
---
|
||||
|
||||
## Ce qui coince, et la parade
|
||||
|
||||
**La salle n'a pas de réseau.** Un téléphone Android en partage de connexion USB fait
|
||||
l'affaire : branché sur la machine, il devient la sortie. Prévoyez le câble.
|
||||
|
||||
**Le disque du cache n'est pas vu.** Il doit être branché **avant** d'allumer la machine.
|
||||
Après coup, le cache démarre sans rien dire et ne garde rien — la carte *Disques* de la
|
||||
page de santé le montre tout de suite.
|
||||
|
||||
**Un poste n'obtient pas d'adresse.** Vérifiez d'abord le câble et le switch, puis la
|
||||
carte *Machines servies*. Une adresse en `169.254.x.x` signifie que le poste n'a reçu
|
||||
aucune réponse : il s'en est inventé une.
|
||||
|
||||
**`apt` renvoie des « 503 Connection closed » en série.** Le cache accepte la requête mais
|
||||
ne sait pas où aller la chercher — c'est arrivé le 24/09/2026, et une installation Mint
|
||||
s'y est arrêtée. Le piège est qu'**interroger le cache directement répond parfaitement** :
|
||||
les deux chemins ne suivent pas la même route à l'intérieur du serveur. Ne cherchez donc
|
||||
pas sur la machine du participant : prévenez la personne qui tient le serveur.
|
||||
|
||||
---
|
||||
|
||||
## Pour préparer une install party
|
||||
|
||||
La veille, la machine s'allume chez quelqu'un, sur une ligne rapide, et l'on garnit le
|
||||
cache avec ce qu'on va installer — si la version de Mint a changé depuis la dernière
|
||||
sortie, autant la tirer maintenant.
|
||||
|
||||
!!! warning "Le cache ne sert que ce qu'il connaît"
|
||||
Le pré-chargement vise des versions nommées, et une version absente de la liste ne
|
||||
profite à personne. Le 24/09/2026, la première Mint 22.3 de la soirée a tiré **1,3 Go
|
||||
d'Internet pour 82 Mo servis par le cache** : le pré-chargeur couvrait encore les
|
||||
versions précédentes.
|
||||
|
||||
Avant chaque sortie, vérifiez donc que la liste des versions pré-chargées correspond à
|
||||
celle que vous allez réellement installer. C'est par le **nom de code** que le
|
||||
pré-chargement les désigne, et un décalage d'un cran suffit à garnir le cache de la
|
||||
mauvaise version :
|
||||
|
||||
| Version | Nom de code |
|
||||
|---|---|
|
||||
| Mint 22 | `wilma` |
|
||||
| Mint 22.1 | `xia` |
|
||||
| Mint 22.2 | `zara` |
|
||||
| Mint 22.3 | `zena` |
|
||||
|
||||
Pour mémoire, la série précédente : `vanessa` (21), `vera` (21.1), `victoria` (21.2),
|
||||
`virginia` (21.3).
|
||||
|
||||
Sur place, l'ordre de branchement n'est pas une superstition : le disque externe d'abord,
|
||||
puis le câble Internet **seul**, puis la machine, et seulement ensuite le switch et les
|
||||
postes. Brancher la sortie seule d'abord, c'est ôter à la machine toute occasion de se
|
||||
tromper de rôle.
|
||||
|
||||
La procédure complète — ce qu'on emporte, les vérifications, le dépannage, la fiche à
|
||||
cocher pour chaque participant et l'affiche à scotcher près du switch — est dans le dépôt
|
||||
`alpinux.alpicache`. Demandez-la à un membre du bureau avant une sortie.
|
||||
|
||||
---
|
||||
|
||||
## Voir aussi
|
||||
|
||||
- [Install Party](../alpinux/install-party.md) — les dates, et comment y participer
|
||||
- [Installer Linux Mint depuis Windows](../guides/linux-mint-depuis-windows.md) — le guide
|
||||
suivi sur place
|
||||
- [Préparation d'un serveur Debian 13](serveur-debian-13.md) — pour la machine, la base
|
||||
système est la même
|
||||
|
|
@ -1,88 +1,68 @@
|
|||
"""Publie ce que le wiki a écrit ou repris, pour qui l'affiche ailleurs.
|
||||
"""Publie « derniers-articles.json » : les pages récemment créées ou modifiées.
|
||||
|
||||
Deux fichiers, écrits à chaque build à côté des pages et servis avec l'en-tête CORS
|
||||
sans lequel un autre domaine ne peut pas les lire :
|
||||
Le fichier est écrit à la racine du site construit, à côté de `sitemap.xml`, et sert
|
||||
la page d'accueil de https://www.alpinux.org — d'où le petit `.htaccess` qui l'ouvre
|
||||
aux requêtes venues d'un autre sous-domaine.
|
||||
|
||||
- `derniers-articles.json` — les vingt dernières pages touchées, que la page d'accueil
|
||||
d'alpinux.org lit pour sa section « Le wiki, fraîchement mis à jour » ;
|
||||
- `toutes-les-pages.json` — le même inventaire, sans limite de nombre et avec la
|
||||
rubrique de chaque page, pour la page des mises à jour d'alpinux.org.
|
||||
Les dates viennent de git, pas du système de fichiers : c'est la date du commit qui a
|
||||
touché le contenu de la page. **Un déplacement n'est pas une mise à jour** — renommer
|
||||
`guides/truc.md` ne fait pas remonter l'article ; seule une modification de son texte
|
||||
le fait.
|
||||
|
||||
Les deux sortent du même calcul : le second est la liste entière, le premier son
|
||||
début.
|
||||
Le hook n'échoue jamais : sans git, ou en cas d'erreur, il n'écrit simplement rien et
|
||||
le build continue (le site reste valide, la page d'accueil garde ses tuiles statiques).
|
||||
|
||||
Les dates viennent de git, pas du système de fichiers : un `git clone` repose tous les
|
||||
fichiers à la même seconde, et une page recopiée depuis Obsidian aurait l'air neuve.
|
||||
Les renommages sont ignorés (`-M`, statut `R` écarté) — déplacer un article ne le rend
|
||||
pas nouveau.
|
||||
Ses messages sont volontairement de niveau *info* et jamais *warning* : le déploiement
|
||||
construit le site avec `--strict`, où le moindre avertissement interrompt le build. Un
|
||||
hook d'agrément ne doit pas pouvoir empêcher la publication du wiki.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
import logging
|
||||
import subprocess
|
||||
from datetime import datetime, timedelta, timezone
|
||||
from pathlib import Path
|
||||
from urllib.parse import urljoin
|
||||
|
||||
from mkdocs.plugins import log
|
||||
log = logging.getLogger("mkdocs.hooks.derniers_articles")
|
||||
|
||||
FICHIER_RECENTS = "derniers-articles.json"
|
||||
FICHIER_TOUTES = "toutes-les-pages.json"
|
||||
|
||||
# Ce que le premier fichier porte au plus. L'accueil n'en affiche que six, mais le
|
||||
# fichier sert aussi à qui voudrait en faire autre chose. Le second ne plafonne pas.
|
||||
NB_MAX = 20
|
||||
|
||||
# En deçà, un article est annoncé comme « publié » plutôt que « mis à jour ».
|
||||
JOURS_NOUVEAU = 45
|
||||
|
||||
# Les pages d'accueil de section n'annoncent rien : elles listent ce qu'il y a dessous.
|
||||
EXCLUS = {"index.md"}
|
||||
FICHIER = "derniers-articles.json"
|
||||
NB_MAX = 20 # articles retenus dans le JSON
|
||||
JOURS_NOUVEAU = 45 # en deçà, l'article est signalé comme nouveau
|
||||
EXCLUS = {"index.md"} # l'accueil du wiki n'est pas un article
|
||||
|
||||
# Pages construites, remplies au fil du build : chemin source -> titre et URL.
|
||||
_pages: dict[str, dict[str, str]] = {}
|
||||
# Pages réellement présentes dans la navigation : les seules annoncées.
|
||||
_dans_la_nav: set[str] = set()
|
||||
_rubriques: dict[str, str] = {}
|
||||
|
||||
|
||||
def _rubrique_par_page(items, rubrique=""):
|
||||
"""Associe chaque page de la navigation au titre de la section qui la porte.
|
||||
|
||||
On garde la section de premier niveau — « Guides », « Contribuer » — plutôt que la
|
||||
plus proche : c'est l'échelle à laquelle un lecteur range les pages.
|
||||
"""
|
||||
for item in items:
|
||||
if item.is_section:
|
||||
yield from _rubrique_par_page(item.children, rubrique or item.title)
|
||||
elif item.is_page:
|
||||
yield item.file.src_uri, rubrique
|
||||
|
||||
|
||||
def on_nav(nav, config, files):
|
||||
"""Retient les pages de la navigation, et sous quelle rubrique elles vivent.
|
||||
"""Retient les pages de la navigation.
|
||||
|
||||
Ce qui en est absent — les redirections laissées derrière un article déplacé, par
|
||||
exemple — n'a pas à être annoncé comme une nouveauté.
|
||||
"""
|
||||
_dans_la_nav.clear()
|
||||
_dans_la_nav.update(page.file.src_uri for page in nav.pages)
|
||||
|
||||
_rubriques.clear()
|
||||
_rubriques.update(_rubrique_par_page(nav.items))
|
||||
return nav
|
||||
|
||||
|
||||
def on_page_context(context, page, config, nav):
|
||||
"""Retient le titre et l'URL de chaque page rendue."""
|
||||
_pages[page.file.src_uri] = {
|
||||
"titre": page.title,
|
||||
"titre": page.title or page.file.src_uri,
|
||||
"url": urljoin(config["site_url"] or "", page.url),
|
||||
}
|
||||
return context
|
||||
|
||||
|
||||
def _git(depot: Path, *args: str) -> str:
|
||||
return subprocess.run(
|
||||
["git", "-C", str(depot), *args],
|
||||
capture_output=True, text=True, check=True,
|
||||
capture_output=True, text=True, check=True, timeout=30,
|
||||
).stdout
|
||||
|
||||
|
||||
|
|
@ -95,141 +75,115 @@ def _est_superficiel(depot: Path) -> bool:
|
|||
|
||||
|
||||
def _historique(depot: Path, dossier: str) -> tuple[dict, dict]:
|
||||
"""Rend deux tables chemin → date ISO : dernière écriture, et première.
|
||||
"""Retourne (dernière modification, date de création) par chemin actuel.
|
||||
|
||||
`git log` remonte le temps : la première date vue pour un fichier est la plus
|
||||
récente, la dernière est celle de sa création.
|
||||
Le journal est parcouru du plus récent au plus ancien. Les renommages sont suivis
|
||||
— pour rattacher l'histoire d'un article déplacé à son chemin actuel — mais ne
|
||||
comptent pas comme une modification.
|
||||
"""
|
||||
sortie = _git(
|
||||
depot, "log", "--no-merges", "-M", "--name-status", "--format=%x01%aI",
|
||||
"--", dossier,
|
||||
depot, "log", "--no-merges", "-M", "--name-status",
|
||||
"--format=%x01%aI", "--", dossier,
|
||||
)
|
||||
|
||||
modifiees: dict[str, str] = {}
|
||||
creees: dict[str, str] = {}
|
||||
alias: dict[str, str] = {} # chemin d'alors -> chemin actuel
|
||||
modifiees: dict[str, str] = {} # chemin actuel -> date de la dernière modification
|
||||
creees: dict[str, str] = {} # chemin actuel -> date de création
|
||||
date = ""
|
||||
|
||||
for ligne in sortie.splitlines():
|
||||
if ligne.startswith("\x01"):
|
||||
date = ligne[1:].strip()
|
||||
continue
|
||||
if not ligne or not date:
|
||||
if not ligne.strip() or not date:
|
||||
continue
|
||||
|
||||
champs = ligne.split("\t")
|
||||
statut = champs[0]
|
||||
if statut.startswith("R"): # renommage : le contenu n'a pas bougé
|
||||
|
||||
if statut.startswith("R") and len(champs) >= 3:
|
||||
ancien, nouveau = champs[1], champs[2]
|
||||
alias[ancien] = alias.pop(nouveau, nouveau)
|
||||
continue
|
||||
chemin = champs.pop()
|
||||
|
||||
chemin = alias.get(champs[-1], champs[-1])
|
||||
if not chemin.endswith(".md"):
|
||||
continue
|
||||
|
||||
modifiees.setdefault(chemin, date)
|
||||
if statut == "A":
|
||||
creees[chemin] = date # on remonte le temps : le dernier vu est le bon
|
||||
if statut.startswith("A"):
|
||||
creees[chemin] = date
|
||||
if statut.startswith(("A", "M")):
|
||||
modifiees.setdefault(chemin, date)
|
||||
|
||||
return modifiees, creees
|
||||
|
||||
|
||||
def _autoriser_la_lecture_croisee(site_dir: Path, fichiers: list[str]) -> None:
|
||||
"""Pose l'en-tête CORS sur les seuls fichiers qui en ont besoin.
|
||||
|
||||
Ils sont lus depuis alpinux.org : sans cet en-tête, le navigateur refuse la
|
||||
réponse et la section reste masquée. Le bloc s'ajoute à un `.htaccess` déjà là
|
||||
plutôt que de le remplacer — on ne sait pas ce qu'il porte d'autre — et n'est
|
||||
écrit que pour les fichiers qui n'y figurent pas encore.
|
||||
"""
|
||||
fichier = site_dir / ".htaccess"
|
||||
existant = fichier.read_text(encoding="utf-8") if fichier.exists() else ""
|
||||
|
||||
manquants = [nom for nom in fichiers if nom not in existant]
|
||||
if not manquants:
|
||||
return
|
||||
|
||||
bloc = "<IfModule mod_headers.c>\n"
|
||||
for nom in manquants:
|
||||
bloc += (
|
||||
f' <Files "{nom}">\n'
|
||||
' Header set Access-Control-Allow-Origin "*"\n'
|
||||
" </Files>\n"
|
||||
)
|
||||
bloc += "</IfModule>\n"
|
||||
|
||||
separateur = "\n" if existant and not existant.endswith("\n") else ""
|
||||
fichier.write_text(existant + separateur + bloc, encoding="utf-8")
|
||||
|
||||
|
||||
def on_post_build(config):
|
||||
site_dir = Path(config["site_dir"])
|
||||
docs_dir = Path(config["docs_dir"])
|
||||
depot = docs_dir.parent
|
||||
dossier = docs_dir.name
|
||||
|
||||
try:
|
||||
modifiees, creees = _historique(depot, docs_dir.name)
|
||||
modifiees, creees = _historique(depot, dossier)
|
||||
except (OSError, subprocess.SubprocessError) as erreur:
|
||||
log.info("derniers-articles : historique git illisible (%s), fichier non écrit",
|
||||
erreur)
|
||||
log.info("derniers-articles : historique git illisible (%s), fichier non écrit", erreur)
|
||||
return
|
||||
|
||||
if _est_superficiel(depot):
|
||||
log.info("derniers-articles : clone superficiel, les dates ne sont pas fiables")
|
||||
|
||||
seuil = datetime.now(timezone.utc) - timedelta(days=JOURS_NOUVEAU)
|
||||
pages = []
|
||||
limite = datetime.now(timezone.utc) - timedelta(days=JOURS_NOUVEAU)
|
||||
articles = []
|
||||
|
||||
for chemin, modifiee in modifiees.items():
|
||||
prefixe = docs_dir.name + "/"
|
||||
if not chemin.startswith(prefixe):
|
||||
continue
|
||||
src_uri = chemin[len(prefixe):]
|
||||
for chemin, date in modifiees.items():
|
||||
source = chemin[len(dossier) + 1:] if chemin.startswith(dossier + "/") else chemin
|
||||
page = _pages.get(source)
|
||||
if page is None or source in EXCLUS or source not in _dans_la_nav:
|
||||
continue # page supprimée, hors navigation, ou volontairement écartée
|
||||
|
||||
page = _pages.get(src_uri)
|
||||
if page is None or Path(src_uri).name in EXCLUS or src_uri not in _dans_la_nav:
|
||||
continue
|
||||
|
||||
creee = creees.get(chemin, modifiee)
|
||||
creation = creees.get(chemin, date)
|
||||
try:
|
||||
nouveau = datetime.fromisoformat(creee) >= seuil
|
||||
nouveau = datetime.fromisoformat(creation) >= limite
|
||||
except ValueError:
|
||||
nouveau = False
|
||||
|
||||
pages.append({
|
||||
"titre": page["titre"],
|
||||
"url": page["url"],
|
||||
"date": creee if nouveau else modifiee,
|
||||
"nouveau": nouveau,
|
||||
"rubrique": _rubriques.get(src_uri, ""),
|
||||
articles.append({
|
||||
"titre": page["titre"],
|
||||
"url": page["url"],
|
||||
"date": date,
|
||||
"nouveau": nouveau,
|
||||
})
|
||||
|
||||
if not pages:
|
||||
if not articles:
|
||||
log.info("derniers-articles : aucune page datée, fichier non écrit")
|
||||
return
|
||||
|
||||
pages.sort(key=lambda page: page["date"], reverse=True)
|
||||
|
||||
genere = datetime.now(timezone.utc).replace(microsecond=0).isoformat()
|
||||
|
||||
# L'accueil lit ce fichier depuis longtemps : il garde ses quatre clés, sans la
|
||||
# rubrique dont il n'a que faire.
|
||||
recents = [
|
||||
{clef: page[clef] for clef in ("titre", "url", "date", "nouveau")}
|
||||
for page in pages[:NB_MAX]
|
||||
]
|
||||
|
||||
ecrits = {
|
||||
FICHIER_RECENTS: {"genere": genere, "articles": recents},
|
||||
FICHIER_TOUTES: {"genere": genere, "pages": pages},
|
||||
}
|
||||
articles.sort(key=lambda a: a["date"], reverse=True)
|
||||
articles = articles[:NB_MAX]
|
||||
|
||||
try:
|
||||
for nom, contenu in ecrits.items():
|
||||
texte = json.dumps(contenu, ensure_ascii=False, indent=2) + "\n"
|
||||
(site_dir / nom).write_text(texte, encoding="utf-8")
|
||||
_autoriser_la_lecture_croisee(site_dir, list(ecrits))
|
||||
(site_dir / FICHIER).write_text(
|
||||
json.dumps(
|
||||
{"genere": datetime.now(timezone.utc).isoformat(timespec="seconds"),
|
||||
"articles": articles},
|
||||
ensure_ascii=False, indent=2,
|
||||
) + "\n",
|
||||
encoding="utf-8",
|
||||
)
|
||||
|
||||
# La page d'accueil est sur un autre sous-domaine : sans cet en-tête, le
|
||||
# navigateur refuse de lui laisser lire le fichier.
|
||||
(site_dir / ".htaccess").write_text(
|
||||
"<IfModule mod_headers.c>\n"
|
||||
f' <Files "{FICHIER}">\n'
|
||||
' Header set Access-Control-Allow-Origin "*"\n'
|
||||
" </Files>\n"
|
||||
"</IfModule>\n",
|
||||
encoding="utf-8",
|
||||
)
|
||||
except OSError as erreur:
|
||||
log.info("derniers-articles : écriture impossible (%s), fichier non écrit",
|
||||
erreur)
|
||||
log.info("derniers-articles : écriture impossible (%s), fichier non écrit", erreur)
|
||||
return
|
||||
|
||||
log.info("derniers-articles : %d page(s) publiée(s) dans %s, %d dans %s",
|
||||
len(pages), FICHIER_TOUTES, len(recents), FICHIER_RECENTS)
|
||||
log.info("derniers-articles : %d article(s) publié(s) dans %s", len(articles), FICHIER)
|
||||
|
|
|
|||
23
mkdocs.yml
|
|
@ -29,6 +29,9 @@ theme:
|
|||
icon:
|
||||
repo: fontawesome/brands/git-alt
|
||||
|
||||
hooks:
|
||||
- hooks/derniers_articles.py
|
||||
|
||||
extra_css:
|
||||
- stylesheets/alpinux.css
|
||||
|
||||
|
|
@ -66,10 +69,6 @@ extra:
|
|||
|
||||
copyright: "© Alpinux — LUG de Savoie | <a href='https://portail.alpinux.org'>Portail</a>"
|
||||
|
||||
hooks:
|
||||
# Écrit derniers-articles.json, que lit la page d'accueil d'alpinux.org.
|
||||
- hooks/derniers_articles.py
|
||||
|
||||
nav:
|
||||
- Accueil: index.md
|
||||
- Contribuer:
|
||||
|
|
@ -82,19 +81,8 @@ nav:
|
|||
- alpinux/index.md
|
||||
- FAQ: alpinux/faq.md
|
||||
- Install Party: alpinux/install-party.md
|
||||
- Le site des install parties:
|
||||
- alpinux/installparty-mode-emploi.md
|
||||
- Je viens faire installer Linux: alpinux/installparty-participant.md
|
||||
- J'aide comme bénévole: alpinux/installparty-benevole.md
|
||||
- J'organise une install party: alpinux/installparty-organisateur.md
|
||||
- Présentations passées: alpinux/presentations.md
|
||||
- Événements & RDV: alpinux/evenements.md
|
||||
- Messagerie et listes:
|
||||
- alpinux/messagerie.md
|
||||
- S'abonner et se désabonner: alpinux/messagerie-abonnement.md
|
||||
- Écrire et recevoir des messages: alpinux/messagerie-membre.md
|
||||
- Gérer une liste de diffusion: alpinux/messagerie-gestionnaire.md
|
||||
- Vos données, vos adresses, nos envois: alpinux/donnees-personnelles.md
|
||||
- Présentations:
|
||||
- presentations/libreoffice.md
|
||||
- presentations/kicad.md
|
||||
|
|
@ -119,9 +107,6 @@ nav:
|
|||
- technique/matrix.md
|
||||
- technique/arduino-ide.md
|
||||
- technique/serveur-debian-13.md
|
||||
- technique/serveur-install-party.md
|
||||
- technique/bigbluebutton.md
|
||||
- technique/ateliers.md
|
||||
- Communication:
|
||||
- communication/index.md
|
||||
- Liens et codes QR: communication/liens-et-codes-qr.md
|
||||
- Communication: communication/index.md
|
||||
|
|
|
|||