Daily - GuiGui's Showhttp://shaarli.guiguishow.info/Daily shared linksen-enhttp://shaarli.guiguishow.info/ GuiGui's Show - Sunday 16 March 2025 http://shaarli.guiguishow.info/?do=daily&day=20250316 http://shaarli.guiguishow.info/?do=daily&day=20250316 Sun, 16 Mar 2025 00:00:00 +0100 Réparer Linux Mint, Windows 10, et un multiboot des deux Sun Mar 16 20:23:37 2025 -
http://shaarli.guiguishow.info/?vf3qNw


On fait appel à moi pour réparer un système GNU/Linux.

Linux Mint 21.2. Gros affichage (en réalité, 800x600), plus de réseau WiFi, plus d'imprimante USB, et plus de son. A priori, suite à une mise à jour. Étrange car la plus récente version majeure de Mint (22.1) n'est pas installée, donc c'était une màj mineure, donc peu probable qu'elle ait tout cassé.

Puisque màj, je me dis qu'elle a peut-être été interrompue, mais `apt install -f` me dément.

Je me dis que, puisque tout est cassé, autant mettre à jour en Mint 22.1. Ça ne change rien.

<br />
Pour le WiFi, `lspci` n'affiche aucun pilote en cours d'utilisation. Ha, idem pour le réseau filaire (qui est donc HS). Je passe sur un liveUSB Mint. Là, tout fonctionne (affichage, WiFi et filaire, imprimante, son). J'utilise `apt-file` pour identifier dans quels paquets sont les pilotes affichés par `lspci` pour le réseau (WiFi et filaire) : `linux-modules-extra-<version_noyau>`. Je [chroot](/?tMAkaQ) dans le Mint installé, j'installe le paquet, je redémarre : WiFi et filaire OK.

Origine de ce problème ? Aucune idée. Sur le forum web de Mint, on trouve l'idée que, lors d'une mise à jour, le paquet `linux-modules-extra-<version_noyau>` correspondant au noyau qui sera installé, est installé, par dépendance, par le paquet `linux-image-generic`, sauf s'il est manquant. Dans mon cas, il était présent, donc ce n'est pas la bonne explication. Je n'en ai pas d'autre.

<br />
Concernant l'affichage, la disponibilité de la seule définition 800x600 indique que c'est le pilote ultra-minimaliste qui est en action. Pourtant, le pilote officiel de Nvidia est installé. La carte graphique, une Geforce GT 545, est prise en charge jusqu'à la version 390 du pilote officiel (pour savoir quelle version du pilote convient à telle carte graphique, il suffit de faire semblant de télécharger le pilote depuis le [site de Nvidia](https://www.nvidia.com/fr-fr/drivers/)). Mint 22.1 livre la version 6.8 de Linux. Or, la version 390 du pilote officiel Nvidia est incompatible avec Linux 6.

