# \[apt\] sl-test / script d'analyse des fichiers sources apt

**URL:** <https://www.debian-fr.org/t/apt-sl-test-script-danalyse-des-fichiers-sources-apt/92603>\
**Category:** Trucs et Astuces\
**Tags:** script, apt\
**Created:** [Juillet 29, 2026, 7:19 UTC](https://www.debian-fr.org/t/apt-sl-test-script-danalyse-des-fichiers-sources-apt/92603 "2026-07-29T19:19:59Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![Verner](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/v/34f0e0/32.png) [@Verner](https://www.debian-fr.org/u/Verner)\
**Post date:** [Juillet 29, 2026, 7:19 UTC](https://www.debian-fr.org/t/apt-sl-test-script-danalyse-des-fichiers-sources-apt/92603/1 "2026-07-29T19:19:59Z")

</div>

# sl-test

* * *

**Description** :

**sl-test** est un outil de diagnostique des fichiers sources apt au format ‹&nbsp;\*.list&nbsp;›, et ‹&nbsp;\*.sources&nbsp;› (DEB822). Par défaut, **sl-test** liste les fichiers list/sources actifs ou non, teste les domaines associés ainsi que leur éventuel redirection.

**sl-test** détecte aussi les lignes ‹&nbsp;pseudo-vides&nbsp;› (contenant des espaces) des fichiers multi-sources, cause de dysfonctionnement apt difficile à diagnostiquer, signalé par "` |◄ !!`" (_avertissement seulement, sans correction_) et fichier(s) concerné(s).

**Options** :  
&nbsp;&nbsp; **-c** , **–content** : liste le contenu numéroté des lignes non commentées des fichiers list/sources  
&nbsp;&nbsp; **-e** , **–enabled** : liste les [domaines + branches] uniquement activés, et teste leur éventuel redirection.

**sl-test** 20260822

```auto
#!/bin/bash
# sl-test : liste des fichiers source apt + test domaines # 20260822 #
grep -lm1 '^ ' /etc/apt/s*d/*s && \
  printf '\e[38;5;215m !! lignes commençant pas un espace à corriger !!\e[m\n'

if [[$1 == *c*]] ; then
  for F in $(grep -slm1 '^[dU]' /etc/apt/s*{t,d/*[st]}) ; do
    printf "%0.s―" {1..23}
    printf "\n${F%/*}/\e[38;5;85m${F##*/}\e[m\n"
    mawk '!/#/{sub("^ "," |◄ !!")
          printf "\x1b[38;5;228m%3d\x1b[m %s\n",NR,$0}' $F
  done ; exit
fi

R="$(for F in $(grep -sl '^d' /etc/apt/s*{t,*d/*t}) ; do printf "${F##*/}\n"
     sed '/^deb /!d;s~.*//~~;s~/[^]*~~' $F ; done
  for F in $(grep -sl '^U' /etc/apt/s*d/*.sources ) ; do printf "${F##*/}\n"
   mawk -v n=$(sed -n $= $F) '/^U/{gsub("h.*//|/.*","");u=$2};/^Su/{s=$2}
   /^C/{$1="";c=$0}/^E.*no/{e="N"}{if((/^$/)||(NR==n)){print u,s,c,e;e=""}}' $F
  done)"

if [[$1 == *e*]] ; then e=N
     printf "$R" |sort| mawk 'NF>1{if($0!~"N"){printf " %-30s",$1; $1="";print $0}}'
else printf "$R" | mawk '{if(NF==1){printf "\x1b[1;32m%s\x1b[m\n",$1}
           if(NF>1){sub("N","");printf " %-30s",$1; $1="";print $0}}'
     e=X
fi
echo
while read H ; do printf "\e[38;5;117m %-38s\e[m" $H
 ping -c1 $H | \
 mawk 'NR==1{if($2!=h)printf "\n ↳ %-35s",$2}/%/{print (/0%/?": OK":": ?")}' h=$H
done < <(printf "$R" |sed "/$e/d" | mawk 'NF>1{print $1}' |sort -u)
echo
exit 0

```

Exemple:

 ![sl-test-20260822](https://www.debian-fr.org/uploads/default/original/2X/5/539de916bb060ff7f160dc220793bcbefe4a6c3c.png)

Test exclusivement des sources actives (option **-e** ):

![sl-test_20260822_114818](https://www.debian-fr.org/uploads/default/original/2X/3/31c084af219bee4096c81400bb653a9a357d94ce.png)

Contenu des fichiers sources (option **-c** )

 ![sl-test-c](https://www.debian-fr.org/uploads/default/original/2X/2/2b253d69386082a8eac1392c3da3d36b93cdbee3.png)

* * *

**Note** : afin que ce fil ne devienne pas une demande de support général, ou demande d’explication sur du code bash, je suggère que toute question/observation soit adressée @[Commentaires sur sl-test](https://www.debian-fr.org/t/commentaires-sur-sl-test/92610). Ce sujet est exclusivement réservé aux utilisateurs de sl-test qui auraient un ‹&nbsp;vrai bug&nbsp;› à signaler, démonstration factuelle à l’appui, ou une suggestion d’amélioration fonctionnelle.

---

<div class="post-metadata">

**Author:** ![vbreton](https://www.debian-fr.org/user_avatar/www.debian-fr.org/vbreton/32/11400_2.png) [@vbreton](https://www.debian-fr.org/u/vbreton)\
**Post date:** [Juillet 30, 2026, 12:16 UTC](https://www.debian-fr.org/t/apt-sl-test-script-danalyse-des-fichiers-sources-apt/92603/2 "2026-07-30T00:16:22Z")

</div>

Bonsoir @Verner,

> [@Verner](#):
>
> `L=$(ls -1 /etc/apt/s*{t,.d/*[st]} 2>/dev/null)`

Cette ligne serait à remplacer par une ligne telle que celle-ci qui rejette plus de fichiers et de dossiers. Sans cela, l’ajout de certains noms de répertoires ou de fichiers viendrait perturber votre script d’analyse en générant des faux positifs.

> `L=$(ls -1 /etc/apt/sources.list{,.d/*{.sources,.list}} 2>/dev/null)`

---

<div class="post-metadata">

**Author:** ![Verner](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/v/34f0e0/32.png) [@Verner](https://www.debian-fr.org/u/Verner)\
**Post date:** [Juillet 30, 2026, 6:35 UTC](https://www.debian-fr.org/t/apt-sl-test-script-danalyse-des-fichiers-sources-apt/92603/3 "2026-07-30T18:35:45Z")

</div>

«&nbsp;_serait, viendrait_…&nbsp;» Message qui n’a pas sa place ici (= à supprimer) puisque ne répond pas à la définition d’un bug (voir Note), mais donne l’occasion d’ouverture du sujet [Commentaires sur sl-test](https://www.debian-fr.org/t/commentaires-sur-sl-test/92610) où la réponse détaillée d’hypothèse théorique à probabilité nulle aura sa place, et où la définition d’un ‹&nbsp;bug&nbsp;› sera rappelée.

MAJ 202607 **30** (1er message)  
Formatage de sortie plus compact permettant de mieux identifier les redirections de domaine dans le cas de longue liste de fichiers sources.

---

<div class="post-metadata">

**Author:** ![vbreton](https://www.debian-fr.org/user_avatar/www.debian-fr.org/vbreton/32/11400_2.png) [@vbreton](https://www.debian-fr.org/u/vbreton)\
**Post date:** [Juillet 31, 2026, 10:22 UTC](https://www.debian-fr.org/t/apt-sl-test-script-danalyse-des-fichiers-sources-apt/92603/4 "2026-07-31T22:22:22Z")

</div>

> [@Verner](#):
>
> la remontée de ‹ vrais › bugs ou dysfonctionnements

J’ai relaté un dysfonctionnement et proposé une amélioration. Un bogue pour parler français. «&nbsp;Serait, viendrait&nbsp;» invite et n’impose pas. Il n’en reste pas moins vrai que l’expression régulière dans le script est à remplacer pour la corriger. Mon message n’est donc pas à supprimer comme vous l’écrivez, au regard du seul titre et du soin particulier visant à résoudre des erreurs notables dans le script.

Déclarer que l’ **hypothèse est théorique et que sa probabilité est nulle** sans argument réel et sérieux revient à discréditer et donc à exclure des messages pertinents. Cela laisse ainsi supposer à tort que le script n’a pas de bogue, ce qui n’est pas le cas.

Rappelons la définition de bogue (Larousse): Défaut de **conception** ou **de réalisation** d’un programme informatique, qui se manifeste par des anomalies de fonctionnement de l’ordinateur.

Certains bogues nécessitent davantage de réflexion que d’autres qui ne peuvent être résolus que par une communication et des échanges de qualité et qui ont toutes leur place ici, et non pas par un transfert ou un renvoi dans une section pause café.

---

<div class="post-metadata">

**Author:** ![Thierz](https://www.debian-fr.org/user_avatar/www.debian-fr.org/thierz/32/15124_2.png) [@Thierz](https://www.debian-fr.org/u/Thierz)\
**Post date:** [Août 3, 2026, 12:26 UTC](https://www.debian-fr.org/t/apt-sl-test-script-danalyse-des-fichiers-sources-apt/92603/5 "2026-08-03T12:26:26Z")

</div>

> [@Verner](#):
>
> **option** :  
> `-e,--enabled :` ne teste que les fichiers sources non désactivés par une première ligne ‹ **Enabled: no** › du fichier source au format DEB822.

Je pense qu’il faudrait améliorer ceci, car dans la specification du format DEB822, la ligne `Enabled` n’est pas nécessairement en début de pavé, elle peut être ailleurs (moi par exemple c’est en bas).

---

<div class="post-metadata">

**Author:** ![Verner](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/v/34f0e0/32.png) [@Verner](https://www.debian-fr.org/u/Verner)\
**Post date:** [Août 3, 2026, 1:26 UTC](https://www.debian-fr.org/t/apt-sl-test-script-danalyse-des-fichiers-sources-apt/92603/6 "2026-08-03T13:26:22Z")

</div>

Bonne remarque partagée prise en compte dans la version à venir qui intégrera aussi une détection des lignes ‹&nbsp;pseudo-vides&nbsp;› des fichiers multi-sources causant un dysfonctionnement particulièrement difficile à diagnostiquer, et qui ajoutera une fonction.  
En attendant, je propose du supprimer les échanges suivants relatifs au sujet VLC ayant servi d’argumentation qui auraient plutôt dû prendre place dans le sujet ‹&nbsp;commentaires sl-test&nbsp;›.  
Merci de la contribution de chacun pour maintenir ce fil le plus propre possible.

---

<div class="post-metadata">

**Author:** ![Thierz](https://www.debian-fr.org/user_avatar/www.debian-fr.org/thierz/32/15124_2.png) [@Thierz](https://www.debian-fr.org/u/Thierz)\
**Post date:** [Août 3, 2026, 2:17 UTC](https://www.debian-fr.org/t/apt-sl-test-script-danalyse-des-fichiers-sources-apt/92603/7 "2026-08-03T14:17:39Z")

</div>

> [@Verner](#):
>
> lorsque apt convertit les fichiers list en sources (Modernized from /etc/apt/sources.list / deb822), il place la ligne ‹ Enabled: yes/no › en fin des blocs

Pas tout à fait : en réalité le conversion chez moi n’a pas mis la ligne `Enabled`, c’est moi qui l’ai rajoutée à la mano en me disant que ce serait sûrement utile un jour. L’absence de ligne `Enabled` est considérée comme `Enabled: yes`.

---

<div class="post-metadata">

**Author:** ![Thierz](https://www.debian-fr.org/user_avatar/www.debian-fr.org/thierz/32/15124_2.png) [@Thierz](https://www.debian-fr.org/u/Thierz)\
**Post date:** [Août 3, 2026, 2:24 UTC](https://www.debian-fr.org/t/apt-sl-test-script-danalyse-des-fichiers-sources-apt/92603/8 "2026-08-03T14:24:40Z")

</div>

> [@Verner](#):
>
> depuis t’avoir aidé dans ton sujet VLC

D’ailleurs ça me fait penser, c’est utile que le script sache détecter une suspicion de pavés mal séparés, comme ça m’était arrivé. Ça serait chaud à implémenter, peut-être qu’il faudrait détecter la présence anormale de plusieurs lignes concurrentes dans chaque pavé, mais très utile pour la personne qui s’arrache les cheveux sans comprendre ce qui se passe.

---

<div class="post-metadata">

**Author:** ![Thierz](https://www.debian-fr.org/user_avatar/www.debian-fr.org/thierz/32/15124_2.png) [@Thierz](https://www.debian-fr.org/u/Thierz)\
**Post date:** [Août 3, 2026, 2:49 UTC](https://www.debian-fr.org/t/apt-sl-test-script-danalyse-des-fichiers-sources-apt/92603/10 "2026-08-03T14:49:49Z")

</div>

> [@Verner](#):
>
> Ce fichier Debian multi-sources mélangé aux mono-source complique le traitement de manière non négligeable

Certes, mais c’est l’outil de migration des sources qui m’a fait ce fichier unique, donc je ne dois pas être seul dans ce cas. Il vaut mieux que ton script s’adapte aux utilisateurs plutôt que l’inverse.

---

<div class="post-metadata">

**Author:** ![Verner](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/v/34f0e0/32.png) [@Verner](https://www.debian-fr.org/u/Verner)\
**Post date:** [Août 15, 2026, 10:39 UTC](https://www.debian-fr.org/t/apt-sl-test-script-danalyse-des-fichiers-sources-apt/92603/12 "2026-08-15T10:39:15Z")

</div>

NOTE d’information de ce sujet et [Commentaires sur sl-test](https://www.debian-fr.org/t/commentaires-sur-sl-test/92610) mises à jour.

* * *

**Mise à jour** sl-test 20260815

Différences 202608 **15** / 202608 **06**  
\* ajout numéro lignes option **-c** , en précisant que les lignes uniquement non commentées des fichiers sources sont listées.

\* La détection des lignes ‹&nbsp;pseudo-vides&nbsp;› est faite quelque-soit l’option.

* * *

**Mise à jour** sl-test 20260822 (1er message)

\* technique interne: abandon de l’usage d’apt-cache (= process trop lourd)  
\* fonctionnement plus léger
