Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
materiel:logicos:start [2026/07/29 15:52]
vitally-u44
materiel:logicos:start [2026/08/23 17:08] (Version actuelle)
vitally-u44 [1. Télécharger le script]
Ligne 104: Ligne 104:
  
 ==== Logiciels de print ==== ==== Logiciels de print ====
- 
 ^ Nom (et lien vers la page de ce wiki) ^ Origine (lien projet) ^ Version ^ Type d'​installation ^ ^ Nom (et lien vers la page de ce wiki) ^ Origine (lien projet) ^ Version ^ Type d'​installation ^
-| [[https://​lesporteslogiques.net/​wiki/​materiel/​imprimante_thermique_brother_ql-570|ql570]] |  |  |  +<del>[[https://​lesporteslogiques.net/​wiki/​materiel/​imprimante_thermique_brother_ql-570|ql570]]</​del> ​|  |  | retiré des postes — voir [[#​desinstaller_l_ancienne_stickeuse_ql-570_des_op_xx|le nettoyage]] ​
-| Stickeuse ​QL570    |+| [[materiel:​logicos:​guideql570|Stickeuse ​QL-570]] ​[[https://​github.com/​lesporteslogiques/​stickeuse|origine]] ​v1.0 ''​install.sh''​ (dépôt) | 
 +[[materiel:​logicos:​guideql570|Guide d'​utilisation de Stickeuse QL-570]]
  
-[[materiel:logicos:​guideql570|Guide d'​utilisation de StickeuseQL570]]+Le lien vers la page matériel de l'​imprimante : [[materiel:imprimante_thermique_brother_ql-570|Brother QL-570]].
 ==== Logiciels de vidéo / création vidéo ==== ==== Logiciels de vidéo / création vidéo ====
  
Ligne 317: Ligne 317:
   * Ajouter Anaouder   * Ajouter Anaouder
  
-===== Désinstaller l'​ancienne Stickeuse QL-570 des OP[XX] ​(image de janvier 2026) =====+===== Désinstaller l'​ancienne Stickeuse QL-570 des OP[XX] =====
  
-//Protocole établi le 29 juillet 2026 — script ​version ​1.1.//+Les OP[XX] portent une ancienne ​version ​de la Stickeuse, venue de l'​image clonée de 
 +janvier 2026La retirer **avant** d'​installer la version actuelle.
  
-**Périmètre** ​— les ordinateurs portables **OP[XX]** des Portes Logiques.+Il faut le mot de passe root — le demander à Pierre.
  
-**Qui l'​applique** — Pierre, ou toute personne qu'il habilite. L'​opération exige les +==== 1Télécharger le script ====
-droits root et intervient dans les dossiers personnels de **tous** les comptes du +
-poste : elle ne s'​improvise pas.+
  
-Les OP[XX] ont été déployés par **clonage**,​ par Jérôme (Jejy), en décembre 2025 / +[[https://​lesporteslogiques.net/wiki/_export/code/materiel/logicos/start?​codeblock=6|nettoyage_stickeuse.txt]]
-janvier 2026L'​**ancienne** version de la Stickeuse figurait dans l'​image clonée : +
-elle est donc présente sur tous les postes issus de ce déploiement,​ **aux mêmes +
-emplacements** — ''​/opt/stickeuse_ql570'',​ ''​~/bin/stickeuse_ql570'',​ +
-''​~/.gitdl/ql570'',​ l'​icône et les deux lanceurs. Elle n'a pas de désinstalleur +
-fiable.+
  
-Un poste peut s'​écarter de ce motif s'il a reçu des installations manuelles +Le fichier arrive dans le dossier **Téléchargements**.
-ultérieures : OP42, poste de développement,​ porte en plus une règle udev, une +
-entrée d'​autostart et un binaire dans ''/​usr/​local/​bin''​. ​Le script couvre les deux +
-cas.+
  
-Il faut la retirer **avant** d'installer la version actuelle, sinon les deux se +Le code du script est reproduit en bas de page, pour qui veut le lire avant de 
-marchent dessus : deux entrées de menu portant le même nom, un agent fantôme +l'exécuter. 
-relancé à chaque ouverture de session, une règle udev obsolète.+==== 2. Ouvrir ​un terminal ====
  
-Ordre : **nettoyer, puis installer**.+''​Ctrl''​ + ''​Alt''​ + ''​T''​.
  
-  * Version actuelle de l'​appli : [[https://​github.com/​lesporteslogiques/​stickeuse|dépôt lesporteslogiques/​stickeuse]]+==== 3Taper les commandes ====
  
-==== Utilisation ====+Une ligne à la fois, en validant chacune par ''​Entrée''​.
  
-Télécharger ​le script ci-dessouspuis, sur le poste à nettoyer :+Pour coller une commande dans le terminal : **''​Ctrl''​ + ''​Maj''​ + ''​V''​** — 
 +''​Ctrl''​ + ''​V''​ ne fonctionne pas iciet ne produit aucun message d'​erreur.
  
 <code bash> <code bash>
 su - su -
-cd /​chemin/​vers/​le/​script 
-bash nettoyage_stickeuse.sh -n     # inventaire seul, ne supprime rien 
-bash nettoyage_stickeuse.sh ​       # supprime, après confirmation 
 </​code>​ </​code>​
  
-Pas besoin ​de ''​chmod +x'' ​lancer ​par ''​bash nom_du_script'' ​suffit.+Demande le mot de passe **root** — pas celui de la session. Rien ne s'affiche 
 +pendant la saisie : c'est normal. En cas de refus, le mot de passe est faux : 
 +le demander à Pierre. Quand ça marche, la ligne devant le curseur se termine 
 +par ''​#''​.
  
-^ Option ^ Effet ^ +<code bash> 
-| ''​-n'',​ ''​%%--%%inventaire-seul''​ | Affiche ce qui serait supprimé, puis s'​arrête. | +cd /​home/​lesporteslogiques/​Téléchargements 
-| ''​-y'',​ ''​%%--%%oui''​ | Ne demande pas confirmation. Pour enchaîner les postes. | +</​code>​
-| ''​%%--%%avec-pip''​ | Désinstalle aussi la bibliothèque Python ''​brother_ql''​. | +
-| ''​-h'',​ ''​%%--%%aide''​ | Affiche l'aide intégrée. |+
  
-==== Ce qu'il fait ====+Se place dans le dossier où le script a été téléchargé. Chemin complet 
 +obligatoire : root n'habite pas dans le dossier de l'​utilisateur. Si le message 
 +''​Aucun fichier ou dossier de ce type''​ apparaît, le téléchargement de 
 +l'​étape 1 n'a pas abouti, ou le fichier est ailleurs.
  
-  - **Inventaire** — cherche les traces sans rien supprimer, côté système (''/​opt/​stickeuse_ql570'',​ ''/​usr/​local/​bin/​ql570'',​ lanceurs, règles udev) et dans chaque compte de ''/​home''​ (''​bin/​stickeuse_ql570'',​ ''​.gitdl/​ql570'',​ ''​.icons'',​ ''​.config'',​ ''​.cache'',​ ''​.local/​share'',​ ''​autostart'',​ ''​Bureau'',​ ''​Desktop''​). Aucun nom de compte n'est écrit en dur. +<code bash> 
-  - **Confirmation** — affiche la liste et attend un ''​o''​Toute autre réponse annule. +bash nettoyage_stickeuse.txt -n 
-  ​**Suppression** — efface, recharge les règles udev, rafraîchit le cache des menus. +</​code>​
-  - **Vérification** — relance la recherche et annonce « Aucun reste » ou la liste de ce qui subsiste.+
  
-Chaque passage écrit un journal ''​nettoyage_<​hôte>​_<​horodatage>​.log''​ dans le +Inventaire seul : **ne supprime rien**Deux cas :
-dossier courant. Lancé depuis une clé USB, les journaux s'y accumulent ​c'est le +
-suivi du parc.+
  
-==== Garde-fou : ancienne ​ou nouvelle version ? ====+  * ''​Aucune trace de l'ancienne ​Stickeuse sur ce poste.''​ — le poste est propre. Ne pas lancer la commande suivante : vous pouvez taper ''​exit''​ pour refermer la session root, c'est terminé et vous fermez et rouvrez la session du poste et vous pouvez installer l'​application à partir du dépot GitHub 
 +  * ''​N élément(s) à supprimer :''​ suivi de la liste — c'est ce qui sera effacé. Poursuivre avec la commande suivante.
  
-Le script s'​appuie sur la ligne ''​Exec='' ​des fichiers ​''​.desktop'', ​qui indique +La ligne ''​brother_ql (pip) : présent — CONSERVÉ'' ​peut s'ajouter à l'un ou 
-le programme réellement lancé :+l'autre : c'est une bibliothèque partagée avec d'​autres usages du posteque le 
 +script laisse volontairement en place. Ne rien faire.
  
-^ ''​Exec=''​ pointe vers ^ Version ^ Décision ^ +<code bash> 
-| ''/​opt/​stickeuse_ql570/​…''​ ou ''/​usr/​local/​bin/​ql570''​ | ancienne | supprimé | +bash nettoyage_stickeuse.txt 
-| ''/​opt/​ql570/​venv/​bin/python …''​ | nouvelle | conservé et signalé |+</code>
  
-La nouvelle version n'est **jamais** supprimée.+Cette fois, supprime. ​La liste s'affiche à nouveau, puis la question 
 +''​Supprimer les éléments ci-dessus ? [o/​N]''​ : répondre ''​o''​ puis ''​Entrée''​. 
 +Toute autre réponse annule sans rien toucher.
  
-==== Le cas brother_ql ====+Le script vérifie ensuite son travail et conclut par l'un des deux messages :
  
-''​brother_ql'' ​est la bibliothèque Python qui pilote les imprimantes QLInstallée +  * ''​Aucun reste. Poste OPxx propre.'' ​— nettoyage complet
-par ''​pip'' ​en root dans ''/​usr/​local'', ​elle est **partagée ​par tout le poste**. +  ​* ​''​Restes à examiner :'' ​suivi d'une liste — des fichiers dont le nom contient « stickeuse » ou « ql570 » existent ailleurs sur le disque. Le plus souvent, ce sont des documents personnels ou des fichiers en corbeille, sans rapport avec l'ancienne version : le script ne les touche pas, par prudenceCe n'est pas bloquant. Taper ''​exit'', ​l'installation de la nouvelle ​version ​peut se faire. 
-Elle n'appartient ​pas à l'ancienne ​version ​— celle-ci passait par un binaire C +<code bash> 
-compilé.+exit 
 +</​code>​
  
-Sur OP60, elle est datée du **8 janvier 2026**, soit dans la fenêtre du clonage : +Referme ​la session rootLa ligne devant ​le curseur redevient normale.
-elle vient donc probablement de l'​image,​ et non d'un usage personnelSi la même +
-date se retrouve sur les autres postes, l'​hypothèse se confirme et +
-''​%%--%%avec-pip''​ devient ​le passage par défaut. Par prudence, le script la +
-**conserve** tant que la question n'est pas tranchée, et signale seulement sa +
-présence.+
  
-==== Marche à suivre sur le parc ====+Puis **fermer et rouvrir la session** du poste : le menu ne se met à jour qu'​à 
 +ce moment-là.
  
-Les postes étant issus d'un même clonage, l'​inventaire devrait être identique de +==== Ensuite ====
-l'un à l'​autre. C'est ce qui rend le passage en série possible — et ce qu'il faut +
-vérifier d'​abord.+
  
-  - Sur les trois ou quatre premiers postes, passer en ''​-n''​ et lire l'​inventaire. Il doit être le même partout. Un écart signale une installation manuelle ultérieure ​la relever avant de continuer. +Installer la version actuelle ​[[https://​github.com/​lesporteslogiques/​stickeuse|dépôt du projet]]
-  - Une fois le motif confirmé, enchaîner les postes suivants+Les comptes des OP[XX] n'ont pas ''​sudo'' : suivre la **voie B**.
-  - Noter la date de ''​brother_ql'' ​sur ces premiers postes (voir plus haut). +
-  - Récupérer les journaux pour tenir le décompte du parc.+
  
-==== Limites connues ====+----
  
-  * **Une seule partition** — la recherche utilise ''​-xdev''​ et ne franchit pas les frontières de systèmes de fichiers. Si ''​/home''​ est sur une partition séparée (''​df -h /home /​opt''​ pour le vérifier), relancer à la main : ''​find /home -iname '​*stickeuse*'​ -o -iname '​*ql570*'​ ''​. +//Protocole ​du 29 juillet 2026révisé ​le 21 août 2026 — script ​v1.1
-  * **Emplacements connus seulement** — le script cherche dans les dossiers observés sur deux postes (OP42, poste de développement,​ et OP60, issu du clonage). Une installation posée ailleurs lui échapperaitd'​où ​le passage en ''​-n''​ sur les premiers postes. +Options avancées et fonctionnement détaillé ​: ''​bash nettoyage_stickeuse.sh -h''​.//
-  * **Fermer la session** ​— l'​affichage du menu ne se rafraîchit complètement qu'à la réouverture de session. +
-  * **Corbeille** — les fichiers déjà mis à la corbeille par un utilisateur (''​~/​.local/​share/​Trash''​) ne sont pas concernés. +
- +
-==== Récupérer le script ​==== +
- +
-Le script est publié en bas de cette pageLe bloc de code porte son nom en +
-en-tête : **cliquer dessus télécharge le fichier**Préférer ce lien au +
-copier-coller,​ qui risque d'​emporter des espaces ou de tronquer une ligne. +
- +
-Deux façons de l'​amener sur les postes ​: +
- +
-  * **Depuis le poste lui-même** — ouvrir cette page dans le navigateur du poste, télécharger,​ puis lancer depuis ​''​~/​Téléchargements''​. +
-  * **Par clé USB** — télécharger une fois, copier sur la clé, passer de poste en poste. À privilégier : les journaux s'​accumulent sur la clé et donnent le suivi du parc. +
- +
-Contrôle après téléchargement,​ avant la première utilisation : +
- +
-<​code ​bash+
-wc -l nettoyage_stickeuse.sh ​    # doit afficher 330 lignes +
-bash -n nettoyage_stickeuse.sh   # vérifie la syntaxe, n'​exécute rien +
-</code> +
- +
-Si la seconde commande ne dit rien, le fichier est intact.+
  
 ==== Le script ==== ==== Le script ====
- +  
-<file bash nettoyage_stickeuse.sh>+Auteurice : Vitally LUBIN — Les Portes Logiques, 2026. 
 +Licence : [[https://​www.gnu.org/​licenses/​agpl-3.0.html|GNU Affero General Public 
 +License v3 (AGPL-3.0)]],​ comme le reste du projet Stickeuse — et non la licence 
 +CC BY-SA du wiki (le pied de page réserve ce cas : //sauf mention contraire//​). 
 +  
 +<​accordion>​ 
 +<panel title="​nettoyage_stickeuse.txt (cliquer pour afficher le code)">​ 
 +<file bash nettoyage_stickeuse.txt>
 #​!/​usr/​bin/​env bash #​!/​usr/​bin/​env bash
 # #
 # ============================================================================ # ============================================================================
-#  nettoyage_stickeuse.sh  ​— ​ version 1.1+#  nettoyage_stickeuse.txt  ​— ​ version 1.1
 # #
 #  Retire l'​ANCIENNE Stickeuse QL-570 d'un poste OP (Les Portes Logiques). #  Retire l'​ANCIENNE Stickeuse QL-570 d'un poste OP (Les Portes Logiques).
 +#
 +#  Auteurice : Vitally LUBIN — Les Portes Logiques, 2026
 +#  Licence ​  : GNU Affero General Public License v3 (AGPL-3.0)
 +#              https://​www.gnu.org/​licenses/​agpl-3.0.html
 # #
 #  POURQUOI #  POURQUOI
Ligne 459: Ligne 435:
 #  UTILISATION RAPIDE #  UTILISATION RAPIDE
 #      su - #      su -
-#      bash nettoyage_stickeuse.sh -n     # inventaire seul, ne supprime rien +#      bash nettoyage_stickeuse.txt -n     # inventaire seul, ne supprime rien 
-#      bash nettoyage_stickeuse.sh        # inventorie, montre, demande, supprime+#      bash nettoyage_stickeuse.txt        # inventorie, montre, demande, supprime
 # #
 #  OPTIONS #  OPTIONS
Ligne 478: Ligne 454:
 #      Tout lanceur .desktop pointant vers elle est conservé et signalé. #      Tout lanceur .desktop pointant vers elle est conservé et signalé.
 # #
-#  Documentation complète : voir README.md+#  Documentation complète : 
 +#      https://​lesporteslogiques.net/​wiki/​materiel/​logicos/​start
 # ============================================================================ # ============================================================================
 + 
 # set -u : une variable non définie devient une erreur au lieu d'un vide # set -u : une variable non définie devient une erreur au lieu d'un vide
 #          silencieux. Sur un script qui fait des rm, c'est vital : « rm -rf #          silencieux. Sur un script qui fait des rm, c'est vital : « rm -rf
Ligne 489: Ligne 466:
 #  et le signaler dans le journal.) #  et le signaler dans le journal.)
 set -uo pipefail set -uo pipefail
 + 
 VERSION="​1.1"​ VERSION="​1.1"​
 HOTE="​$(hostname)" ​                       # sert à nommer le journal par poste HOTE="​$(hostname)" ​                       # sert à nommer le journal par poste
 HORODATE="​$(date +%Y%m%d-%H%M%S)"​ HORODATE="​$(date +%Y%m%d-%H%M%S)"​
 JOURNAL="​$(pwd)/​nettoyage_${HOTE}_${HORODATE}.log"​ JOURNAL="​$(pwd)/​nettoyage_${HOTE}_${HORODATE}.log"​
 + 
 # Drapeaux, modifiés plus bas par les options de la ligne de commande # Drapeaux, modifiés plus bas par les options de la ligne de commande
 INVENTAIRE_SEUL=0 INVENTAIRE_SEUL=0
 SANS_CONFIRMATION=0 SANS_CONFIRMATION=0
 AVEC_PIP=0 AVEC_PIP=0
 + 
 # Liste blanche : chemins de la NOUVELLE version, jamais supprimés. # Liste blanche : chemins de la NOUVELLE version, jamais supprimés.
 # Ajouter ici tout autre chemin à préserver. # Ajouter ici tout autre chemin à préserver.
 PROTEGES=("/​opt/​ql570"​) PROTEGES=("/​opt/​ql570"​)
 + 
 CIBLES=() ​       # ce qui sera supprimé CIBLES=() ​       # ce qui sera supprimé
 SIGNALES=() ​     # ce qui est conservé volontairement,​ mais mérite d'​être dit SIGNALES=() ​     # ce qui est conservé volontairement,​ mais mérite d'​être dit
 + 
 # ---------------------------------------------------------------- utilitaires # ---------------------------------------------------------------- utilitaires
 + 
 # Tout ce qui s'​affiche part aussi dans le journal : « tee -a » écrit sur la # Tout ce qui s'​affiche part aussi dans le journal : « tee -a » écrit sur la
 # sortie standard ET ajoute au fichier. Sur 30 postes, le journal est la seule # sortie standard ET ajoute au fichier. Sur 30 postes, le journal est la seule
Ligne 514: Ligne 491:
 msg()   { printf '​%s\n'​ "​$*"​ | tee -a "​$JOURNAL";​ } msg()   { printf '​%s\n'​ "​$*"​ | tee -a "​$JOURNAL";​ }
 titre() { printf '\n=== %s ===\n' "​$*"​ | tee -a "​$JOURNAL";​ } titre() { printf '\n=== %s ===\n' "​$*"​ | tee -a "​$JOURNAL";​ }
 + 
 # Le chemin appartient-il à la nouvelle version ? # Le chemin appartient-il à la nouvelle version ?
 # Le motif "​$p"/​* attrape aussi tout ce qui est DANS un dossier protégé. # Le motif "​$p"/​* attrape aussi tout ce qui est DANS un dossier protégé.
Ligne 524: Ligne 501:
   return 1   return 1
 } }
 + 
 # Ajoute un chemin à la liste de suppression,​ avec trois filtres : # Ajoute un chemin à la liste de suppression,​ avec trois filtres :
 #   1. chemin vide      -> ignoré (protection anti-« rm -rf » sur rien) #   1. chemin vide      -> ignoré (protection anti-« rm -rf » sur rien)
Ligne 543: Ligne 520:
   CIBLES+=("​$chemin"​)   CIBLES+=("​$chemin"​)
 } }
 + 
 signaler() { SIGNALES+=("​$1"​);​ } signaler() { SIGNALES+=("​$1"​);​ }
 + 
 # L'aide est l'​en-tête du fichier lui-même : une seule source, jamais de # L'aide est l'​en-tête du fichier lui-même : une seule source, jamais de
 # décalage entre la doc et le code. # décalage entre la doc et le code.
-aide() { sed -n '4,34p' "​$0"​ | sed 's/^# \{0,​1\}//';​ exit 0; } +aide() { sed -n '4,41p' "​$0"​ | sed 's/^# \{0,​1\}//';​ exit 0; } 
 + 
 # ------------------------------------------------------------------ arguments # ------------------------------------------------------------------ arguments
 + 
 while [[ $# -gt 0 ]]; do while [[ $# -gt 0 ]]; do
   case "​$1"​ in   case "​$1"​ in
Ligne 562: Ligne 539:
   shift   shift
 done done
 + 
 # EUID = identifiant effectif de l'​utilisateur ; 0 = root. # EUID = identifiant effectif de l'​utilisateur ; 0 = root.
 # Nécessaire pour /opt et /etc, et pour parcourir tous les /home. # Nécessaire pour /opt et /etc, et pour parcourir tous les /home.
Ligne 569: Ligne 546:
   exit 1   exit 1
 fi fi
- +  
-msg "​nettoyage_stickeuse.sh v${VERSION} — poste ${HOTE} — ${HORODATE}"​+msg "​nettoyage_stickeuse.txt v${VERSION} — poste ${HOTE} — ${HORODATE}"​
 msg "​Journal : ${JOURNAL}"​ msg "​Journal : ${JOURNAL}"​
 + 
 # ============================================================== 1. INVENTAIRE # ============================================================== 1. INVENTAIRE
 # Rien n'est supprimé ici : on ne fait que remplir CIBLES et SIGNALES. # Rien n'est supprimé ici : on ne fait que remplir CIBLES et SIGNALES.
 + 
 titre "1. Inventaire"​ titre "1. Inventaire"​
 + 
 # --- côté système ----------------------------------------------------------- # --- côté système -----------------------------------------------------------
 ajouter "/​opt/​stickeuse_ql570" ​     # dossier de l'​ancienne version ajouter "/​opt/​stickeuse_ql570" ​     # dossier de l'​ancienne version
 ajouter "/​usr/​local/​bin/​ql570" ​     # binaire C compilé de l'​ancienne version ajouter "/​usr/​local/​bin/​ql570" ​     # binaire C compilé de l'​ancienne version
 + 
 # Lanceurs du menu général. C'est ici que se joue la distinction ancienne / # Lanceurs du menu général. C'est ici que se joue la distinction ancienne /
 # nouvelle : la ligne « Exec= » du fichier .desktop dit quel programme est # nouvelle : la ligne « Exec= » du fichier .desktop dit quel programme est
Ligne 593: Ligne 570:
   fi   fi
 done done
 + 
 # Règles udev : elles donnent à l'​utilisateur le droit de parler à # Règles udev : elles donnent à l'​utilisateur le droit de parler à
 # l'​imprimante USB. Absentes sur OP60, présentes sur OP42. # l'​imprimante USB. Absentes sur OP60, présentes sur OP42.
Ligne 599: Ligne 576:
   [[ -e "​$f"​ ]] && ajouter "​$f"​   [[ -e "​$f"​ ]] && ajouter "​$f"​
 done done
 + 
 # --- côté utilisateurs ------------------------------------------------------ # --- côté utilisateurs ------------------------------------------------------
 # On balaie /home/* plutôt que d'​écrire un nom de compte en dur : il vaut # On balaie /home/* plutôt que d'​écrire un nom de compte en dur : il vaut
Ligne 606: Ligne 583:
 for maison in /home/*; do for maison in /home/*; do
   [[ -d "​$maison"​ ]] || continue   [[ -d "​$maison"​ ]] || continue
 + 
   ajouter "​$maison/​bin/​stickeuse_ql570" ​  # dossier de travail (OP60)   ajouter "​$maison/​bin/​stickeuse_ql570" ​  # dossier de travail (OP60)
   ajouter "​$maison/​.gitdl/​ql570" ​         # sources téléchargées (OP60)   ajouter "​$maison/​.gitdl/​ql570" ​         # sources téléchargées (OP60)
   ajouter "​$maison/​.ql570" ​               # journal d'​impression de l'​appli   ajouter "​$maison/​.ql570" ​               # journal d'​impression de l'​appli
 + 
   # Recherche par motif dans les dossiers de configuration.   # Recherche par motif dans les dossiers de configuration.
   # -maxdepth 1 : on ne descend pas dans les sous-dossiers,​ pour ne pas   # -maxdepth 1 : on ne descend pas dans les sous-dossiers,​ pour ne pas
Ligne 623: Ligne 600:
     done < <(find "​$d"​ -maxdepth 1 \( -iname '​*stickeuse*'​ -o -iname '​*ql570*'​ \) 2>/​dev/​null)     done < <(find "​$d"​ -maxdepth 1 \( -iname '​*stickeuse*'​ -o -iname '​*ql570*'​ \) 2>/​dev/​null)
   done   done
 + 
   # Lanceurs personnels : menu utilisateur,​ Bureau (session en français) et   # Lanceurs personnels : menu utilisateur,​ Bureau (session en français) et
   # Desktop (session en anglais). Même test Exec= que plus haut.   # Desktop (session en anglais). Même test Exec= que plus haut.
Ligne 637: Ligne 614:
   done   done
 done done
 + 
 # --- bibliothèque Python brother_ql ----------------------------------------- # --- bibliothèque Python brother_ql -----------------------------------------
 # Installée par pip en root dans /usr/local, donc partagée par tout le poste. # Installée par pip en root dans /usr/local, donc partagée par tout le poste.
Ligne 647: Ligne 624:
   PIP_PRESENT=1   PIP_PRESENT=1
 fi fi
 + 
 # --- restitution de l'​inventaire -------------------------------------------- # --- restitution de l'​inventaire --------------------------------------------
 if [[ ${#​CIBLES[@]} -eq 0 ]]; then if [[ ${#​CIBLES[@]} -eq 0 ]]; then
Ligne 655: Ligne 632:
   for c in "​${CIBLES[@]}";​ do msg " ​ - $c"; done   for c in "​${CIBLES[@]}";​ do msg " ​ - $c"; done
 fi fi
 + 
 if [[ ${#​SIGNALES[@]} -gt 0 ]]; then if [[ ${#​SIGNALES[@]} -gt 0 ]]; then
   msg ""​   msg ""​
Ligne 661: Ligne 638:
   for s in "​${SIGNALES[@]}";​ do msg " ​ ! $s"; done   for s in "​${SIGNALES[@]}";​ do msg " ​ ! $s"; done
 fi fi
 + 
 if [[ $PIP_PRESENT -eq 1 ]]; then if [[ $PIP_PRESENT -eq 1 ]]; then
   msg ""​   msg ""​
Ligne 670: Ligne 647:
   fi   fi
 fi fi
 + 
 if [[ $INVENTAIRE_SEUL -eq 1 ]]; then if [[ $INVENTAIRE_SEUL -eq 1 ]]; then
   msg ""​   msg ""​
Ligne 676: Ligne 653:
   exit 0   exit 0
 fi fi
 + 
 # Poste déjà propre : on s'​arrête là. # Poste déjà propre : on s'​arrête là.
 [[ ${#​CIBLES[@]} -eq 0 && $PIP_PRESENT -eq 0 ]] && exit 0 [[ ${#​CIBLES[@]} -eq 0 && $PIP_PRESENT -eq 0 ]] && exit 0
 + 
 # ============================================================ 2. CONFIRMATION # ============================================================ 2. CONFIRMATION
 + 
 if [[ $SANS_CONFIRMATION -eq 0 ]]; then if [[ $SANS_CONFIRMATION -eq 0 ]]; then
   printf '​\nSupprimer les éléments ci-dessus ? [o/N] '   printf '​\nSupprimer les éléments ci-dessus ? [o/N] '
Ligne 691: Ligne 668:
   esac   esac
 fi fi
 + 
 # ============================================================= 3. SUPPRESSION # ============================================================= 3. SUPPRESSION
 + 
 titre "2. Suppression"​ titre "2. Suppression"​
 + 
 UDEV_TOUCHE=0 UDEV_TOUCHE=0
 for c in ${CIBLES[@]+"​${CIBLES[@]}"​};​ do for c in ${CIBLES[@]+"​${CIBLES[@]}"​};​ do
Ligne 709: Ligne 686:
   fi   fi
 done done
 + 
 # Sans rechargement,​ une règle supprimée reste active jusqu'​au redémarrage. # Sans rechargement,​ une règle supprimée reste active jusqu'​au redémarrage.
 if [[ $UDEV_TOUCHE -eq 1 ]]; then if [[ $UDEV_TOUCHE -eq 1 ]]; then
   udevadm control --reload-rules 2>/​dev/​null && msg " ​ règles udev rechargées"​   udevadm control --reload-rules 2>/​dev/​null && msg " ​ règles udev rechargées"​
 fi fi
 + 
 # Debian 13 refuse pip en root sans --break-system-packages (PEP 668). # Debian 13 refuse pip en root sans --break-system-packages (PEP 668).
 # Sans risque ici : ces fichiers vivent dans /usr/local, hors du Python géré # Sans risque ici : ces fichiers vivent dans /usr/local, hors du Python géré
Ligne 723: Ligne 700:
     || pip3 uninstall -y brother_ql 2>&1 | tee -a "​$JOURNAL"​     || pip3 uninstall -y brother_ql 2>&1 | tee -a "​$JOURNAL"​
 fi fi
 + 
 # Le menu lit un cache : sans ce rafraîchissement,​ l'​entrée reste affichée # Le menu lit un cache : sans ce rafraîchissement,​ l'​entrée reste affichée
 # alors que le fichier a disparu (clic sans effet). # alors que le fichier a disparu (clic sans effet).
Ligne 734: Ligne 711:
   msg " ​ menus rafraîchis"​   msg " ​ menus rafraîchis"​
 fi fi
 + 
 # ============================================================ 4. VERIFICATION # ============================================================ 4. VERIFICATION
 # On relance la recherche à blanc sur tout le disque pour confirmer. # On relance la recherche à blanc sur tout le disque pour confirmer.
 + 
 titre "3. Vérification"​ titre "3. Vérification"​
 + 
 # -xdev : ne franchit pas les frontières de systèmes de fichiers. Évite de # -xdev : ne franchit pas les frontières de systèmes de fichiers. Évite de
 # partir dans /proc et /sys. Si /home est sur une autre partition, il faut # partir dans /proc et /sys. Si /home est sur une autre partition, il faut
-# relancer la recherche dessus (voir README, section « Limites »).+# relancer la recherche dessus (voir le wiki, section « Limites ​connues ​»).
 # #
 # On écarte de la liste des « restes » : la nouvelle version, ce qui a été # On écarte de la liste des « restes » : la nouvelle version, ce qui a été
Ligne 753: Ligne 730:
           | grep -Fv "​$(basename "​$MOI"​)"​ \           | grep -Fv "​$(basename "​$MOI"​)"​ \
           | grep -Fxv "​$JOURNAL"​ || true)"           | grep -Fxv "​$JOURNAL"​ || true)"
 + 
 for s in ${SIGNALES[@]+"​${SIGNALES[@]}"​};​ do for s in ${SIGNALES[@]+"​${SIGNALES[@]}"​};​ do
   chemin="​${s%% (*}" ​                 # retire le commentaire entre parenthèses   chemin="​${s%% (*}" ​                 # retire le commentaire entre parenthèses
   RESTES="​$(printf '​%s\n'​ "​$RESTES"​ | grep -Fxv "​$chemin"​ || true)"   RESTES="​$(printf '​%s\n'​ "​$RESTES"​ | grep -Fxv "​$chemin"​ || true)"
 done done
 + 
 if [[ -z "​$RESTES"​ ]]; then if [[ -z "​$RESTES"​ ]]; then
   msg "Aucun reste. Poste ${HOTE} propre."​   msg "Aucun reste. Poste ${HOTE} propre."​
Ligne 765: Ligne 742:
   printf '​%s\n'​ "​$RESTES"​ | tee -a "​$JOURNAL"​   printf '​%s\n'​ "​$RESTES"​ | tee -a "​$JOURNAL"​
 fi fi
 + 
 if command -v brother_ql >/​dev/​null 2>&​1;​ then if command -v brother_ql >/​dev/​null 2>&​1;​ then
   msg "​brother_ql (pip) toujours en place (conservé volontairement,​ ou --avec-pip non passé)."​   msg "​brother_ql (pip) toujours en place (conservé volontairement,​ ou --avec-pip non passé)."​
 fi fi
 + 
 msg ""​ msg ""​
 msg "​Terminé. Fermer et rouvrir la session pour rafraîchir l'​affichage du menu." msg "​Terminé. Fermer et rouvrir la session pour rafraîchir l'​affichage du menu."
 msg "​Journal : ${JOURNAL}"​ msg "​Journal : ${JOURNAL}"​
 </​file>​ </​file>​
 +</​panel>​
 +</​accordion>​
 + 
  • materiel/logicos/start.1785333166.txt.gz
  • Dernière modification: 2026/07/29 15:52
  • par vitally-u44