J'avais constaté que le liveUSB Mint 22.1 utilise le pilote libre `nouveau`. J'ai donc désinstallé `xserver-xorg-video-nvidia-390`, `nvidia-driver-390`, `nvidia-utils-390`, `nvidia-settings`, etc. Mais toujours rien après redémarrage. `lspci` affiche deux pilotes potentiels (dont aucun en cours d'utilisation) : `nvidiafb` et `nouveau`. J'en déduis que `nvidiafb` entre en conflit. `apt-file search` le trouve dans aucun paquet donc j'[empêche son chargement dans le noyau](/?pA_R_g). Après redémarrage, `nouveau` a pris la main et l'affichage est impec.

Là encore, aucune idée de l'origine du problème (Linux Mint 21.2 a un noyau 5.15, donc le pilote Nvidia officiel aurait dû fonctionner avant ma mise à jour vers 22.1 avec Linux 6.8).

<br />
Le son et l'imprimante fonctionnent sans intervention de ma part.

<br />
Je remarque que le gestionnaire Bluetooth, Thunderbird et un autre logiciel s'ouvrent automatiquement à l'ouverture de session. L'utilisatrice me dit qu'elle a jamais voulu ça. Je fais le ménage depuis le Menu, Préférences, Applications au démarrage.

<br />
Linux Mint est installé à côté de Windows 10 (dual boot). Tout porte à croire que winwin fonctionnait avant mon intervention puisque, le Mint étant cassé depuis des semaines, l'utilisatrice l'utilisait en secours. Après mon intervention, il ne démarre plus. Quelle que soit l'entrée choisie dans le menu de démarrage de l'EFI, ça démarrage Linux. Je ne vois pas comment j'aurais pu casser quelque chose avec le peu de commandes que j'ai utilisé… Erreur de ma part : ne pas avoir collecté plus d'informations avant de travailler (constater que winwin démarre, avec quelle entrée du menu EFI, etc.).

Chaque système est installé sur un disque dur dédié. Même si je débranche le disque Linux, l'EFI lance GRUB qui se plaint qu'il ne trouve pas le disque avec tel UUID (le disque Linux, donc). L'utilisatrice me dit que winwin démarrait automatiquement et qu'elle utilisait F9 (menu de démarrage) pour démarrer Mint (je l'ai vu faire) en sélectionnant « SATA 0 ». Donc winwin 10 serait en mode legacy / MBR (sinon il faudrait sélectionner Windows Boot Manager dans les sources EFI, mais il n'y figure pas) ? Étrange. Sur le disque dur dédié à winwin, il y a une partition qui a le drapeau boot et qui contient « bootmgr.exe », « bootnxt », « bootsect.bak », l'arborescence « Boot/BCD », etc. Une autre partition contient aussi « bootmgr.exe » et des documents de l'utilisatrice (parce que pourquoi pas ?). La partition système contient « bootnxt » et un dossier « Boot » vide. Le disque winwin a une table des partition au format MBR, celle du disque dur dédié à Linux est au format GPT. Seul le disque Linux a une partition EFI (aka ESP), mais elle ne contient pas l'arborescence « EFI/Microsoft/Boot » (et donc pas « bootmgfw.efi », « BCD », etc.). La commande `efibootmgr` affiche aucune entrée propre à Windows. J'ai essayé de forcer le prochain démarrage (`efibootmgr -n <numéro_entrée>`) sur la ligne louche la plus probable (« BBS USB »), sans succès. Bref, c'est le foutoir, et j'hésite entre un winwin MBR ou EFI. Seules certitudes : la commande `os-prober` ne détecte pas winwin, et le menu GRUB était désactivé (« GRUB_TIMEOUT_STYLE=hidden » dans `/etc/default/grub`) donc l'utilisateur choisisait son système depuis le menu de démarrage de l'EFI.

Je débranche le disque dur Mint de l'ordinateur, je démarre sur une clé USB d'installation de winwin 10. Je teste l'[outil de réparation du démarrage](https://learn.microsoft.com/fr-fr/troubleshoot/windows-client/performance/windows-boot-issues-troubleshooting#method-1-startup-repair-tool). Évidemment, il ne parvient pas à corriger quoi que ce soit. J'utilise `bootrec /fixmbr` : l'ordi démarre toujours sur le GRUB présent sur le disque dur alors que je m'attendais à une réécriture du MBR avec le gestionnaire de démarrage de winwin. `bootrec /fixboot` termine en « Accès refusé ». D'après plusieurs sources sur le web, c'est le cas depuis la version 1709 de winwin 10 donc depuis 2017. Je peine à croire à un dysfonctionnement, je pense que c'est voulu par Microsoft. Reste à comprendre pourquoi, et pourquoi sa documentation n'est pas à jour. Consolation : `bootrec /ScanOS` détecte winwin sur la bonne partition.

Je tente de [chaîner l'amorceur winwin à GRUB](https://doc.ubuntu-fr.org/tutoriel/grub2_parametrage_manuel#chainer_un_autre_menu) en pointant sur le début de chaque partition du disque winwin (directive `chainloader +1` de GRUB après avoir défini la racine) : échec (« Invalid EFI file path »). Je tente de pointer sur les binaires `bootmgr` que j'ai identifié dans plusieurs partitions du disque winwin (directive GRUB : `ntldr /bootmgr`) : échec (« ntldr: command not found »). C'était voué à l'échec : GRUB ne permet pas de chaîner du non-EFI quand il est lancé en mode EFI, et inversement, et c'est logique ([source 1](https://help-grub.gnu.narkive.com/q7I6bAVI/chainload-grub2-to-grub-legacy-on-ahci-efi), [source 2](https://discussion.fedoraproject.org/t/how-to-make-efi-grub2-chainload-to-legacy-windows/70271)). Mais sur un malentendu…

Depuis l'invite de commande d'une clé d'installation winwin 10, je me décide à faire ce que je ne voulais pas : reconstruire l'arborscence Microsoft sur la partition EFI (du disque Linux, donc). Je ne le voulais pas car ça signifie que les deux systèmes, Mint et winwin, ne sont plus véritablement indépendants : sans le disque dur Linux, winwin ne peut pas démarrer… Pour ce faire, j'ai adapté [ce tuto](https://unix.stackexchange.com/questions/667803/fixing-efi-windows-boot-from-linux/667902#667902) : `cd /d M:\EFI` ; `mkdir Microsoft\Boot` ; `cd Microsoft\Boot` ; `bcdboot C:\Windows /l fr-fr`. Au redémarrage, le menu de démarrage de l'EFI présente une nouvelle entrée dans la rubrique « Sources de démarrage EFI » : « Windows Boot Manager ». Winwin démarre.

Depuis le Mint installé, `os-prober` détecte désormais winwin (et l'ajoute au menu GRUB lors d'un `update-grub`, sous réserve qu'il soit configuré pour le faire (« GRUB_DISABLE_OS_PROBER=false » dans `/etc/default/grub`.

Winwin étant une espèce invasive, dès qu'on démarre sur lui, ce n'est plus GRUB qui a la main lors des redémarrages successifs. J'ai [désactivé le démarrage rapide de winwin (fast startup)](https://www.eightforums.com/threads/fast-startup-turn-on-or-off-in-windows-8.6320/), sans succès. J'ai pas creusé plus loin. J'ai même oublié de vérifier l'ordre de démarrage dans l'EFI (en tout cas, dans le menu de démarrage du même EFI, winwin occupe la première place devant Mint). Pas grave, l'utilisatrice a l'habitude de démarrer Mint avec F9 (menu de démarrage EFI), j'ai remis comme c'était, aucun poids sur ma conscience.

Là encore, aucune idée sur l'origine du problème. Lors de la mise à jour vers Mint 22.1, y a-t-il eu un `grub-install` automatique qui a détruit l'amorceur winwin sur le disque dur dédié winwin ? Un `update-grub` qui a changé la config du GRUB du disque Linux (vers lequel pointe le MBR du disque winwin) ? Un effacement de l'arborescence Microsoft sur la partition EFI ? Tout cela paraît improbable.

<br />
L'utilisatrice me dit qu'il n'y a plus de son sous winwin. Forcément, quand on branche les haut-parleurs sur le port microphone de l'ordi… Mais Linux fait avec. :D J'avais déjà vu ça.


]]>
GuiGui's Show - Sunday 9 March 2025 http://shaarli.guiguishow.info/?do=daily&day=20250309 http://shaarli.guiguishow.info/?do=daily&day=20250309 Sun, 09 Mar 2025 00:00:00 +0100 Quelques syntaxes Sieve Sun Mar 9 12:07:14 2025 -
http://shaarli.guiguishow.info/?pXtpPg


Sieve est un langage de script de manipulation d'emails côté serveur. On peut classer des emails dans un dossier, écrire un répondeur, ignorer des spams, évaluer le retour d'un antivirus, [chiffrer les emails entrants](https://blog.imirhil.fr/2014/04/28/gpgit-chiffrez-courriel-entrant.html) (avec un plugin, pas juste du Sieve), etc. [RFC 5228](https://datatracker.ietf.org/doc/html/rfc5228). Beaucoup d'extensions : [RFC 5233](https://datatracker.ietf.org/doc/html/rfc5233) pour travailler plus simplement sur des sous-adresses (étiquettes), [RFC 5232](https://datatracker.ietf.org/doc/html/rfc5232) pour manipuler les drapeaux IMAP, [RFC 5230](https://datatracker.ietf.org/doc/html/rfc5230) pour un répondeur, [RFC 5235](https://datatracker.ietf.org/doc/html/rfc5235) pour évaluer simplement le résultat d'un antivirus / antispam, etc.

Les utilisateurs peuvent envoyer leurs scripts à leur serveur emails avec le [protocole ManageSieve](https://datatracker.ietf.org/doc/html/rfc5804) (je ne le fais pas, je passe par SSH).

Comme toujours, il y a la norme technique et les implémentations. Pour ma part, j'utilise Pigeonhole, l'implémentation de Sieve de Dovecot (qui, en sus d'être un serveur IMAP / POP peut aussi être un [MDA](https://fr.wikipedia.org/wiki/Mail_Delivery_Agent), un agent local de livraison des emails, qui s'occupe des derniers kilomètres, comme un facteur humain, nommé `dovecot-lda`). [Documentation](https://doc.dovecot.org/2.3/configuration_manual/sieve/). [Exemples](https://doc.dovecot.org/2.3/configuration_manual/sieve/examples/). [Autres exemples](https://support.tigertech.net/sieve).

Un script Sieve est compilé (en une représentation binaire) afin d'accélérer son exécution. Dovecot y procède si le binaire n'existe pas (et on peut utiliser la commande `sievec` pour le faire nous même), c'est le fichier `~/.dovecot.svbin` (qu'on peut lire avec `sieve-dump`).

Ci-dessous, je note les quelques syntaxes que j'utilise.

<br />
### Structure

`[]` : liste de chaînes de caractères. On peut bosser sur plusieurs entêtes et/ou plusieurs valeurs en une expression.
 

`require` : charger des extensions. Ex. : `require ["fileinto", "envelope", "subaddress", "imap4flags", "body"];`
 

`if` / `elsif` / `else`
 

`if not`
 

`if anyof (condition_1, condition_2)` : OR ([« ou » logique](https://fr.wikipedia.org/wiki/Fonction_OU)), une seule condition suffit
`if allof (condition_1, condition_2)` : AND ([« et » logique](https://fr.wikipedia.org/wiki/Fonction_ET)), il faut remplir toutes les conditions


<br />
### Commandes de test dans les conditions

Quelques commandes de test (en sus de `not`, `anyof` et `allof` qui figurent déjà ci-dessus :
  * `envelope` (nécessite le chargement de l'extension du même nom) : travailler sur l'enveloppe (`MAIL FROM`, `RCPT TO`, etc.)
<br />
  * `header` : travailler sur un ou plusieurs entête de l'email
<br />
  * `address` : sous-ensemble de `header`, portant uniquement les adresses (expéditeur, destinataire, copie, etc.)
<br />
  * `body` : travailler sur le corps de l'email
<br />
  * `exists` (un entête existe), `size`, etc.
 

`if header :is "Subject" "Check out my profile on LinkedIn"` : si le sujet est « Check out my profile on LinkedIn »
`if header :contains "Subject" "Check out my profile on LinkedIn"` : si le sujet contient, entre autres la chaîne « Check out my profile on LinkedIn »
 

La comparaison entre un entête ou le corps de l'email et une chaîne de caractère n'est pas sensible à la case (parce que la norme du format des emails l'impose). Y compris les adresses emails (dont la partie locale est sensible à la case, pour rappel). Pour avoir une sensibilité à la case : `if header :comparator "i;octet" :contains "Subject" "LoLmDr"` / `if address :comparator "i;octet" :localpart :is "From" "ToTo"`.
 

`if address :is "From" "invitations@linkedin.com"`
`if address :contains "From" "@newsletter.voyages-sncf.com"` / `if address :domain :is "From" "newsletter.voyages-sncf.com"` : comparer uniquement le domaine (inversement, il existe `:localpart`)
 

`if header :contains "From" "quelquechose"` : chercher plus librement dans tout le From (ou dans le To ou…), pas juste dans l'adresse. J'y ai déjà eu recours quand `address` ne matchait pas sur le domaine d'une adresse pour une raison qui m'échappait.
 

`if address :is "To" "toto@example.com"` / `if header :is "To" "toto@example.com"`
`if envelope :is "To" "toto@example.com"` / `if header :is "Delivered-To" "toto@example.com"` : quand l'adresse de destination ne figure pas dans les entêtes (copie cachée, alias, liste, etc.)
 

`if header :contains "List-Id" "nomliste.lists.example.com"` : quand l'email provient d'une liste de diffusion précise
 

`if exists "List-ID"` : l'email provient d'une liste de diffusion (sans chercher laquelle)
 

`if address :contains "To" "+test"` / `if address :detail :is "To" "test"` / `if envelope :contains "To" "+test"` / `if envelope :detail :is "To" "test"` : travailler sur une étiquette / sous-adresse (« test » dans « toto+test@example.com »). (Les 2<sup>e</sup> et 4<sup>e</sup> syntaxes nécessitent l'extension `subaddress`. La 4<sup>e</sup> nécessite de [configurer Postfix pour transmettre l'adresse complète](https://doc.dovecot.org/2.3/configuration_manual/sieve/examples/#plus-addressed-mail-filtering) à Dovecot-lda, « toto+test@example.com » au lieu de « toto@example.com » en laquelle Postfix l'aura résolu.)
 

`if body :contains "blablabla"` (nécessite l'extension du même nom)
 

Il existe également l'extension `regex`.
 

L'ordre des paramètres d'une commande n'est pas important : `if address :is :domain :comparator "i;octet" "From" "example.com"` = `if address :comparator "i;octet" :domain :is "From" "example.com"`, alors que seule la 2<sup>e</sup> respecte strictement le RFC. Évidemment, il ne faut pas inverser l'entête sur laquelle on travaille et sa valeur (ex. de truc foireux : `if header :is "example.org" "From"`), car le compilateur ne les détecte pas tous (comme l'exemple donné ici), et c'est logique. Le type de comparaison (exacte avec `:is`, sous-chaîne avec `:contains`, ou métacaractères / joker avec `:matches`) est optionnel et vaut `:is` par défaut, mais je trouve que ne pas l'indiquer rend la règle illisible.


<br />
### Actions

Toutes les actions doivent être suivies d'un point-virgule.

`discard` : ignorer un email (il disparaît)
 

`fileinto "dossier"` (nécessite l'extension fileinto) : déplacer l'email dans le dossier nommé « dossier »
 

`setflag "\\Seen"` (nécessite l'extension `imap4flags`) : marquer l'email comme lu. Il doit être positionné avant un fileinto. / `fileinto :flags "\\Seen" "dossier"`
 

`stop` : ne pas poursuivre l'exécution du script car on a fait tout ce qu'on voulait
 

Il existe aussi `redirect`, `vacation` (répondeur, cf. ci-dessous), etc.

<br />
### Commandes utiles

Pour **tester un script** (aussi bien sa syntaxe que son effectivité), Dovecot propose la commande `sieve-test <chemin/vers/script/sieve> <email_à_tester>`. (Évidemment, le script sera compilé, donc analysé en entier, donc toute erreur de syntaxe sera remontée, même si l'email ne déclenche qu'un sous-ensemble.) Si l'on veut juste tester la syntaxe, on peut uniquement compiler le script : `sievec .dovecot.sieve`.

Pour appliquer un script Sieve sur des emails déjà réceptionnés : `sieve-filter` (attention : le manuel exige d'être très prudent, bugs, tout ça).

<br />
### Exemple de répondeur

[Aeris](https://imirhil.fr/) avait mis à disposition le script Sieve suivant qui envoie un email à toute personne le contactant avec une adresse email hébergée par un GAFAM. Je le recopie ci-dessous. Dovecot n'envoie pas l'email en réponse à une liste de diffusion et autres messages de masse ([source](https://doc.dovecot.org/main/core/config/sieve/extensions/vacation.html)).

```
if anyof (
        address :is :domain "From" "gmail.com",
        address :is :domain "From" "live.com",
        address :is :domain "From" "msn.com",
        address :is :domain "From" "hotmail.com",
        address :is :domain "From" "hotmail.fr",
        address :is :domain "From" "yahoo.com",
        address :is :domain "From" "yahoo.fr"
) {
    vacation :days 1 :subject "Protection de la vie privée" text:
### Message automatique ###

Bonjour,

Vous m’écrivez depuis une adresse mail dont le fournisseur ne respecte pas ma
vie privée et dont je n’ai aucunement approuvé les conditions générales
d’utilisation liberticides.
Je vous saurai donc gré de cesser d’utiliser cette adresse pour me joindre, et
de vous tourner vers des fournisseurs de mail respectueux de ma vie privée (à
défaut de la vôtre).

Votre mail ne recevra donc probablement aucune réponse de ma part, afin de ne
pas continuer à fournir mes données privées à votre fournisseur.

https://imirhil.fr/et-puis-merde-à-la-vie-privée.html
--
Aeris

Protégez votre vie privée, chiffrez vos communications
GPG : EFB74277 ECE4E222
OTR : 5769616D 2D3DAC72
https://café-vie-privée.fr/
.
;
}
```


]]>
GuiGui's Show - Thursday 6 March 2025 http://shaarli.guiguishow.info/?do=daily&day=20250306 http://shaarli.guiguishow.info/?do=daily&day=20250306 Thu, 06 Mar 2025 00:00:00 +0100 Double effort de guerre - Groland - CANAL+ - YouTube Thu Mar 6 21:46:44 2025 -
https://www.youtube.com/watch?v=u1oJtvJM6Os


> (Journaliste) ‒ Devons-nous avoir peur de la Russie ? Nous, au Groland, on n'a pas peur. La preuve, nous venons de doubler notre effort de guerre. Désormais, chaque soldat grolandais devra boire deux fois plus de vin à la cantine.
> (Bidasse bourré) ‒ Pas peur, moi.

:D


]]>
GuiGui's Show - Saturday 22 February 2025 http://shaarli.guiguishow.info/?do=daily&day=20250222 http://shaarli.guiguishow.info/?do=daily&day=20250222 Sat, 22 Feb 2025 00:00:00 +0100 François Sureau, encore Sat Feb 22 17:14:42 2025 -
http://shaarli.guiguishow.info/?LgwRXA


### Liberté

[François Sureau invité aux Idées mènent le Monde 2024](https://www.youtube.com/watch?v=PBKKfjAaZfw) :

> Comme l'écrit [Georges] Bernanos, **défendre les libertés en général, c'est défendre les libertés des autres**. Ce qui m'éloigne de tout une partie du monde moderne, c'est que les gens qui revendiquent la liberté la revendique pour eux-mêmes. Alors qu'en réalité la bonne défense de la liberté, c'est de se soucier d'abord de la liberté d'autrui, ce qui n'est pas possible si l'on n'a pas essentiellement un sentiment de fraternité.
> […]
> Quand j'ai commencé à m'intéresser aux libertés, c'est parce qu'en fait, j'étais très frappé de la **facilité avec laquelle nous abandonnions un certain nombre de principes** sur lesquels on avait fonctionné pendant longtemps. Pour moi, on ne peut pas rentrer la nuit chez quelqu'un si l'on n'a pas le mandat d'un juge, c'est aussi tarte que ça. C'est pas bien d'être surveillé tout le temps. Il ne faut pas que les incriminations pénales soient trop larges sans ça ça permettrait d'envoyer en prison a priori le tiers des personnes qui sont dans cette salle. Et j'ai vu, parce que nous étions inquiets de violence, du terrorisme, de la dislocation sociale, on avait tendance à revenir sur ces principes et je n'aimais pas ça, mais je n'aimais pas ça de manière absolument concrète et immédiate. Et puis, au bout d'un moment, j'ai cessé d'en parler quand je me suis rendu compte que mes sorties sur la liberté étaient utilisées ou me faisaient le complice de gens avec qui je n'avais absolument rien de commun : les défenseurs de l'islamisme intégral, les fous de Chavez. Je me suis rendu compte que nous ne parlions pas de la même chose, que pour moi **la liberté n'était pas la liberté de faire n'importe quoi selon sa petite conscience personnelle, mais plutôt l'organisation d'un système général de libertés publiques qui nous permettrait de poursuivre notre chemin dans la société à l'abris des interventions de l'État**. Et puis, en plus, dans les années qui viennent de s'écouler, **d'autres puissances sont apparues, beaucoup plus puissantes que l'État : les mouvements de l'opinion publique, la tyrannie de la majorité, les gens qu'on envoie au pilori sur des soupçons, les réseaux sociaux**, ça rend assez difficile la position classique du juriste libéral qui dit que c'est l'État qui est mauvais. **Non, l'État n'est pas mauvais, nous le sommes autant que lui**, puisque c'est parce que nous lui concédons toutes ces facilités qu'il a la possibilité d'intervenir dans nos vies. Donc je suis très content d'avoir fait ça, je continue à préférer la Déclaration des droits de l'Homme à son absence, naturellement, mais peut-être que j'y mets moins de passion qu'autrefois.

<br />
[François Sureau nous présente "S'en aller"](https://www.youtube.com/watch?v=I6kuQ7Si5iQ) :
> **La liberté, c'est que rien ne vienne s'opposer aux tentatives que nous pouvons faire pour coïncider véritablement avec nous-mêmes dans ce que nous avons de bien** : lire tout ce qu'on veut, écrire tout ce qu'on veut, penser tout ce qu'on veut, voyager comme on veut, une liberté qui soit essentiellement positive


<br />
### Spiritualité
[François Sureau nous présente "S'en aller"](https://www.youtube.com/watch?v=I6kuQ7Si5iQ) :

> À l'origine de tout, je pense qu'il y a un sentiment que beaucoup de gens ont, que peut-être vous avez eu, que peut-être les gens qui nous écoutent ont eu, qui est un sentiment extrêmement profond de l'étrangeté du monde [paradoxes, contraires, binarité gauche/droite, athée/catho, etc.]. Un sentiment éprouvé dans l'enfance, qui ne m'a absolument jamais quitté, qui m'a d'ailleurs empêché de prendre au sérieux, au fond, quelle institution que ce soit. Vous savez, c'était le propos de l'aumônier de la [brigade Alsace-Lorraine de Malraux](https://fr.wikipedia.org/wiki/Brigade_ind%C3%A9pendante_Alsace-Lorraine), Bockel, auquel on demandait « alors, qu'avez-vous appris en 50 ans de pratique de la confession ? » et il répondait « ho, c'est assez simple, il n'y a pas de grande personne ». J'ai eu ce sentiment très jeune que **les grandes personnes que l'on me présentait, pour que je les admire ou que je les déteste, n'étaient que des enfants qui continuaient de jouer dans l'âge adulte les rôles particuliers que jouent les enfants à l'intérieur d'une classe, que ce à quoi ils s'occupaient profondément était assez vain** et que ce monde qui était pourtant extrêmement joyeux et réconfortant à certains égards était l'envers d'un autre ou la préfiguration d'un autre, qu'il existait quelque chose au-delà d'un voile qu'on pouvait écarter, et pour moi, la manière de rentrer dans cet autre monde a été la littérature. […] C'est pas ici c'est une vallée de larmes et puis il y a un autre monde derrière qui est extrêmement sympathique, non, pas du tout, c'est que tout ce qui était bien ici et dont on ne comprenait pas nécessairement le sens prenait sens ailleurs, une dialectique entre les deux, en permanence. De manière négative et positive, des choses magnifiques ici dont je pouvais ressentir négativement le caractère éphémère mais qui en fait étaient une préfiguration de l'éternité ou des souffrances ici dont je me disais qu'elles préparaient en quelque sorte une éternité meilleure, un lien, une espèce de pont permanent entre les deux.

<br />
Pour beaucoup, l'Église (catho), par son formalisme, son caractère construit, etc. contraint, alors que pour Sureau, au contraire, c'est la famille, les études, etc. qui le corsetaient et l'Église qui le libérait :
> **Dans ce monde soumis à l'usine, au ministre, au percepteur, il y avait un endroit où tout le monde allait le dimanche, toutes classes sociales confondues, où un type montait à l'autel dans une chasuble […] et expliquait ou disait des choses absolument mystérieuses et qui pour moi étaient un appel prodigieux à l'imagination**. Y compris des choses qu'on dit dans la liturgie au moment des morts, « souviens-toi de nos morts dont toi seul connaît la droiture », cette phrase me faisait rêver, j'avais l'impression que le monde tel que je le connaissais, le monde des concours, le monde des institutions, des grandeurs d'établissement, était un monde dans lequel chacun portait jugement sur chacun dans l'idée que chacun était capable de formuler un jugement sur la valeur des personnes, et par cette simple phrase, un pauvre gars montant à l'autel dans sa chasuble disait, au fond, « seul Dieu connaît la droiture des Hommes ».

<br />
Dans le christianisme orthodoxe, on retrouve plus un Christ guérisseur que rédempteur (catholicisme), et on part de l'expérience humaine (peur de la mort, désir, etc.) plutôt que de la révélation (catho).


<br />
### Politique

[François Sureau nous présente "S'en aller"](https://www.youtube.com/watch?v=I6kuQ7Si5iQ) :

> Dans l'**anarchisme de droite**, il y a deux choses qui ne me vont pas. Dans l'anarchisme, il y a malgré tout cette idée qu'un mode d'organisation particulier, l'anarchie, celle de Guérin, de Kropotkine, permettrait de nous faire un monde plus vivable : je ne le crois aucunement. Et puis, dans la droite, il y a quelque chose qui ne me va pas non plus […] : je trouve que la caractéristique des anarchistes de droite est très souvent que ce sont des petits bourgeois animés par le ressentiment. […] On a toujours l'impression qu'ils ne sont pas reconnus à leur juste valeur : dans un monde bien fait, ils seraient ministres ou prince du sang, et ils ne le sont pas, et c'est la raison pour laquelle ils deviennent [Michel] Déon ou [Louis] Dimier. Moi pas du tout, je ne suis pas animé par cette forme particulière du ressentiment d'une classe moyenne désaxée qui était d'ailleurs à l'origine de tous les mouvements fascistes.


<br />
Autres thèmes abordés dans les deux vidéos sus-pointées : trouver son unité, qui je suis, d'abord en élaguant les branches mortes pour forcer l'unité, puis en s'acceptant ; monastère = mónos != seul mais plutôt unité de soi ; départ / arrivée / instant présent ; exprimer le désir de partir, c'est déjà être parti ; jugement / condamnation versus  pardon / oubli ; culpabilité / rédemption.


]]>
GuiGui's Show - Sunday 2 February 2025 http://shaarli.guiguishow.info/?do=daily&day=20250202 http://shaarli.guiguishow.info/?do=daily&day=20250202 Sun, 02 Feb 2025 00:00:00 +0100 Telle chose politique vous rendra-t-elle plus heureux ? Sun Feb 2 19:53:12 2025 -
http://shaarli.guiguishow.info/?L-UVoQ


[François Sureau invité aux Idées mènent le Monde 2024](https://www.youtube.com/watch?v=PBKKfjAaZfw) :
> […] Un autre exemple de la manière dont [la littérature] sert à la vie. On se demande aujourd'hui, là, en politique, s'il faut voter à droite, voter à gauche, etc., et moi je me suis beaucoup détaché de ça au fil des années, mais, à chaque fois que je lis des choses politiques dans les journaux, je pense à la [description que donne Victor Hugo des funérailles de Chateaubriand](https://fr.wikisource.org/wiki/Choses_vues/1848/Mort_de_Chateaubriand). Vous vous souvenez que Victor Hugo adorait Chateaubriand, quand il était jeune, il disait « [être Chateaubriand ou rien !](https://shs.cairn.info/revue-langue-francaise-2005-2-page-39?lang=fr#re3no3) ». Et puis Chateaubriand meurt en 1848 [fin de la monarchie de Juillet, 2<sup>e</sup> République, Chateaubriand était un royaliste]. […] [Hugo écrit] : « Peu de temps avant sa mort, mes amis et moi sommes allés voir M. de Chateaubriand. **M. de Chateaubriand ne disait rien de la République, si ce n'est « vous fera-t-elle plus heureux ? »** ». […] Ça, c'est l'**expression la plus exacte du sentiment qu'on peut avoir, d'étrangeté, de familiarité, à l'égard de la vie extérieure**, la vie politique, par exemple, telle que nous la voyons.


C'était mieux avant, âge d'or de la France, blablabla

Sun Feb 2 19:20:43 2025 -
http://shaarli.guiguishow.info/?DxMCLA


[François Sureau nous présente "S'en aller"](https://www.youtube.com/watch?v=I6kuQ7Si5iQ) :
> […]
> ‒ Comment votre regard sur la France a-t-il évolué ?
> ‒ […] En fait, je ne fais pas partie des gens qui pensent que c'était mieux avant. Mais pas du tout. Je me souviens… Cette France de mon enfance [années 60-70], j'y suis attaché parce que c'était le territoire de mes rêves, dans mon enfance, mais la France réelle de mon enfance, celle qui, précisément, me faisait m'évader dans le rêve, cette France-là n'était pas extraordinaire du tout, elle était dure, aux femmes, aux Bretons, aux Arabes, aux esprits libres de manière générale, les barrières de classe étaient beaucoup plus solides que maintenant, et énormément de choses, même sur le plan intellectuel, enfin, quand je faisais mes études, 30 % des électeurs étaient en réalité adeptes de l'URSS de Staline, quand Simon Leys publiait, il se faisait étriller comme agent de la CIA en une du *Monde*, les gens adoraient le génocide cambodgien et vantaient les charmes de Pol Pot, et si vous étiez d'un avis un peu différent, vous étiez un fasciste, tout de suite, donc moi **j'ai l'impression d'avoir vécu mon enfance et ma jeunesse [années 60-70] dans un pays effarant et plombé**. Ceux qu'étaient pas effarants et plombés, c'était les ministres pompidoliens dont on se demandait s'ils ne touchaient pas tous plus ou moins sur la construction de l'auditorium Tartemolle ou des nouvelles halles de Paris, vous voyez ? Donc l'idée, maintenant, que je vois se répandre chez les gens qu'ont l'âge d'être mes enfants qu'il existait un âge d'or quand j'étais jeune est juste surprenante. […] On souffre d'abord de son propre pays […] avant de souffrir d'autres choses, et **je pense qu'un esprit sensible souffre de son pays à toutes les époques, et souffre de son temps à toutes les époques**.
> […]

Ça me rappelle ceux qui, a juste titre, rapportent que les années 80 étaient loin d'être les glamours années fric que l'on présente aujourd'hui. Comme d'hab, ça dépendait de ta position dans la société.


]]>
GuiGui's Show - Friday 17 January 2025 http://shaarli.guiguishow.info/?do=daily&day=20250117 http://shaarli.guiguishow.info/?do=daily&day=20250117 Fri, 17 Jan 2025 00:00:00 +0100 Mon installation Thunderbird 2024 / Thunderbird 128 Fri Jan 17 22:15:50 2025 -
http://shaarli.guiguishow.info/?ywWEZA


En janvier 2024, mon profil utilisateur Thunderbird avait plus de 10 ans. Forcément, ça s'encrasse : des paramètres disparaissent, etc. Le [format de stockage Maildir](https://fr.wikipedia.org/wiki/Maildir), ou, plus précisément, [un dérivé](https://support.mozilla.org/fr/kb/maildir-thunderbird), est disponible dans les paramètres depuis 2019 pour les nouveaux comptes, donc j'avais envie d'essayer. Mes pratiques ont évolué : j'envoyais des emails au format texte (alors que le format HTML a ses avantages avec les [Moldus](https://fr.wiktionary.org/wiki/moldu) et/ou des messages structurés), j'avais limité la largeur des lignes de texte à 80 colonnes (comme sur les vieux terminaux…), y compris en émission, etc. J'avais un bug : quand je déplaçais un email, surtout s'il était chiffré, le sujet du dernier email du dossier de destination était remplacé, en dur, dans le [mbox](https://fr.wikipedia.org/wiki/Mbox), par celui de l'email qui précédait l'email déplacé dans le dossier source (il fallait alors aller dans les propriétés du dossier contenant l'email et utiliser l'outil de réparation… qui ne fait rien de plus que tout détruire et re-télécharger tous les emails). Un profil vierge (et Maildir) ne fait pas disparaître ce bug. :( Dans le temps, [Thunderbird me perdait des emails](/?6znVJQ)… Depuis la version 115, si l'espace de stockage est plein, Thunderbird corrompt ses fichiers (ce n'était pas le cas avant). Je trouvais aussi que le dossier ImapMail occupait bien trop d'espace de stockage comparé à l'occupation des emails sur mon serveur (> 2 Go d'écart). Bien entendu, il y a les index (pour accélérer la recherche), mais je trouvais cet écart déconnant, et je pensais que le compactage ne faisait pas son taff (menu Fichier, Compacter les dossiers = réécrire un fichier mbox pour effacer réellement les emails supprimés, un équivalent du VACUUM de sqlite ou pgSQL, quoi). Un nouveau profil et un passage à Maildir ne changent rien sur ce point.

Vu que [j'étais reparti d'un profil Firefox vierge](/?h0g7vw), j'ai décidé d'en faire de même avec Thunderbird.

Pourquoi pas Betterbird ? Je n'en ai pas besoin, Thunderbird me convient environ, rien ne me déplaît foncièrement. Ensuite, je recherche trois choses : pérennité, suivi et facilité de mise à jour. Par définition, un logiciel de messagerie est exposé sur l'extérieur, et des failles de sécurité sont corrigées tous les mois, donc il faut que les mises à jour soient rapides et automatisées via un canal de distribution de confiance (sans suivi, mutualisé avec d'autres logiciels, comme les dépôts d'un système Debian, par ex.). Bref, je fuis les logiciels qui ne sont pas empaquetés dans Debian, c'est toujours la galère pour les mettre à jour. J'attends de voir combien de temps Betterbird sera maintenu.

La configuration consignée ci-dessous est destinée à des **utilisateurs avancés** de Thunderbird. Je n'appliquerai pas les mêmes paramétrages chez un utilisateur lambda.

<br />
Contrairement à Firefox, il n'est pas possible de renommer un ancien profil. Enfin, si, mais si l'on s'en sert, Thunderbird re-télécharge alors l'ensemble des emails depuis le serveur, à cause de chemins codés en dur dans le profil (notamment dans folderCache.json)…


<br />
**Étape 1** : installer le [dictionnaire français](https://addons.thunderbird.net/fr/thunderbird/addon/dictionnaire-fran%C3%A7ais1/) (sinon de nombreux mots sont marqués, à tort, comme des erreurs par le correcteur, déjà qu'avec le dico il peine à proposer les bonnes corrections de mots accentués…).


<br />
**Étape 2** : retrouver la barre de menus (clic droit, barre de menus).


<br />
**Étape 3** : modifier les paramètres accessibles depuis le menu (édition, paramètres) :

  * Général
    * Décocher Afficher la page de démarrage au lancement de Thunderbird
<br />
    * En fonction des goûts, cocher la case Masquer la barre de titre
<br />
    * En fonction des goûts, décocher la case Masquer automatiquement la barre d'onglets
<br />
    * Polices, avancé, je choisis la police DejaVu adaptée pour chaque catégorie (serif, sans, etc.), j'augmente la taille, et je décoche Autoriser les messages à utiliser d'autres polices
<br />
    * Courrier entrant. Décocher Afficher un avertissement et jouer un son dans Quand un nouveau message arrive
<br />
    * Accusé de réception. Cocher Ne jamais envoyer d'accusé de réception
<br />
    * Espace disque. Cocher Modifier la gestion automatique du cache et choisir 0 Mo
<br />
    * Décocher Compacter les dossiers quand cela économise au moins… (même si ça ne sert à rien avec Maildir)
<br />
    * Type de stockage des messages pour les nouveaux comptes : maildir

  * Rédaction
    * Orthographe. Décocher Vérifier l'orthographe avant l'envoi. Langue : j'ai coché Français (et pas Français (France))
<br />
    * Adressage. Décocher Les carnets d'adresses locaux et Ajouter les adresses des messages sortants dans…
<br />
    * Pièces jointes. Décocher Proposer le partage pour les fichiers de plus de…

  * Vie privée et sécurité
    * Contenu web. Décocher Accepter les cookies
<br />
    * Contenu web. Cocher Envoyer aux sites web un signal « Ne pas me pister » (même si je vois aucun intérêt pour mon cas d'usage)
<br />
    * Collecte de données par Thunderbird. Décocher Autoriser Thunderbird à envoyer des données techniques et des données d'interaction à Mozilla. Je ne comprends pas pourquoi Debian ne décoche pas cela par défaut, comme il le fait dans Firefox.
<br />
    * Sécurité. Décocher Signaler si le message en cours de lecture est susceptible d'être frauduleux
<br />
    * Certificats. Décocher Interroger le répondeur OCSP ([explication](/?SgQmAA)), et, dans Gérer les certificats, Autorités, je retire ma confiance à toutes les autorités x509 (mon serveur email utilise un certificat autosigné). Une [raison est consignée ici](/?hc3aBg), une autre est que ça empêche Thunderbird d'afficher des pages web, y compris les communications de Mozilla et les [pixels espions](https://www.cnil.fr/fr/nouvelles-methodes-de-tracage-en-ligne-quelles-solutions-pour-se-proteger), qui reposent sur HTTPS.


<br />
**Étape 4** : modifier les paramètres avancés (Paramètres, Général, Éditeur de configuration… tout en bas)

  * breakpad.reportURL => ""
<br />
  * browser.cache.disk.enable => false
<br />
  * browser.safebrowsing.allowOverride => false
<br />
  * browser.safebrowsing.downloads.enabled => false
<br />
  * browser.safebrowsing.downloads.remote.block_potentially_unwanted => false
<br />
  * browser.safebrowsing.downloads.remote.block_uncommon => false
<br />
  * browser.safebrowsing.downloads.remote.enabled => false (les paramètres proposés dans le menu ne suffisent pas)
<br />
  * browser.safebrowsing.downloads.remote.url => ""
<br />
  * browser.safebrowsing.malware.enabled => false
<br />
  * browser.safebrowsing.phishing.enabled => false
<br />
  * browser.xul.error_pages.expert_bad_cert => true
<br />
  * captivedetect.canonicalURL => ""
<br />
  * datareporting.policy.dataSubmissionEnabled => false
<br />
  * extensions.getAddons.showPane => false
<br />
  * mail.server.default.check_all_folders_for_new => true
<br />
  * mail.server.default.check_time => 2
<br />
  * network.connectivity-service.enabled => false
<br />
  * network.dns.disablePrefetch => true
<br />
  * network.predictor.enabled => false
<br />
  * network.prefetch-next => false
<br />
  * network.trr.mode => 5
<br />
  * pdfjs.disabled => true
<br />
  * privacy.resistFingerprinting.block_mozAddonManager => true
<br />
  * privacy.resistFingerprinting => true
<br />
  * security.pki.crlite_mode => 0
<br />
  * security.ssl.require_safe_negotiation => true
<br />
  * security.ssl.treat_unsafe_negotiation_as_broken => true
<br />
  * security.tls.enable_0rtt_data => false
<br />
  * toolkit.coverage.opt-out => true
<br />
  * toolkit.telemetry.archive.enabled => false
<br />
  * toolkit.telemetry.bhrPing.enabled => false
<br />
  * toolkit.telemetry.coverage.opt-out => true
<br />
  * toolkit.telemetry.firstShutdownPing.enabled => false
<br />
  * toolkit.telemetry.newProfilePing.enabled => false
<br />
  * toolkit.telemetry.server => data:
<br />
  * toolkit.telemetry.shutdownPingSender.enabled => false
<br />
  * toolkit.telemetry.unified => false
<br />
  * toolkit.telemetry.updatePing.enabled => false


<br />
**Étape 5** : ajouter les comptes emails.

Dans les paramètres des comptes (menu Édition) :
  * Copies et dossiers : décocher Conserver les archives dans
<br />
  * Paramètres des indésirables : décocher Activer les contrôles adaptatifs…
<br />
  * Synchronisation et espace disque, Avancé…. Vérifier que tous les dossiers sont cochés

Envoyer un email pour aussi faire mémoriser le mot de passe du serveur SMTP.

Comme depuis 2021, [galérer à faire accepter un certificat autosigné](/?J54_Tw) pour les serveurs IMAP et SMTP.

Si l'on a plusieurs comptes, définir celui par défaut (= qui sera utilisé quand on cliquera sur Écrire sans être dans un compte, quand on répondra à un email adressé à une identité pas configurée, etc.) : paramètres des comptes, sélectionner le compte qui doit être celui par défaut, bouton Gestion des comptes, Compte par défaut.


<br />
**Étape 6** : OpenPGP. Rien à signaler. Importer sa paire de clés dans le gestionnaire ad-hoc, [ajouter un mot de passe au gestionnaire de mots de passe afin de protéger sa clé privée](/?v1L27g) (Paramètres, Vie privée et sécurité, Mots de passe, Utiliser un mot de passe principal). Importer la clé publique de ses destinataires. [Associer une clé publique à un domaine](/?HgBw5g) / une liste de destinataires, à une adresse email qui n'est pas l'une des identités de la clé (exemple : [adresse email avec un délimiteur](https://en.wikipedia.org/wiki/Email_address#Sub-addressing)) / une étiquette / un tag.
 

<br />
**Étape 7** : ajouter toutes les identités (adresses emails, nom ou absence de nom, etc.) pour un compte emails, notamment si l'on utilise des alias ou des [adresses emails avec un délimiteur](https://en.wikipedia.org/wiki/Email_address#Sub-addressing)) / une étiquette / un tag. Pour ce faire : paramètres des comptes, choisir un compte, bouton Gérer les identités tout en bas.


<br />
**Étape 8** : changer l'apparence. À partir de la version 115, l'interface change pour devenir kikoo-moderne, faire comme tout le monde, sans ergonomie. J'en avais entendu du mal ([ici](https://ecirtam.net/opennews/?zSHodA) et [là](https://ecirtam.net/opennews/?bbVl9A)), j'en avais été préservé (un paramètre était automatiquement placé dans le profil lors d'une mise à jour), mais on peut obtenir, sans trop d'efforts, une interface semblable aux versions antérieures et fonctionnelle ([contrairement à Gajim](/?_lVXvA)).

  * Cacher la barre d'espaces (la barre verticale à gauche) : bouton tout en bas de celle-ci
<br />
  * Comme je l'ai écrit, on peut faire revenir la barre de titre de la fenêtre (Paramètres, Général)
<br />
  * Menu Affichage, Disposition, Classique
<br />
  * Menu Affichage, Disposition, Panneau d'affichage des messages
<br />
  * Dans un dossier, Options d'affichage de la liste des messages (bouton tout à droite, à côté de Filtre rapide), Vue en tableau
<br />
  * Dans un dossier, sélectionner un message, bouton Autres, Personnaliser, tout décocher
<br />
  * Personnaliser la barre unifiée (celle au-dessus de la barre de menus et sous la barre de titre de la fenêtre) avec clic droit, personnaliser, pour y ajouter les boutons Relever, Écrire, etc.



Sans rapport avec la nouvelle interface :
  * Menu Affichage, Corps du message en, texte seul
<br />
  * Pour chaque dossier : menu Affichage, Trier par, Discussion non groupées
<br />
  * Pour chaque dossier, personnaliser la liste des messages (colonnes en plus ou en moins, emplacement de chaque colonne, etc.)


]]>
GuiGui's Show - Thursday 16 January 2025 http://shaarli.guiguishow.info/?do=daily&day=20250116 http://shaarli.guiguishow.info/?do=daily&day=20250116 Thu, 16 Jan 2025 00:00:00 +0100 Mon installation Firefox 2024 / Firefox 128 Thu Jan 16 21:45:37 2025 -
http://shaarli.guiguishow.info/?h0g7vw


En janvier 2024, je rencontrais quelques désagréments avec Firefox, notamment sur YouTube. De plus, j'ai fait évoluer quelques-unes de mes pratiques, notamment mon filtrage des traceurs, transferts de données à caractère personnel et des autres merdes qui composent le web aujourd'hui (je suis passé d'une politique « bloquer tout ce qui est tierce partie » à « bloquer les ressources web bien connues pour apparaître partout et qui ne sont pas pris en charge par une liste de filtrage uBlock Origin »). Enfin, les ajouts et retraits successifs, car les paramètres de Firefox changent, rendent [mon dernier article sur le sujet](/?9-JFuQ) difficile à lire (d'autant qu'il date d'avant le formatage Markdown dans Shaarli).

Évacuons la question toute de suite : pourquoi pas un clone de Firefox spécialisé dans la vie privée, comme Waterfox, Librefox, Librewolf, Floorp, etc. ? D'abord, car aucun n'a, par défaut, les paramètres que je veux. Ensuite, je recherche trois choses : pérennité, suivi et facilité de mise à jour. Par définition, un navigateur web est exposé sur l'extérieur, et des failles de sécurité sont corrigées tous les mois, donc il faut que les mises à jour soient rapides et automatisées via un canal de distribution de confiance (sans suivi, mutualisé avec d'autres logiciels, comme les dépôts d'un système Debian, par ex.). Bref, je fuis les logiciels qui ne sont pas empaquetés dans Debian, c'est toujours la galère pour les mettre à jour (on parle du dépôt Debian de Librewolf qui a changé d'adresse ?). Un paquet de clones de Firefox n'ont pas survécus, donc j'évite de me précipiter sur le dernier venu. À titre subsidiaire : Floorp et Waterfox sont derrière Cloudflare. Librewolf derrière Amazon. Respectueux de la vie privée, disions-nous ? (Oui, je sais, Mozilla, Debian, OpenStreetMap, le RIPE, et tant d'autres, sont aussi derrière ces géants, ce qui [me désole au plus haut point](/?KeAnBA)).

La configuration consignée ci-dessous est destinée à des **utilisateurs avancés** de Firefox. Je n'appliquerai pas les mêmes paramétrages chez un utilisateur lambda.




<br />
**Étape 1** : installer le [dictionnaire français](https://addons.mozilla.org/fr/firefox/language-tools/) (sinon de nombreux mots sont marqués, à tort, comme des erreurs par le correcteur).



<br />
**Étape 2** : retrouver la barre de menus (clic droit, barre de menus) et la barre de titre (clic droit, personnaliser la barre d'outils, cocher « barre de titre » tout en bas à gauche). Personnaliser la barre d'outils (ajouter l'outil de capture d'écran, supprimer les icônes Pocket et compte / synchronisation).



<br />
**Étape 3** : modifier les paramètres accessibles depuis le menu (édition, paramètres) :

  * Général
    * Ouvrir les fenêtres et onglets précédents
<br />
    * Apparence : sombre
<br />
    * Polices, avancé, décocher Autoriser les pages web à utiliser leurs propres polices

    * Fichiers et applications
      * Toujours demander où enregistrer les fichiers
<br />
      * Demander s'il faut ouvrir ou enregistrer les fichiers

    * Navigation
      * Décocher Activer les contrôles pour l'incrustation vidéo
<br />
      * Décocher Contrôler la lecture des médias via le clavier, un casque ou l’interface virtuelle
<br />
      * Décocher Recommander des extensions
<br />
      * Décocher Recommander des fonctionnalités

    * Paramètres réseaux : Utiliser un DNS distant lorsque SOCKS v5 est actif

  * Accueil
    * Page d'accueil et nouvelle fenêtre : page vide
<br />
    * Nouveaux onglets : page vide

  * Recherche
    * Décocher Afficher les suggestions de recherche
<br />
    * Ce n'est pas dans ce menu, mais ajouter la barre de recherche à la barre d'outils (clic droit, personnaliser la barre d'outils)
<br />
    * Ce n'est pas dans ce menu, mais ajouter les différents moteurs de recherche désirés à la barre de recherche (Startpage, DuckDuckGo, Qwant, Google, Wikipedia FR, Wikipedia EN, Wiktionnaire, Larousse, Robert, Bescherelle, Urban dictionary, OpenStreetMap, Nitter, Sepia search, YouTube, packages.debian.org, etc.). Soit en allant sur le site web, soit, pour ceux qui n'ont pas ajouté la [balise opensearch qui convient à leur site web](https://www.alsacreations.com/astuce/lire/1071-Opensearch-pour-ajouter-le-moteur-de-recherche-a-votre-navigateur.html), en utilisant [ce générateur](https://mycroftproject.com/). Dans le menu : trier les moteurs, indiquer celui par défaut, etc.  
   
  * Vie privée et sécurité
    * Protection stricte
<br />
    * Demander aux sites web de ne pas vendre ni partager mes données (GPC) / Ne pas me pister (DNT). Ce n'est pas respecté par les éditeurs de sites web, et ça contribue à créer une empreinte unique (donc facilement reconnaissable) du navigateur web, donc à chacun de choisir…
<br />
    * Supprimer les cookies et les données des sites à la fermeture. Ajouter des exceptions si besoin. Dans mon cas : eu.startpage.org, duckduckgo.com, et www.qwant.com afin qu'ils conservent mes paramètres (thème sombre, pas de filtrage des résultats pour me protéger, pas de suggestions, pas d'IA, etc.).
<br />
    * Décocher Proposer d'enregistrer les identifiants et les mots de passe
<br />
    * Décocher Enregistrer et renseigner les moyens de paiement
<br />
    * Décocher Afficher des alertes pour les mots de passe de sites concernés par des fuites de données
<br />
    * Décocher Compléter le champ des cartes bancaires automatiquement

    * Historique
      * Règles de conservation : utiliser les paramètres personnalisés
<br />
      * Conserver l'historique des recherches et des formulaires
<br />
      * Vider l'historique lors de la fermeture. Dans les paramètres : cocher cookies et données de sites, fichiers et pages en cache temporaire

    * Permissions :
      * Localisation : bloquer les nouvelles demandes
<br />
      * Caméra : idem
<br />
      * Micro : idem
<br />
      * Notifications : idem
<br />
      * Lecture auto : par défaut = bloquer l'audio et la vidéo
<br />
      * Réalité virtuelle : bloquer

    * Collecte de données par Firefox : tout est décoché par défaut dans Debian, et c'est ce qu'il faut
<br />
    * Les préférences publicitaires des sites web, c'est-à-dire la [Privacy preserving attribution](https://noyb.eu/en/firefox-tracks-you-privacy-preserving-feature), soit la même merde que Google Privacy sandbox, sont désactivées par défaut dans Debian, et c'est ce qu'il faut
<br />
    * Décocher Bloquer les contenus dangereux ou trompeur (Google Safebrowsing)
<br />
    * Certificats : décocher Interroger le répondeur OCSP ([explication](/?SgQmAA)) ; Dans Afficher les certificats, Autorités, [désactiver les autorités x509 inutiles](/?hc3aBg)
<br />
    * Activer le mode HTTPS uniquement dans toutes les fenêtres    
<br />
    * Désactiver le DNS via HTTPS (j'utilise un VPN vers un FAI associatif, les serveurs DNS récursifs sont à l'autre bout de ce VPN, et je veux que Firefox ait le même comportement que mes outils de diagnostic DNS en ligne de commande


 


<br />
**Étape 4** : on installe et configure des extensions

D'abord, les indispensables :
  * uBlock Origin

    * Paramètres : cocher Je suis un utilisateur/une utilisatrice avancé(e)

    * Listes de filtres :
      * uBlock filters : toutes (Ads, badware risks, privacy, quick fixes, unbreak)
<br />
      * Publicités : toutes (EasyList, AdGuard Ads, AdGuard Mobile Ads)
<br />
      * Confidentialité : EasyPrivacy, AdGuard Tracking Protection, AdGuard URL Tracking Protection
<br />
      * Protection anti-malware et sécurité : toutes (Online Malicious URL Blocklist, Phishing URL Blocklist)
<br />
      * Tout usage : Peter Lowe's Ad and tracking server list (Dan Pollock's hosts file contient des sites web dérangeants, crades, etc. genre 2girl1cup, ce qui ne constitue pas un motif de filtrage à mes yeux)
<br />
      * Bannières de cookie : toutes (EasyList/uBO - Cookie Notices et sous-listes, AdGuard/uBO - Cookie Notices et sous-listes)
<br />
      * Widgets de réseaux sociaux : toutes (EasyList - Social Widgets, AdGuard - Social Widgets, Fanboy - Anti-Facebook)
<br />
      * Nuisances : toutes (EasyList - Annoyances et sous-listes, AdGuard - Annoyances et sous-listes, uBlock filters - Annoyances
<br />
      * Régions, langues : AdGuard Français
<br />
      * Mes propres listes :
          * Actually Legitimate URL Shortener Tool ( https://raw.githubusercontent.com/DandelionSprout/adfilt/refs/heads/master/LegitimateURLShortener.txt )
<br />
          * Fanboy's Annoyance List ( https://secure.fanboy.co.nz/fanboy-annoyance.txt )
<br />
          * AdGuard Spyware ( https://raw.githubusercontent.com/AdguardTeam/FiltersRegistry/master/filters/filter_3_Spyware/filter.txt
<br />
          * EasyList FR ( https://raw.githubusercontent.com/easylist/listefr/refs/heads/master/liste_fr.txt )

    * Mes filtres :

```
# Merdes chez Microsoft Azure
blob.core.windows.net
 
# Tout script nommé ads.js
/ads.js
 
# # Sentry via un sous-domaine
://sentry.

# Polices de caractères en tierce partie
*$font,third-party
```

  * (Cette puce ne sert à rien, mais Shaarli oblige sa présence.)
    * Mon filtrage dynamique. L'objectif est de filtrer les ressources web que l'on retrouve sur de nombreux sites (bootstrapCDN, fonts Google, jsdelivr.net, etc.). Attention : ça casse de nombreux sites, mais ça évite des transferts de données à caractère personnel dans tous les sens.

```
* addtoany.com * block
* adobedtm.com * block
* ajax.googleapis.com * block
* akamai.net * block
* akamaiedge.net * block
* algolia.net * block
* algolianet.com * block
* amazon.com * block
* amazonaws.com * block
* appconsent.io * block
* aticdn.net * block
* bootstrapcdn.com * block
* cachefly.net * block
* cdn-apple.com * block
* cdnfonts.com * block
* cdninstagram.com * block
* chartbeat.com * block
* cdnjs.cloudflare.com * block
* cloudflare.net * block
* cloudfront.net * block
* cookielaw.org * block
* coralproject.net * block
* i.creativecommons.org * block
* dailymotion.com * block
* disqus.com * block
* dmcdn.net * block
* donorbox.org * block
* doubleclick.net * block
* edgecastcdn.net * block
* edgio.net * block
* embed.ly * block
* embedly.com * block
* facebook.com * block
* fastly.net * block
* firestore.googleapis.com * block
* fontawesome.com * block
* fonts.googleapis.com * block
* fonts.net * block
* google.com * block
* google.fr * block
* googletagmanager.com * block
* googleusercontent.com * block
* gravatar.com * block
* gstatic.com * block
* hcaptcha.com * block
* herokuapp.com * block
* herokudns.com * block
* hsappstatic.net * block
* hsforms.net * block
* hubspot.com * block
* hubspot.net * block
* imasdk.googleapis.com * block
* impervadns.net * block
* inbenta.io * block
* incapdns.net * block
* instagram.com * block
* code.jquery.com * block
* jsdelivr.map.fastly.net * block
* jsdelivr.net * block
* jwplayer.com * block
* kameleoon.eu * block
* kxcdn.com * block
* mailchimp.com * block
* mailjet.com * block
* mapbox.com * block
* maps.googleapis.com * block
* maze.co * block
* myfeelback.com * block
* paypal.com * block
* piano.io * block
* polyfill-fastly.io * block
* polyfill-fastly.net * block
* polyfill.io * block
* privacy-center.org * block
* privacy-mgmt.com * block
* ravenjs.com * block
* rechargecdn.com * block
* rosselcdn.net * block
* sentry-cdn.com * block
* skeepers.io * block
* smile.io * block
* soundcloud.com * block
* storage.googleapis.com * block
* stripe.com * block
* tagcommander.com * block
* tiktok.com * block
* tiqcdn.com * block
* transcend-cdn.com * block
* twimg.com * block
* twitch.tv * block
* twitter.com * block
* platform.twitter.com * block
* typeform.com * block
* typekit.net * block
* typography.com * block
* ultimedia.com * block
* unpkg.com * block
* usercentrics.eu * block
* metrics.video-dns.com * block
* vercel-dns.com * block
* vimeo.com * block
* wordpress.com * block
* wp.com * block
* youtube-nocookie.com * block
* youtube.com * block
* ytimg.com * block
* zdassets.com * block
* zencdn.net * block
* zendesk.com * block
www.amazon.fr amazon.com * noop
www.amazon.fr amazon.map.fastly.net * noop
www.amazon.fr amazonaws.com * noop
www.dailymotion.com dailymotion.com * noop
www.dailymotion.com dmcdn.net * noop
www.dailymotion.com privacy-mgmt.com * noop
images.google.com google.com * noop
images.google.com gstatic.com * noop
lens.google.com google.com * noop
lens.google.com gstatic.com * noop
news.google.com google.com * noop
news.google.com googleusercontent.com * noop
news.google.com gstatic.com * noop
play.google.com google.com * noop
play.google.com play.google.com * noop
play.google.com googleusercontent.com * noop
play.google.com gstatic.com * noop
support.google.com google.com * noop
translate.google.com google.com * noop
translate.google.com gstatic.com * noop
www.google.com google.com * noop
www.google.com gstatic.com * noop
www.google.fr google.fr * noop
www.google.fr gstatic.com * noop
www.instagram.com cdninstagram.com * noop
www.instagram.com facebook.com * noop
www.instagram.com instagram.com * noop
www.instagram.com www.instagram.com * noop
meteofrance.com * 3p block
meteofrance.com cloudflare.com * noop
meteofrance.com cdnjs.cloudflare.com * noop
meteofrance.com cloudflare.net * noop
meteofrance.com jsdelivr.map.fastly.net * noop
meteofrance.com jsdelivr.net * noop
meteofrance.com unpkg.com * noop
www.openstreetmap.org dualstack.n.sni.global.fastly.net * noop
www.openstreetmap.org jsdelivr.map.fastly.net * noop
www.openstreetmap.org jsdelivr.net * noop
www.openstreetmap.org cdn.jsdelivr.net.cdn.cloudflare.net * noop
twitter.com edgecastcdn.net * noop
twitter.com twimg.com * noop
twitter.com twitter.com * noop
vimeo.com com.cdn.cloudflare.net * noop
vimeo.com api.vimeo.com.cdn.cloudflare.net * noop
vimeo.com vimeo-video.map.fastly.net * noop
vimeo.com vimeo.com * noop
vimeo.com vimeo.map.fastly.net * noop
x.com edgecastcdn.net * noop
x.com twimg.com * noop
x.com twitter.com * noop
x.com twitter.map.fastly.net * noop
www.youtube.com google.com * noop
www.youtube.com googleusercontent.com * noop
www.youtube.com gstatic.com * noop
www.youtube.com youtube.com * noop
www.youtube.com ytimg.com * noop
```

  * NoScript (Security Suite)
    * Général : cocher Définir temporairement les sites de haut niveau comme FIABLES
<br />
    * Apparence : cocher Lister les adresses complètes dans la fenêtre contextuelle des autorisations (https://www.noscript.net)

  * Smart Referer. Dans les préférences : choisir Strict pour le Domain name matching
<br />
  * LocalCDN
<br />
  * I still don't care about cookies

  * Cookie Autodelete
    * Paramètres des CAD
      * Activer le nettoyage automatique
<br />
      * 30 secondes avant le nettoyage automatique (après la fermeture d'un onglet ou le changement de domaine)
<br />
      * Activer le nettoyage des onglets abandonnés / non chargés
<br />
      * Activer le nettoyage lors d'un changement de domaine
<br />
      * Nettoyer tous les cookies expirés
<br />
      * Décocher Afficher la notification après le nettoyage automatique
<br />
      * Décocher Afficher les notifications de nettoyage manuel des données de site

    * Liste d'expressions : ajouter les domaines pour lesquels il ne faut pas supprimer les cookies (dans mon cas : eu.startpage.org, duckduckgo.com, et www.qwant.com afin qu'ils conservent mes paramètres (thème sombre, pas de filtrage des résultats pour me protéger, pas de suggestions, pas d'IA, etc.).

<br />
Ensuite, en fonction des usages et des goûts :
  * PassFF (dans les préférences, section « Entrées », ajouter « ,account, identification » dans « Noms des champs d'identifiant »)
<br />
  * Dark Reader
<br />
  * Anchors Reveal
<br />
  * Cookie Quick Manager
<br />
  * Bypass Paywalls Clean (rêve pas, ça fonctionne sur très peu de site)



<br />
**Étape 5** : modifier les paramètres avancés dans about:config.

D'abord, pour mes besoins persos et d'après mes expériences persos :
  * browser.cache.disk.enable => false
<br />
  * browser.download.start_downloads_in_tmp_dir => true
<br />
  * browser.formfill.enable => false
<br />
  * browser.pagethumbnails.capturing_disabled => true
<br />
  * browser.region.network.url => ""
<br />
  * browser.region.update.enabled => false
<br />
  * browser.search.openintab => true
<br />
  * browser.urlbar.trimURLs => false (aucun effet sur le schéma https://, mais, si true, http:// est bien supprimé)
<br />
  * device.sensors.enabled => false
<br />
  * dom.battery.enabled => false
<br />
  * dom.block_download_insecure => false
<br />
  * dom.disable_beforeunload => true (évite les messages JavaScript du type « Êtes-vous sûr de vouloir quitter ? » ;
<br />
  * dom.event.clipboardevents.enabled => true. Attention : le copier-coller dans deepl.com ou OnlyOffice dysfonctionne. C'est vraiment relou au quotidien. À l'inverse, très peu de sites web tentent d'interdire le copier-coller. Donc je ne désactive plus ce paramètre en le mettant à false.
<br />
  * dom.popup_allowed_events -> "click dblclick mousedown pointerdown"
<br />
  * dom.webnotifications.enabled => false
<br />
  * entity.fxaccounts.enabled => false
<br />
  * extensions.formautofill.addresses.enabled
<br />
  * extensions.pocket.enabled => false
<br />
  * geo.enabled => false
<br />
  * keyword.enabled => false
<br />
  * layout.spellcheckDefault => 2
<br />
  * media.autoplay.blocking_policy => 2
<br />
  * media.gmp-manager.url => ""
<br />
  * media.gmp-provider.enabled => false
<br />
  * media.peerconnection.ice.force_interface => tun0
<br />
  * permissions.default.shortcuts => 2. [Explication](https://ban.netlib.re/shaarli/shaare/Hj9LWw).

<br />
Ensuite, [selon Arkenfox](https://github.com/arkenfox/user.js) :
  * accessibility.force_disabled => 1
<br />
  * app.normandy.api_url => ""
<br />
  * app.normandy.enabled => false
<br />
  * breakpad.reportURL => ""
<br />
  * browser.download.alwaysOpenPanel => false
<br />
  * browser.download.manager.addToRecentDocs => false
<br />
  * browser.link.open_newwindow.restriction => 0
<br />
  * browser.newtabpage.activity-stream.feeds.telemetry => false
<br />
  * browser.newtabpage.activity-stream.telemetry => false
<br />
  * browser.places.speculativeConnect.enabled => false
<br />
  * browser.safebrowsing.allowOverride => false
<br />
  * browser.safebrowsing.downloads.enabled => false
<br />
  * browser.safebrowsing.downloads.remote.block_potentially_unwanted => false
<br />
  * browser.safebrowsing.downloads.remote.block_uncommon => false
<br />
  * browser.safebrowsing.downloads.remote.enabled => false (les paramètres proposés dans le menu ne suffisent pas)
<br />
  * browser.safebrowsing.downloads.remote.url => ""
<br />
  * browser.sessionstore.privacy_level => 2
<br />
  * browser.tabs.crashReporting.sendReport => false
<br />
  * browser.tabs.searchclipboardfor.middleclick => false
<br />
  * browser.uitour.enabled => false
<br />
  * browser.urlbar.addons.featureGate => false
<br />
  * browser.urlbar.mdn.featureGate => false
<br />
  * browser.urlbar.pocket.featureGate => false
<br />
  * browser.urlbar.quicksuggest.enabled => false
<br />
  * browser.urlbar.speculativeConnect.enabled => false
<br />
  * browser.urlbar.trending.featureGate => false
<br />
  * browser.urlbar.weather.featureGate => false
<br />
  * browser.urlbar.yelp.featureGate => false
<br />
  * browser.xul.error_pages.expert_bad_cert => true
<br />
  * captivedetect.canonicalURL => ""
<br />
  * datareporting.policy.dataSubmissionEnabled => false
<br />
  * dom.disable_window_move_resize => true
<br />
  * dom.security.https_only_mode_send_http_background_request => false
<br />
  * extensions.autoDisableScopes => 15
<br />
  * extensions.enabledScopes => 5
<br />
  * extensions.getAddons.showPane => false
<br />
  * extensions.htmlaboutaddons.recommendations.enabled => false
<br />
  * extensions.postDownloadThirdPartyPrompt => false
<br />
  * extensions.quarantinedDomains.enabled => false
<br />
  * geo.provider.use_geoclue => false
<br />
  * geo.provider.use_gpsd => false
<br />
  * media.memory_cache_max_size => 65536
<br />
  * network.auth.subresource-http-auth-allow => 1
<br />
  * network.captive-portal-service.enabled => false
<br />
  * network.connectivity-service.enabled => false
<br />
  * network.dns.disablePrefetchFromHTTPS => true
<br />
  * network.dns.disablePrefetch => true
<br />
  * network.file.disable_unc_paths => true
<br />
  * network.gio.supported-protocols => ""
<br />
  * network.http.speculative-parallel-limit => 0
<br />
  * network.IDN_show_punycode => true
<br />
  * network.predictor.enabled => false
<br />
  * network.prefetch-next => false
<br />
  * pdfjs.disabled => true
<br />
  * permissions.manager.defaultsUrl => ""
<br />
  * privacy.cpd.cookies => false
<br />
  * privacy.cpd.offlineApps => false
<br />
  * privacy.resistFingerprinting
<br />
  * privacy.resistFingerprinting.block_mozAddonManager => true
<br />
  * privacy.resistFingerprinting.pbmode => true
<br />
  * privacy.userContext.enabled => true
<br />
  * privacy.userContext.ui.enabled => true
<br />
  * privacy.window.maxInnerHeight", 900);
<br />
  * privacy.window.maxInnerWidth", 1600);
<br />
  * security.pki.crlite_mode => 0
<br />
  * security.ssl.require_safe_negotiation => true
<br />
  * security.ssl.treat_unsafe_negotiation_as_broken => true
<br />
  * security.tls.enable_0rtt_data => false
<br />
  * signon.autofillForms => false
<br />
  * signon.formlessCapture.enabled => false
<br />
  * toolkit.coverage.endpoint.base => ""
<br />
  * toolkit.coverage.opt-out => true
<br />
  * toolkit.telemetry.archive.enabled => false
<br />
  * toolkit.telemetry.bhrPing.enabled => false
<br />
  * toolkit.telemetry.coverage.opt-out => true
<br />
  * toolkit.telemetry.firstShutdownPing.enabled => false
<br />
  * toolkit.telemetry.newProfilePing.enabled => false
<br />
  * toolkit.telemetry.server => data:
<br />
  * toolkit.telemetry.shutdownPingSender.enabled => false
<br />
  * toolkit.telemetry.unified => false
<br />
  * toolkit.telemetry.updatePing.enabled => false
<br />
  * webchannel.allowObject.urlWhitelist => ""


<br />
Casse des choses sans être utile :
  * gfx.font_rendering.opentype_svg.enabled


De Debian GNU/Linux Bullseye à Bookworm / Debian 11 à 12

Thu Jan 16 15:41:35 2025 -
http://shaarli.guiguishow.info/?_lVXvA


Comme à chaque passage à une nouvelle version de Debian GNU/Linux, voici un résumé de tout ce qui a foiré ou changé quand je suis passé à Bookworm (Debian 12). (Oui, cet article est en retard, mais, finalement, ça ne fait qu'un an que je suis passé à Debian 12, qui avait alors huit mois.)

Pour effectuer la mise à jour, on suit [la doc'](https://www.debian.org/releases/bookworm/amd64/release-notes/ch-upgrading.en.html).

Peu de changements sur les logiciels serveurs que j'utilise.


<br />
### BIND

Les directives de configuration `additional-from-auth` et `additional-from-cache` n'existent plus.


<br />
### Deluge

En permanence, deluge consigne ce qui suit dans `~/.xsession-errors` :
```
[CRITICAL][twisted                           :147 ] Unhandled Error
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/deluge/ui/gtk3/gtkui.py", line 246, in start
    reactor.run()
  File "/usr/lib/python3/dist-packages/twisted/internet/_glibbase.py", line 277, in run
    self._run()
  File "/usr/lib/python3/dist-packages/gi/overrides/Gtk.py", line 1689, in main
    return _Gtk_main(*args, **kwargs)
  File "/usr/lib/python3/dist-packages/twisted/internet/_glibbase.py", line 308, in _simulate
    self.runUntilCurrent()
--- <exception caught here\> ---
  File "/usr/lib/python3/dist-packages/twisted/internet/base.py", line 991, in runUntilCurrent
    call.func(*call.args, **call.kw)
  File "/usr/lib/python3/dist-packages/deluge/core/core.py", line 345, in _on_alert_session_stats
    self._update_session_cache_hit_ratio()
  File "/usr/lib/python3/dist-packages/deluge/core/core.py", line 361, in _update_session_cache_hit_ratio
    self.session_status['disk.num_blocks_cache_hits'] / blocks_read
builtins.KeyError: 'disk.num_blocks_cache_hits'
```

Il faut appliquer le [patch suivant](https://github.com/deluge-torrent/deluge/commit/89189adb24321c3db6bfa816ec557d7d8367ba24) au fichier `/usr/lib/python3/dist-packages/deluge/core/core.py`.


<br />
### DHCP

`dhclient`, du paquet `isc-dhcp-client` n'est plus maintenu depuis 2022, tout comme le relai DHCP de l'ISC. `apt-listchanges` nous expose qu'il sera donc supprimé après la version actuelle (4.4.3), mais il est toujours dans testing, donc bon, ça risque de traîner.

NetworkManager de GNOME / Mate utilise sa propre implémentation (`sudo grep dhcp /var/log/syslog` : « dhcp: init: Using DHCP client 'internal' »). (On peut [lui faire utiliser dhclient](https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/8/html/configuring_and_managing_networking/configuring-networkmanager-dhcp-settings_configuring-and-managing-networking#proc_changing-the-dhcp-client-of-networkmanager_configuring-networkmanager-dhcp-settings).) J'imagine qu'il en va de même de `systemd-networkd`. Du coup, ça ne pose pas de souci, sauf pour un client en ligne de commande dans un environnement restreint (sans systemd, quoi).


<br />
### dm-crypt / LUKS

`apt-listchanges` nous expose qu'il existe un paquet additionnel, `cryptsetup-suspend`, qui permet de retirer la clé de déchiffrement du support de stockage d'un système intégralement chiffré avant de suspend-to-ram ou suspend-to-disk (deux modes d'hibernation). J'étais hyper sceptique. J'ai lu [cet article](https://blog.freesources.org/posts/2020/08/cryptsetup-suspend/). J'ai testé (il suffit juste d'installer le paquet précité). Ça fonctionne au poil avec mon suspend-to-ram usuel.

Ça ne démonte pas les supports de stockage externes chiffrés.

L'article sus-pointé expose que `systemd-homed` permet de gérer les répertoires personnels des utilisateurs, y compris en les chiffrant, et, qu'alors, il officie comme `cryptsetup-suspend` mais uniquement à leur égard.

Je n'ai pas un [modèle de menace](https://fr.wikipedia.org/wiki/Mod%C3%A8le_de_menace) qui exige l'utilisation de `cryptsetup-suspend` (sinon, j'aurais éteint mon ordi toutes ces années au lieu de le mettre en hibernation), donc je l'ai désinstallé.


<br />
### Gajim

[Johndescs](https://www.jonathan.michalon.eu/shaarli/) m'avait prévenu que la nouvelle interface est kikoo-moderne, reprenant l'apparence (et la non-ergonomie) des applis de messagerie "modernes" pour smartphone (messages groupés, workspace, navigation au clavier dans les onglets imprédictible car le point de départ est la dernière convers active, etc.). Donc, avant de mettre à jour mon système, j'avais gelé les paquets de Gajim ('apt-mark hold`). Néanmoins, l'ancienne version refuse de se lancer sur Debian 12 (« err  (org.gajim.Gajim:2828): libsoup-ERROR **: 23:18:06.243: libsoup2 symbols detected. Using libsoup2 and libsoup3 in the same process is not supported. Trappe pour point d'arrêt et de trace »). libsoup, version 2 ou 3, ne peut pas être désinstallée, car MATE et d'autres logiciels dépendent d'elle. Du coup, j'ai dû mettre à jour Gajim.

L'historique de conservation se trouve dans le menu d'une conservation (bouton tout en bas à droite). Le champ permet de rechercher par mots-clés. Pour avoir l'historique pour un jour donné, il faut cliquer sur l'icône calendrier en haut à droite.

Néanmoins, il y a le même [bug qu'avec RocketChat](/?RM3kug) : t'es dans l'historique à la ligne X puis pouf, à la ligne X+1 tu reviens sur le jour en cours ou sur le lendemain d'où tu étais… sans que la suite de la conversation archivée ne soit affichée. Bref, tu n'obtiens qu'une partie, aléatoire, de l'historique…

Il est possible d'exporter tout l'historique (et tous les historiques) depuis le menu comptes, modifier le compte, choisir le compte, onglet confidentialité, exporter l'historique de discussion. On obtient un fichier texte par contact. Attention avec `grep` : l'heure n'étant plus affichée au début de chaque message (comme dans une appli de messagerie kikoo-moderne qui groupe les messages), un message multilignes sera tronqué lors d'une recherche par date.

Pour copier-coller plusieurs messages depuis une fenêtre de conversation, il ne suffit pas, comme avant, de les surligner à la souris (ça permet d'obtenir un seul message à la fois, appli kikoo-moderne one more time…), il faut passer la souris sur un message, cliquer sur l'icône « … » à droite du message, puis select messages, et de cliquer sur chaque message…

À cause du thème de mon environnement de bureau, indirectement, le champ de saisie est blanc et la couleur du texte… blanche. Bref, c'est inutilisable. J'ai essayé de personnaliser les couleurs dans les paramètres avancés de Gajim, mais rien ne concerne le champ de saisie. Au final, j'ai utilisé un autre thème sombre de MATE et j'ai fini par m'y habituer (d'ailleurs, il y a probablement de la config foireuse ou des paquets manquants à ce niveau-là puisque en fonction du thème choisi, mon environnement de bureau crashe, mais ce n'est pas la faute de Gajim).

Autre bug : parfois, un alt+tab (y compris à la souris) vers Gajim rame à mort, il faut plus de 5 secondes avant de pouvoir écrire en ayant le retour de ce qu'on écrit. On dirait un bug de rafraîchissement de la fenêtre. Il suffit de fermer et de re-ouvrir Gajim pour corriger temporairement ce problème. J'ai trouvé un [signalement similaire](https://dev.gajim.org/gajim/gajim/-/issues/11766) dans le bugtracker de Gajim. A priori, ça sent le bug GTK ou plus loin. Dans `mate-tweak`, onglet fenêtres, j'ai essayé de changer le gestionnaire de fenêtres (avec ou sans composition, etc.), sans succès (sur le moment, ça semble améliorer les choses, mais non, et ce n'est pas reproductible).

Un bug n'est toujours pas corrigé : j'ai configuré Gajim pour ne pas changer d'état (absent, pas dispo) automatiquement et pour ne pas le transmettre à mes interlocuteurs. Je ne change jamais mon état manuellement. Pourtant, mes contacts voit « Guigui est maintenant en ligne » alors que je l'étais déjà, et ça correspond bien à mon inactivité sur l'ordi…


<br />
### hash-slinger

Ce paquet fournit les scripts [tlsa](/?M3y2yQ), [sshfp](/?QWcOtQ) et [openpgpkey](/?VIhbjQ).

[Comme dans une version de Debian sur deux](/?Mfvd7A), soit il n'est pas empaqueté, soit ça déconne (cette fois-ci, c'est le cas de sshfp).

J'ai récupéré les scripts dans le [dépôt git du projet](https://github.com/letoams/hash-slinger) et les ai mis dans `/usr/local/bin`. Fin de chantier.


<br />
### hddtemp

Il disparaît des dépôts logiciels officiels de Debian. On avait été informé lors du [passage à Debian 11](/?_V2wqw).

Dans mon cas, `mate-sensors-applet` utilise `udisks2` et ça fonctionne, donc je n'ai pas besoin d'aller plus loin. Sinon, il est possible d'utiliser le module noyau « drivetemps » (il faut le charger soi-même).


<br />
### htop

Désormais, il comporte un onglet « I/O » qui ne dépend même pas d'`iotop`.


<br />
### JOSM

Éditeur de la [carte géographique OpenStreetMap](https://openstreetmap.org).

À son lancement, j'ai l'erreur suivante :
```
Using /usr/lib/jvm/java-17-openjdk-amd64/bin/java to execute josm.
Error occurred during initialization of boot layer
java.lang.module.FindException: Module javafx.web not found
```
Solution : `apt install openjfx`. Simple.


<br />
### libdvd-pkg

Simplifie l'installation de la libdvdcss qui permet de lire des DVD (avec VLC, par ex.).

Ça télécharge la lib, puis :
 ```
libdvd-pkg: Checking orig.tar integrity...
/usr/src/libdvd-pkg/libdvdcss_1.4.3.orig.tar.bz2: Réussi
libdvd-pkg: `apt-get check` failed, you may have broken packages. Aborting...
```

Sur le moment, puisque je ne mate pas de DVD, je n'avais pas de temps à perdre, donc j'avais `apt remove libdvd-pkg`. Basique. Cependant, aujourd'hui, un an plus tard, je constate que `apt install libdvd-pkg` fonctionne parfaitement. Il s'agissait donc d'une erreur temporaire côté VLC (qui héberge la libdvdcss).


<br />
### mat2

Permet de lire et supprimer les métadonnées d'une palanquée de types de documents.

Il me crache l'erreur : « no module named libmat2 ».

Solution : `apt install --reinstall mat2`. Simple.


<br />
### nginx

> The packages nginx-core, nginx-full, nginx-light, nginx-extras are deprecated. Packages no longer distribute the nginx binary and are replaced by a metapackage to keep upgrades smooth.
> Please simply install 'nginx' and 'libnginx-mod-...' modules You need instead of these packages.


<br />
### nicinfo

Un client [RDAP](https://www.bortzmeyer.org/weirds-rdap.html) pour interroger les bases de données publiques visant les objets d'Internet (adresses IP, noms de domaine, numéros d'AS).

Il m'affiche l'erreur « bash: /usr/local/bin/nicinfo : ne peut exécuter : le fichier requis n'a pas été trouvé ».

/usr/local/bin/nicinfo est un programme Ruby. Il énonce :
```
# The application 'nicinfo' is installed as part of a gem, and
# this file is here to facilitate running it.
```

Il serait distribué sous forme de gem (un paquet Ruby, quoi). Or, `gem list | grep nicinfo` retourne une liste vide.

Solution : `sudo gem install nicinfo`. Basique.


<br />
### non-free-firmware

Un nouveau composant (une section) dans les dépôts logiciels officiels qui contient juste les firmwares non-libres (alors que non-free contient en sus des [logiciels privateurs](https://fr.wikipedia.org/wiki/Logiciel_propri%C3%A9taire)).

Après vérification, j'ai toujours besoin de `firmware-iwlwifi` pour ma carte Wi-Fi Intel commercialisée en 2013…


<br />
### NTP

La suite de logiciels NTP (ntpd, ntpq, ntpdate, etc.) n'est plus celle de ntp.org, mais du fork ntpsec.org. [Source](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1028149).

Désormais, le fichier de conf' est `/etc/ntpsec/ntp.conf`, donc je supprime `/etc/ntp.conf` et `/etc/cron.daily/ntp` (purge des statistiques que je ne gènère pas). Je stocke désormais le décalage de l'horloge (driftfile) dans `/var/lib/ntpsec/`. Pour éviter l'écriture, dans son journal, d'une erreur non bloquante « statistics directory /var/log/ntpsec/ does not exist or is unwriteable, error No such file or directory » alors que je n'utilise pas les stats (je n'ai positionné aucune directive de configuration en ce sens), j'ai ajouté `statsdir /var/lib/ntpsec/` dans ma config.

`systemctl <action> ntp` continue de fonctionner grâce à un alias fourni par l'unit ntpsec. Le processus se nomme toujours ntpd.

On peut donc effacer `/etc/ntp.conf` et `/var/lib/ntp`.


<br />
### OpenSSH

D'une part, SSH désactive l'algorithme ssh-rsa, car il utilise SHA-1. C'était [déjà le cas dans Ubuntu 22.04](/?4DVyLA) (puisqu'une nouvelle version d'Ubuntu sort plus fréquemment que Debian).

D'autre part, j'utilise des [enregistrements DNS de type SSHFP](/?QWcOtQ). Sur mes serveurs dont le support de stockage est intégralement chiffré, j'ai deux enregistrement SSHFP : l'un pour le système régulier, l'autre pour l'[initramfs qui me permet de déverrouiller mon système chiffré](/?cgjIQw).

Or, depuis sa version 8.7, [OpenSSH n'accepte plus qu'un seul SSHFP par machine](https://lists.mindrot.org/pipermail/openssh-unix-dev/2022-March/040127.html) :
> debug3: verify_host_key_dns
> debug1: found 2 secure fingerprints in DNS
> debug3: verify_host_key_dns: checking SSHFP type 1 fptype 2
> debug1: verify_host_key_dns: matched SSHFP type 1 fptype 2
> debug3: verify_host_key_dns: checking SSHFP type 1 fptype 2
> debug1: verify_host_key_dns: failed SSHFP type 1 fptype 2
> debug1: mismatching host key fingerprint found in DNS

À regret, j'utilise la même paire de clés pour mon système et son initrd…


<br />
### OpenSSL

Passage à la version 3. Depuis cette version, le [SECLEVEL 1 désactive SHA-1](https://docs.openssl.org/3.0/man3/SSL_CTX_set_security_level/#default-callback-behaviour), qui est [nécessaire pour utiliser TLS 1.0 et TLS 1.1](https://github.com/openssl/openssl/issues/17476#issuecomment-1010812582). Donc, sur les bouses, il faudra diminuer le niveau de sécurité (SECLEVEL 0) dans le fichier de config' d'OpenSSL ou du logiciel… voire le recompiler.


<br />
### OpenVPN

D'une part, OpenVPN est adossé à OpenSSL, qui, comme dit supra, désactive plusieurs vieux algorithmes de condensation et de chiffrement, les clés < 1024 bits, TLS < 1.2, etc. Si la négociation des algos entre serveur et clients n'est pas activée et que l'un des deux utilise des algos abandonnés, le VPN ne sera pas établi.

D'autre part, c'est l'arrivée, dans Debian, du Data Channel Offload (DCO). OpenVPN tourne à la fois dans l'espace noyau (kernel-land) et dans l'espace utilisateur (userland) en fonction de la fonctionnalité (ex. : le réseau, les interfaces de type TUN, relèvent de l'espace noyau, alors qu'OpenVPN lui-même tourne en espace utilisateur). Il y a donc de nombreux transferts, en RAM, entre ces deux espaces. Cela ralentit les performances, et donc le débit, d'un tunnel OpenVPN. DCO est un module pour Linux qui fait remonter l'essentiel des opérations dans le noyau (pas uniquement la cryptographie, contrairement à ce qu'expose `apt-listchange`). Notons que le concurrent, Wireguard, tourne essentiellement dans l'espace noyau.

Pour l'instant, DCO repose sur DKMS donc c'est pas optimal (il faut les entêtes de programmation du noyau, compiler le noyau, DKMS = hooks apt, etc.).

Mise en place : `sudo apt install linux-headers-$(uname -r) openvpn-dco-dkms`. Puis redémarrer le serveur ou le client.

Dans le journal d'OpenVPN :
Avant : « Note: Kernel support for ovpn-dco missing, disabling data channel offload. »
Après : « DCO version: 0.0+git20231103 »

On voit également DCO dans `ip -d l` (dernière ligne) :
```
7: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
     link/none  promiscuity 0  allmulti 0 minmtu 68 maxmtu 65463
     ovpn-dco addrgenmode random numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535 tso_max_size 65536 tso_max_segs 65535 gro_max_size 65536
```

<br />
### PHP

Le passage de PHP 7.4 à 8.2 pique…

<br />
#### Wordpress

`create_function()` n'existe plus pour créer une fonction anonyme… On peut soit déclarer directement une fonction anonyme (ça devient illisible), soit utiliser une fonction nommée standard. Exemple :
```
# add_filter('login_errors',create_function('$a', 'return null;'));
$nologinfo = function ($a) {
    return null;
};
add_filter('login_errors', $nologinfo);
```

WordPress crache « PHP Warning:  Constant FORCE_SSL_ADMIN already defined » ? [Solution ici](https://stackoverflow.com/questions/54572231/wordpress-force-ssl-admin-already-defined-appears-when-i-install-my-plugin).


<br />
#### Shaarli

La fonction strftime() est obsolète, donc PHP affiche une notice de dépréciation. Shaarli l'utilise dans les templates, ce qui complique [sa substitution](https://php.watch/versions/8.1/strftime-gmstrftime-deprecated)…

Une méthode d'une classe qui implémente une interface doit avoir le même type de retour que dans l'interface (logique…). Sinon, une notice de dépréciation est affichée. Il est possible d'ajouter « #[\ReturnTypeWillChange] » avant la méthode en question pour que PHP n'émette pas la notice. Dans shaarli, c'est la classe de stockage des liens (LinkDB), qui est centrale, qui est impactée, ce qui signifie que, tôt ou tard (on évoque PHP 9), ma version de shaarli ne pourra plus fonctionner sur un PHP à jour.

En production, j'aime bien avoir des journaux verbeux afin de détecter les problèmes et les corriger. Mais, en l'état, je ne peux rien corriger, et mon shaarli génère 22 Mo de journal par tranche de 12 h, ce qui n'est pas tenable (je pourrais stocker 1,3 Go par mois, ce n'est pas la question, mais ça noie les autres erreurs).

A priori, il existe une version de shaarli qui, à la fois, n'utilise plus LinkDB, et n'utilise pas encore composer. En attendant d'y réfléchir, dans index.php de Shaarli, je remplace la ligne « error_reporting[…] » par `error_reporting(E_ALL^E_DEPRECATED);` afin de tout consigner, sauf les dépréciations.


<br />
#### RSS-Bridge

> ERROR Fatal Error 8192: Creation of dynamic property YoutubeBridge::$request is deprecated in bridges/YoutubeBridge.php line 321

Hé oui, il n'est plus possible d'affecter un membre à une classe qui ne le déclare pas (logique, encore)… Solution : utiliser YouTubeCommunityTabBridge à la place de YouTubeBridge.


<br />
#### Tiny Tiny RSS

> PHP Fatal error:  Uncaught ArgumentCountError: Too few arguments to function ttrss_error_handler()

Ben oui, PHP devient un peu exigeant sur l'ordre des paramètres, entre ceux obligatoires ou facultatifs, quitte à utiliser les paramètres nommés.

Je décide de mettre à jour ttrss tout en sachant que, comme d'habitude, ça va être douloureux (l'absurdité de considérer que la branche master d'un dépôt git constitue une version stable d'un logiciel)…

Premier problème : « Exception while creating PDO object:could not find driver ». La [syntaxe du fichier config.php a changé](https://tt-rss.org/wiki/GlobalConfig/#migrating-from-old-style-configphp). Désormais, il faut utiliser « PUTENV() »…

Deuxième problème : sur l'interface web, j'ai l'erreur « Vous n’avez pas les permissions nécessaires pour exécuter ce script. ». OK, comme d'hab, ça essaye de mettre à jour la base de données alors que je suis connecté, sur l'interface web de ttrss, avec un compte utilisateur standard (!= administrateur de ttrss).

Troisième problème : comme d'hab avec ttrss, le script de mise à jour échoue. Je dois jouer à la main la modification de la BDD de chaque version : `mysql -u <nom_utilisateur> -p <nom_BDD> < /chemin/vers/ttrss/sql/mysql/migrations/140.sql` puis 141.sql puis…

Quatrième problème : les fichiers SQL précités, à partir du 143 (jusqu'au dernier, 147), ne met plus à jour, dans la BDD, la version du schéma de la BDD. Donc l'installateur veut toujours effectuer une mise à jour de la BDD (alors qu'elle est bien à la dernière version)… (Tu sens le problème de qualité du code ?) Je n'ai plus qu'à le faire moi-même : `echo 'update ttrss_version set schema_version = 147;' | mysql -u <nom_utilisateur> -p <nom_BDD>`.

Cinquième problème : les favicons des sites suivis en RSS sont désormais stockés dans cache/feed-icons (au lieu de feed-icons), ce qui est une bonne chose. Néanmoins, le script qui met à jour les flux (`update_daemon2.php`) est lancé, par systemd, avec un utilisateur différent, qui n'a pas la permission d'écrire ici, donc aucune icône n'apparaît dans la liste des flux suivis dans l'interface web de ttrss. Je corrige ça avec un `chmod` classique.

Sixième problème : sur certains flux RSS en erreur, le script de mise à jour des flux reçoit une erreur de la BDD : « Exception while updating feed 80: SQLSTATE[22001]: String data, right truncated: 1406 Data too long for column 'last_error' at row 1 ». Forcément, le flux RSS est en erreur HTTP 404, ce qui déclenche une exception dans le script de mise à jour, qui essaye de stocker toute la stacktrace dans un varchar de taille 250… Contournement : dans `classes/RSSUtils.php`, j'ai remplacé la ligne « 'last_error' => $error_message, » par « 'last_error' => mb_substr($error_message, 0, 250), ».


<br />
### pip3 / pipx

J'utilise `yt-dlp` pour récupérer des vidéos YouTube ou autres. Comme YouTube change des bricoles tous les quatre matins pour entraver toute rétro-ingénierie, je l'installe et le mets à jour avec `pip3`. Bien que je sois le seul utilisateur de mon ordi, je l'installe « system-wide », pour tous les utilisateurs, dans `/usr/local/bin`.

Après mon passage à Debian 12, je tente de mettre à jour yt-dlp avec `pip3` et… c'est le drame :
```
$ sudo pip3 install -U yt-dlp
error: externally-managed-environment

× This environment is externally managed
╰─> To install Python packages system-wide, try apt install python3-xyz, where xyz is the package you are trying to install.
   
    If you wish to install a non-Debian-packaged Python package, create a virtual environment using python3 -m venv path/to/venv. Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make sure you have python3-full installed.
   
    If you wish to install a non-Debian packaged Python application, it may be easiest to use pipx install xyz, which will manage a virtual environment for you. Make sure you have pipx installed.
   
    See /usr/share/doc/python3.11/README.venv for more information.

note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.
```

Ben oui, apt-listchanges nous avait prévenu :
> python-pip (23.0+dfsg-2) unstable; urgency=medium
>
>  This version of pip introduces PEP 668 support. Debian's python3.11 interpreter will soon (>= 3.11.2-3) declare the installation to be EXTERNALLY-MANAGED, instructing pip to disallow package installation outside virtualenvs.
>
>  See: https://peps.python.org/pep-0668/
>
> Practically, this means that you can't use pip to install packages outside a virtualenv, on Debian's Python interpreter by default, any more.
>
>  You can override this behaviour by passing --break-system-packages to pip install, but be aware that if you are running pip as root, doing so can break your system.
>
> See /usr/share/doc/python3.11/README.venv for more details.

Version courte : pour éviter les conflits (de bibliothèques de fonctions, etc.), notamment avec `apt`, désormais chaque logiciel Python est dans un conteneur (venv) qui lui est dédié.

Rien n'empêche de créer un venv dédié à un logiciel dans /usr/local, avec un lien symbolique dans /usr/local/bin.

Pour se simplifier la vie, `/usr/share/doc/python3.11/README.venv` recommande d'utiliser `pipx` qui est empaqueté dans les dépôts officiels Debian.

Mais, que l'on soit simple utilisateur ou root, `pipx` crée les venvs dans le répertoire personnel de l'utilisateur qui l'appelle… tout en prétendant que le logiciel est disponible globalement (tout en ayant un doute sur le PATH)… :
```
$ sudo pipx install yt-dlp
⚠️  Note: yt-dlp was already on your PATH at /usr/local/bin/yt-dlp
  installed package yt-dlp 2023.12.30, installed using Python 3.11.2
  These apps are now globally available
    - yt-dlp
⚠️  Note: '/root/.local/bin' is not on your PATH environment variable. These apps will not be globally accessible until your PATH is updated. Run `pipx ensurepath` to
    automatically add it, or manually modify your PATH in your shell's config file (i.e. ~/.bashrc).
done! ✨ 🌟 ✨
```

Pour rendre un logiciel Python disponible pour tous les utilisateurs (globalement), il existe l'option `--global` de `pipx`… qui n'est pas dispo avant sa version 1.5, alors que Debian 12 embarque sa version 1.1… Il est possible de [passer des variables pour contourner ça](https://github.com/pypa/pipx/blob/main/docs/installation.md).

En résumé, voici ce que j'ai fait pour avoir un `yt-dlp` accessible à tous les utilisateurs de ma machine (le bazar est rangé dans `/opt/pipx`, un lien symbolique est créé dans `/usr/local/bin` qui est dans le PATH, et le manuel est déposé au bon endroit) :
```
$ sudo mkdir /opt/pipx
$ sudo PIPX_HOME=/opt/pipx PIPX_BIN_DIR=/usr/local/bin PIPX_MAN_DIR=/usr/local/share/man pipx install yt-dlp
```

L'ennui, c'est qu'il faut rappeler ces variables d'environnement lorsque l'on veut mettre à jour yt-dlp : `sudo PIPX_HOME=/opt/pipx PIPX_BIN_DIR=/usr/local/bin PIPX_MAN_DIR=/usr/local/share/man pipx upgrade yt-dlp`. Vivement le `--global`.


<br />
### PulseAudio / PipeWire

Je n'ai plus de son dans VLC, sur PeerTube, etc. VLC met trois plombes à se lancer, il ne lit pas les fichiers multimédias, comme s'il était en IO wait.

PipeWire devient le serveur de son par défaut dans un environnement MATE. J'ai installé le paquet suivant sans trop savoir pourquoi puis j'ai redémarré mon ordi (je n'ai pas trouvé quel service redémarrer, et la réouverture de ma session graphique n'a produit aucun effet) : `apt install wireplumber`.

Pour l'instant, j'utilise PipeWire en duo avec PulseAudio (via `pipewire-pulse`) sans trop savoir comment ça ils articulent, et avec `pavucontrol` pour régler le volume (il faudra que j'étudie comment on fait avec PipeWire).


<br />
### scrcpy

Permet de diffuser / enregistrer l'écran d'un ordiphone Android sur son ordi et d'interagir avec ledit smartphone depuis un ordi.

Il est pas disponible dans les dépôts officiels de Bookworm. :( Mais il est dans unstable, donc il va peut-être revenir à la prochaine version stable.


<br />
### usrmerge

Je pensais que la grande transition /{bin,lib,sbin} vers /usr/{bin,lib,sbin} avait eu lieu lors de [mon passage à Debian 10](/?Mfvd7A), mais a priori, non.

J'ai eu un message d'erreur, uniquement sur mon ordi de travail, pas sur mes serveurs :

```
Paramétrage de usrmerge (35) ...

FATAL ERROR:
Both /bin/open and /usr/bin/open exist.

You can try correcting the errors reported and running again
/usr/lib/usrmerge/convert-usrmerge until it will complete without errors.
Do not install or update other Debian packages until the program
has been run successfully.

E: usrmerge failed.
dpkg: erreur de traitement du paquet usrmerge (--configure) :
 le sous-processus paquet usrmerge script post-installation installé a renvoyé un état de sortie d'erreur 1
Des erreurs ont été rencontrées pendant l'exécution :
usrmerge
E: Sub-process /usr/bin/dpkg returned an error code (1)
```

Flemme de chercher la cause, donc `apt install --fix-broken`. Nouvelle erreur :
```
Paramétrage de usrmerge (35) ...
 
FATAL ERROR:
Both /lib/x86_64-linux-gnu/libmnl.so.0 and /usr/lib/x86_64-linux-gnu/libmnl.so.0 exist.

You can try correcting the errors reported and running again
/usr/lib/usrmerge/convert-usrmerge until it will complete without errors.
Do not install or update other Debian packages until the program
has been run successfully.

E: usrmerge failed.
dpkg: erreur de traitement du paquet usrmerge (--configure) :
 le sous-processus paquet usrmerge script post-installation installé a renvoyé un état de sortie d'erreur 1
```

Hum… /lib/x86_64-linux-gnu/libmnl.so.0 est un lien vers /lib/x86_64-linux-gnu/libmnl.so.0.1.0 qui est un lien vers /usr/lib/x86_64-linux-gnu/libmnl.so.0.1.0… Donc c'est plutôt bien… Je supprime /lib/x86_64-linux-gnu/libmnl.so.0.


```
Paramétrage de usrmerge (35) ...

FATAL ERROR:
Both /lib/x86_64-linux-gnu/libfuse.so.2 and /usr/lib/x86_64-linux-gnu/libfuse.so.2 exist.

You can try correcting the errors reported and running again
/usr/lib/usrmerge/convert-usrmerge until it will complete without errors.
Do not install or update other Debian packages until the program
has been run successfully.

E: usrmerge failed.
dpkg: erreur de traitement du paquet usrmerge (--configure) :
 le sous-processus paquet usrmerge script post-installation installé a renvoyé un état de sortie d'erreur 1
Des erreurs ont été rencontrées pendant l'exécution :
 usrmerge
E: Sub-process /usr/bin/dpkg returned an error code (1)
```

Hum… /lib/x86_64-linux-gnu/libfuse.so.2 est un lien vers /lib/x86_64-linux-gnu/libfuse.so.2.9.9, et /usr/lib/x86_64-linux-gnu/libfuse.so.2 est un lien vers /usr/lib/x86_64-linux-gnu/libfuse.so.2.9.7. Attention, il y a une différence de version. Je supprime /usr/lib/x86_64-linux-gnu/libfuse.so.2 et /usr/lib/x86_64-linux-gnu/libfuse.so.2.9.7 (ancienne version).

```
update-alternatives --config open` + valider l'existant (/usr/bin/run-mailcap)
apt install --fix-broken
apt install --reinstall libmnl0 libfuse2
```

Fin de chantier.


<br />
### VLC

(Après avoir corrigé le problème PulseAudio / PipeWire rapporté supra.)

Le nombre d'images par seconde semble inférieur à 25, je sens une latence permanente. J'ai une bande noire en bas de certaines vidéos. VLC n'arrive pas à décoder certaines images, je vois une bouillie de pixels, il affiche ce qui suit sur la console et, si je reviens en arrière dans la vidéo, au bout d'un moment, les images ne sont plus de la bouillie.

> libvdpau-va-gl: Decoder::Render_h264(): no surfaces left in buffer
> libvdpau-va-gl: Decoder::Render_h264(): no surfaces left in buffer
> libvdpau-va-gl: Decoder::Render_h264(): no surfaces left in buffer
> libvdpau-va-gl: Decoder::Render_h264(): no surfaces left in buffer
> libvdpau-va-gl: Decoder::Render_h264(): no surfaces left in buffer
> libvdpau-va-gl: Decoder::Render_h264(): no surfaces left in buffer

VDPAU est le machin de NVIDIA pour décoder les vidéos sur le GPU. Je n'ai pas besoin de ça, mon CPU est largement assez puissant. Je le désactive : dans le menu outils de VLC, préférences, entrée/codecs, passer le « décodage matériel » de « automatique » à « désactiver ». Problème résolu.


<br />
### vmwgfx

Sur l'une de mes machines virtuelles distantes, rien ne s'affiche sur le VNC après l'initrd (pas de demande de login, pas de console, rien). Si j'envoie ctrl+alt+F5 ou F3 ou F2, etc., je vois bien, en SSH, des processus agetty apparaître. Évidemment, je pense avoir la même conf' GRUB & co que sur mes autres machines distantes.

[Johndescs](https://www.jonathan.michalon.eu/shaarli/) pense à un sous-système, genre DRM ou KMS, qui fait le malin, qui tente de changer la résolution ou autre paramètre de la carte graphique virtuelle, et se vautre.

Sur la machine en question, `lspci -v | grep -i vga` ne renvoie rien… car il ne parvient pas à identifier les périphériques et m'affiche uniquement leur identifiant. La table de correspondance `/usr/share/misc/pci.ids` est absente. `sudo apt install pci.ids`. La commande précitée affiche désormais « VMware SVGA II Adapter ». Voilà une différence avec mon autre machine virtuelle distante qui, elle, affiche « Cirrus Logic GD 5446 ».

En cherchant « vga » et « vmwgfx » (nom du pilote graphique de VMware) dans kern.log :
```
kernel: [   40.962977] vmwgfx 0000:00:02.0: vgaarb: deactivate vga console
kernel: [   41.040496] vmwgfx 0000:00:02.0: [drm] Running on SVGA version 2.
kernel: [   41.040678] vmwgfx 0000:00:02.0: [drm] MOB limits: max mob size = 0 kB, max mob pages = 0
kernel: [   41.040693] vmwgfx 0000:00:02.0: [drm] Maximum display memory size is 16384 kiB
kernel: [   41.040696] [drm:vmw_probe.cold [vmwgfx]] *ERROR* Hardware has no pitchlock
kernel: [   41.045327] vmwgfx: probe of 0000:00:02.0 failed with error -38
```

L'hypothèse de Johndescs se confirme…

J'ai décidé d'empêcher le chargement du pilote vmwgfx en ajoutant ce qui suit dans `/etc/modprobe.d/blacklist.conf` :
> blacklist vmwgfx
> install vmwgfx /bin/true

Fin de chantier.


<br />
\#Debian 11 à Debian 12


]]>
GuiGui's Show - Wednesday 15 January 2025 http://shaarli.guiguishow.info/?do=daily&day=20250115 http://shaarli.guiguishow.info/?do=daily&day=20250115 Wed, 15 Jan 2025 00:00:00 +0100 De Debian GNU/Linux Buster à Bullseye / Debian 10 à 11 Wed Jan 15 13:07:38 2025 -
http://shaarli.guiguishow.info/?_V2wqw


Comme à chaque passage à une nouvelle version de Debian GNU/Linux, voici un résumé de tout ce qui a foiré ou changé quand je suis passé à Bullseye (Debian 11). (Oui, cet article est très en retard.)

Pour effectuer la mise à jour, on suit [la doc'](https://www.debian.org/releases/bullseye/amd64/release-notes/ch-upgrading.en.html).

<br />
### apt

Par défaut, suppression auto, lors d'un full/dist-upgrade, des anciens noyaux qui ne sont pas en cours d'utilisation.


<br />
### Beamer

J'ai constaté que le paquet `latex-beamer` a disparu des dépôts officiels. Il s'agissait d'un paquet de transition. J'arrive toujours à créer des [présentations LaTeX Beamer à partir de Markdown](/?JgrvBQ), donc ça me va.


<br />
### Deluge

Ce client BitTorrent est désormais autonome (standalone), on n'a plus besoin d'installer deluged.


<br />
### Exim

Mise à jour majeure. Validation du certificat d'un smarthost sinon échec. On ne fait plus confiance aux valeurs fournies par un tiers (ex. : l'émetteur d'un email) pour décider où ranger l'email (nom du dossier), etc., il faut utiliser une nouvelle syntaxe comprenant un « lookup ».


<br />
### Gajim

Accusé de lecture des messages envoyés à autrui (deux coches) : l'envoi d'un accusé de lecture se désactive au cas par cas dans le menu de chaque fenêtre de conversation. Aucune action possible du côté de l'émetteur.

Afficher les accusés de réception de mes messages par autrui (une coche) : cela se désactive dans les préférences générales (menu Gajim), onglet discussions.

L'envoi des accusés de réception par mon client ne se désactive pas.


<br />
### Hexdump

Désormais livré dans le paquet `bsdextrautils`.


<br />
### KolourPaint

La boîte à outils ne contient plus d'icônes, que du texte. Elle prend donc beaucoup plus de place.

Solution : `sudo apt install breeze`.


<br />
### libvirt (virsh et virt-manager)

Erreur au lancement d'une VM avec `virt-manager` :
> Erreur lors du démarrage du réseau « default »: internal error: Failed to apply firewall rules /usr/sbin/iptables -w --table nat --list-rules: # Warning: iptables-legacy tables present, use iptables-legacy to see them
> iptables v1.8.7 (nf_tables): table `nat' is incompatible, use 'nft' tool.

La même avec `virsh` :
> $ sudo virsh net-start default
> erreur :Impossible de démarrer le réseau default
> erreur :internal error: Failed to apply firewall rules /usr/sbin/iptables -w --table nat --list-rules: # Warning: iptables-legacy tables present, use iptables-legacy to see them
> iptables v1.8.7 (nf_tables): table `nat' is incompatible, use 'nft' tool.

Oui, j'utilise `nftables` pour placer des règles de filtrage entrantes et sortantes vu que j'utilise un VPN avec une IP publique (ce qui justifie les règles sur le trafic entrant) et que je ne veux pas de trafic hors VPN (ce qui justifie les règles sur le trafic sortant).

Solution **temporaire** (qui tient tant Debian ne considère pas que la transition d'iptables vers nftables est achevée) :
  * `sudo update-alternatives --config iptables`, choisir « /usr/sbin/iptables-legacy » (par défaut : /usr/sbin/iptables-nft) ;
<br />
  * `sudo systemctl restart libvirtd.service` (sinon ça continue de foirer).

Inconvénient : perte de lisibilité. En IPv4, `nft list ruleset` affiche uniquement mes règles (de type inet) alors que `iptables -L -n -v` affiche uniquement celle de la libvirt. En IPv6, `nft list ruleset` affiche tout.

L'autre méthode, [comme indiqué ici](https://www.spinics.net/linux/fedora/libvir/msg213824.html) est de changer le nom de mes tables et chaînes dans `/etc/nftables.conf`, puis de redémarrer nftables et libvirtd. Ainsi, mes règles et celles de libvirt se cumulent dans un bazar incompréhensible (ce qui n'est vraiment pas top). A priori, cela ne permet aucune fuite hors VPN. Au pire, il suffit de redémarrer nftables après l'utilisation de libvirt pour remettre en place uniquement mes règles. L'avantage de cette deuxième méthode, c'est que ce problème persiste avec Debian 12, donc il ne doit pas être prioritaire côté libvirt…


<br />
### MariaDB

Le processus et l'unit systemd ne contiennent plus le nom « mysql ». Enfin…

`/etc/mysql/debian.cnf` est déprécié (auth par socket pour root).


<br />
### OpenVPN

Plus de redémarrage automatique après la mise à jour. Ça fait longtemps que j'attendais ça. \o/


<br />
### RPCBind

Il n'écoute plus (sur des ports aléatoires) par défaut. Ça fait longtemps que j'attendais ça (pour palier, je masquais, et je masque toujours, rcpbind avec systemd). \o/


<br />
### systemd-journald

Activation du journal persistant dans `/var/log/journal`.  Attention, donc, si tu dois garder un journal un certain temps bien précis (obligation légale, par ex.), RGPD, tout ça, il y a de la [configuration à faire](/?EhB5iA).

[Mes notes sur journald](/?9dWrxA).


<br />
### Unbound

L'inclusion des fichiers dans `/etc/unbound/unbound.conf.d/` se fait désormais avec la directive `include-toplevel`, donc les fragments de conf' doivent avoir la bonne syntaxe, notamment bien énoncer la section de la conf' dans laquelle s'inscrit ce fragment (exemple : on ne peut plus espérer qu'un autre fragment chargé précédemment nous positionnera dans la bonne section genre « server »).


<br />
### tftpd

Durant la mise à jour, il demande :
> Une entrée non reconnue pour tftp a été rencontrée dans /etc/inetd.conf pendant la tentative d'ajout de l'entrée suivante :
>
> tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /srv/tftp
>
> L'entrée non reconnue est la suivante :
>
> tftp dgram udp6 wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /srv/tftp
>
> Faut-il quitter l'entrée existante et continuer sans modifications ?

La question est piège… J'avais répondu non, pour qu'il ne quitte pas sans modifier, c'est-à-dire qu'il modifie. J'ai rencontré l'erreur :
> Des erreurs ont été rencontrées pendant l'exécution :
> tftpd
> E: Sub-process /usr/bin/dpkg returned an error code (1)

Je ne sais plus à quoi me servait ce logiciel, la dernière trace sur ce shaarli date de 2015, donc je l'ai désinstallé sans chercher à comprendre.


<br />
### xsane

> Upstream stopped working on xsane some time ago. Now the homepage and the archive are offline, too.
> If the situation doesn't change, xsane will be removed before Bullseye is released.

J'avais déjà constaté cela lors de [mon passage à Buster](/?Mfvd7A) (Debian 10). Mais `xsane` est toujours présent dans les dépôts officiels Debian 12. :D


<br />
\#Debian 10 à Debian 11


]]>