Historique: de apt_perf à apt-test
Un script apt_perf a déjà été proposé début 2023 dans le sujet [apt] Dépôts Debian (qui pose des difficultés de maintenance pour raison d’ancienneté, remarque secondaire qui sera traitée plus tard)
Plutôt que de faire évoluer apt_perf un peu perdu dans cet ancien fil, je propose de l’extraire en le renommant apt-test (nom en analogie à [apt] sl-test / script d’analyse des fichiers sources apt).
apt-test
Description:
apt-test teste la performance d’accès aux miroirs Debian par chargement d’un fichier, donnant un résultat plus représentatif que d’autres outils n’analysant qu’un retour de ping, une valeur de ping n’étant pas nécessairement proportionnelle au débit de téléchargement d’un serveur.
apt-test 20260815
#!/bin/bash
# apt-test : mesure performance dépôts apt Debian fr » 20260815 «
ping -c1 -W1 example.com >/dev/null || { echo 'Réseau inaccessible'; exit 1;}
L=(debian.{proxad.net,mirrors.ovh.net,obspm.fr,polytech-lille.fr} \
ftp.{fr.debian.org,ec-m.fr,rezopole.net,univ-pau.fr,u-picardie.fr,u-strasbg.fr} \
ftp.lip6.fr/pub/linux/distributions {cdn-aws.,}deb.debian.org apt.tetaneutral.net \
mirror.{abaclouda.net,gitoyen.net,debian.ikoula.com,johnnybegood.fr,plusserver.com} \
miroir.univ-lorraine.fr cdn-fastly.deb.debian.org deb-mir1.naitways.net)
LC_ALL=C ; T0=${EPOCHREALTIME} ; n=${#L[@]} ; i=0 ; R=
for H in ${L[@]} 'sec.' ; do h=${H%%/*} ; ((i==n && i--)) ; a=down
printf "\r\e[1;37m %-24s\e[0;32m[%2d/%2d]\e[m %-30s" 'Test sites Debian' $((++i)) $n $h
((${#H}==4)) && break || x=${EPOCHREALTIME}
curl -s --connect-timeout 2.2 http://$H/debian/dists/stable/Release >/dev/null && \
a=$(mawk -v x=$x -v y=${EPOCHREALTIME} 'BEGIN{d=y-x;if(d>2){printf ">2"}else{printf "%1.3f",d}}')
R+="$a $h\n"
done ; echo
printf "$R" |sort| mawk '{printf "%3d %-28s%s\n",++i,$2,$1}
END{printf "%31s: %3.3f\n","Temps d\x27exécution",y-x}' x=$T0 y=${EPOCHREALTIME}
exit 0
apt-test 20260811
#!/bin/bash
# apt-test : mesure performance dépôts apt Debian fr » 20260811 «
ping -c1 -W5 1.1.1.1 >/dev/null || { echo ' Réseau inaccessible'; exit 1;}
i=0 ; R=
for H in debian.{proxad.net,mirrors.ovh.net,obspm.fr,polytech-lille.fr} \
ftp.{fr.debian.org,ec-m.fr,rezopole.net,univ-pau.fr,u-picardie.fr,u-strasbg.fr,lip6.fr/pub/linux/distributions} \
{cdn-aws.,}deb.debian.org miroir.univ-lorraine.fr apt.tetaneutral.net ‒ ; do
h=${H%%/*} ; ((i==15 && i--))
printf "\r\e[1;37m %-24s\e[0;32m[$((++i))/15]\e[m %-30s" 'Test sites Debian' $h
[ $H == ‒ ] || { ping -c1 -W2 $h >/dev/null 2>&1 && \
R+="$((time curl -s --connect-timeout 3 http://$H/debian/dists/stable/Release{,}) 2>&1 | \
mawk -F'm' '/^r/{print $2}') $h\n" || R+="no-ping $h\n";}
done ; echo
printf "$R" |sort| mawk '$2~/./{printf "%3d %-28s%s\n",++i,$2,$1}'
exit
apt-test 20260808-2
#!/bin/bash
# apt-test : mesure performance dépôts apt Debian fr » 20260808-2 «
if ! ping -c1 -W5 1.1.1.1 >/dev/null; then # test accès réseau
echo ' Réseau inaccessible'
exit 1
fi
if ! grep -qs proxad ${l:=/dev/shm/_mirror-list} ; then
echo ' Recherche liste miroirs Debian'
curl -s --retry-delay 5 --retry-max-time 5 'https://www.debian.org/mirror/list' |\
sed -n '/<tr.*Fr/,/<tr.*<hr/{/http/{/de\//d;s~.*//~~;s~".*~~;p}}' > $l
printf "%s\n%s\n%s\n★\n" {deb,cdn-fastly.deb,cdn-aws.deb}.debian.org/debian/ >> $l
fi
P=$(mawk '/^F.*c.cron.cron_/{print $2;exit}' /var/lib/apt/lists/*main_binary*s)
n=$(mawk '{i++;next}END{print i-1}' $l); i=0 ; R=
while read H ; do ((i==n)) && i=$((--i))
printf "\r\e[1;37m Test sites Debian apt \e[0;32m[$((++i))/$n]\e[m %-26s" "${H%%/*}"
((${#H}==1)) && break
if ping -c1 -W5 ${H%%/*} >/dev/null ; then
R+="$((time wget -t1 -T5 --no-dns-cache http://${H}$P -O /dev/null) 2>&1 | \
mawk -F'm|\.|,' '/^r/{printf ($2>4)?"5+":$2","$3}') ${H%%/*}\n"
else
R+="no-ping ${H%%/*}\n"
fi
done < $l
printf "\n\n"
printf "$R" |sort| mawk 'BEGIN{i=1}($2!=""){printf "%3d %-28s%s\n",i++,$2,$1}'
echo
for H in {ftp.fr,deb}.debian.org
do ping -c1 $H | mawk '{printf "%18s -> %-24s\n",h,$2;exit}' h=$H
done
exit
Exemple de sortie:

Remarque: il arrive que des miroirs Debian ne soient pas accessibles pour raisons techniques temporaires. Ce n’est donc pas parce-que le réseau global d’un PC est parfaitement fonctionnel, qu’apt ne peut pas être bloqué, ce qui conduit à de mauvaises interprétations (vu dans un sujet récent).
Avec sl-test qui teste les dépôts usagers ainsi que l’état des domaines à accéder, apt-test + sl-test sont deux outils complémentaires qui permettront une analyse sans faille d’apt dont le réseau est bloqué, alors que le réseau global ne l’est pas.
!! NOTE !!: étant blasé/saturé des intervenants qui ne peuvent s’empêcher à peine un sujet ouvert d’intervenir pour raconter ce que pense ‹ Chatgpt › ou équivalent, et de ne pas transformer rapidement ce sujet en troll ou poubelle comme on le voit parfois, merci de respecter un minimum les lieux, dans l’intérêt des usagers Debian.
