Exile on Keyboard St. - Blog sur Linux et Debian

Aller au contenu | Aller au menu | Aller à la recherche

mardi 5 septembre 2017

Refaire fonctionner Enigmail avec Icedove / Thunderbird sur Debian 8.9

Depuis la dernière mise à jour du paquet Icedove sur Debian 8.9, ce dernier m'a signalé que mon Add-On Enigmail était désactivé et qu'il fallait passer désormais par un autre Add-On dont j'ai oublié le nom. Ce jour là, j'ai laché l'affaire en me disant que je regarderai cela plus tard.

Ce matin, j'ai jeté un oeil, n'ai pas trouvé d'Add-On de remplacement pour Enigmail mais par contre en suivant la procédure suivante, j'ai rétabli ma configuration Mail+Encryption:

  • Installation de Thunderbird
  • Démarrage de Thunderbird + Migration des données issues d'Icedove (se fait tout seul)
  • Installation d'Enigmail afin de le réactiver (cette possibilité n'étant pas proposée)
  • Suppression du paquet iceowl-extension

Donc, je suis passé d'Icedove à Thunderbird (comma avant sur Debian quoi !) et ça fonctionne comme avant. Enfin presque ...

Maintenant, le déchiffrement des messages ne se fait pas de manière automatique et j'ai une erreur qui dit: GnuPG a rapporté une erreur de communication avec gpg-agent (un composant de GnuPG).

Capture-Alerte_Enigmail.png

Les solutions proposées dans le billet cité n'ont malheureusement pas fonctionné chez moi.

J'ai trouvé la solution dans le billet gnome-keyring gpg2 and enigmail clash.

Le script en question a été enregistré en .gpgrc et appelé dans .bashrc. Ensuite, j'appele Thunderbird de la façon suivante:

bash -i -c '/usr/bin/thunderbird %u'

Et j'ai bien:

env| grep GPG
GPG_AGENT_INFO=/tmp/gpg-63XK4k/S.gpg-agent:3002:1

C'est donc bien le gpg-agent qui est utilisé et non le Gnome Keyring.

Avec cette façon de faire, tout fonctionne, y compris le cache sur la saisie du mot de passe de ma clé privée !

Enfin, j'ai remarqué une aberration dans la configuration par défaut de Thunderbird, le moteur de recherche par défaut est Bing, moteur de recherche d'une célèbre (plus que son moteur en tous cas !) société américaine dont je ne citerai pas le nom. Je me demande bien ce qui a pû dicter ce choix malheureux dans un logiciel open source ...

Capture-Preferences_de_Thunderbird.png

jeudi 31 août 2017

Ajouter un Hook de Pre Commit dans IntelliJ IDEA

La boite de dialogue de commit d'IntelliJ IDEA propose entre autres de faire les actions suivantes avant le commit:

  • Reformatter le code
  • Optimiser les imports
  • Chercher les TODO

....

En revanche rien n'est prévu par défaut dans IntelliJ pour ajouter un script utlisateur de pre commit, qui par exemple va vérifier que vos traces ajoutées à des fins de debug ont bien été enlevées avant le commit.

Pour ajouter un Hook de pre commit, il faut installer un plugin, nommé Pre Commit Hook Plugin, qui va se charger d'éxécuter avant commit un script que vous aurez créé à la racine de votre projet et nommé pre-commit-hook.sh.

Le script sera appelé avec en paramètres les fichiers participant au commit. Il vous suffit donc dans le script de renvoyer le code retour 1 si vous avez oublié des traces de debug.

Ainsi vous éviterez les commits supplémentaires avec le message signficatif: "Oopppps: forgot to remove debug traces" !

Un exemple de script de pre commit:

#!/bin/bash

for file in "$@"; do
    grep -H -n DBG_TRACE "$file" && exit 1
done

exit 0

Le Pre Commit Hook Plugin est hébergé sur GitHub.

dimanche 27 août 2017

jigdo et le fichier template ...

Dans un billet précédent, nous avons vu comment on peut télécharger les images iso de Debian avec l'utilitaire jigdo.

Cette façon de faire semble ne plus fonctionner au premier abord.

user@machine:~/tmp$ jigdo-lite https://cdimage.debian.org/cdimage/weekly-builds/amd64/jigdo-cd/debian-testing-amd64-netinst.jigdo

Jigsaw Download "lite"
Copyright (C) 2001-2005  |  jigdo@
Richard Atterer          |  atterer.net
Loading settings from `/home/user/.jigdo-lite'
File `https://cdimage.debian.org/cdimage/weekly-builds/amd64/jigdo-cd/debian-testing-amd64-netinst.jigdo' does not exist!

Pour arriver à vos fins, il faut télécharger le fichier .jigdo ET le fichier .template correspondant dans le même répertoire et ensuite lancer la commande suivante:

jigdo-lite debian-testing-amd64-netinst.jigdo

Donc c'est plus compliqué qu'avant:

Avant:

jigdo-lite https://cdimage.debian.org/cdimage/weekly-builds/amd64/jigdo-cd/debian-testing-amd64-netinst.jigdo

Maintenant:

wget https://cdimage.debian.org/cdimage/weekly-builds/amd64/jigdo-cd/debian-testing-amd64-netinst.jigdo
wget https://cdimage.debian.org/cdimage/weekly-builds/amd64/jigdo-cd/debian-testing-amd64-netinst.template
jigdo-lite debian-testing-amd64-netinst.jigdo

Note:

Ce qui est décrit ici a été testé avec Debian Jessie.

mardi 15 août 2017

Utilisation des alias Bash en mode interactif ou non

Avec Bash, les alias sont définis dans le fichier .bashrc ou plus proprement dans le fichier .bash_aliases qui normalement est chargé depuis .bashrc comme suit:

# Alias definitions.
# You may want to put all your additions into a separate file like
# ~/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.

if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi

Si j'ai défini:

alias ll='ls -l

Alias en mode interactif

La commande ll donnera le résultat suivant:

user@machine:~$ ll
total 60
drwxr-xr-x 2 user user  4096 juil. 23 17:03 bin
drwxr-xr-x 2 user user  4096 août   3 21:41 Bureau
drwxr-xr-x 6 user user  4096 juil.  9 18:00 Documents
drwxr-xr-x 2 user user  4096 avril 29 14:20 Enregistrements
drwxr-xr-x 4 user user  4096 juin  14 07:39 Images
drwxr-xr-x 2 user user  4096 nov.   9  2016 Modèles
drwxr-xr-x 2 user user  4096 nov.  23  2016 Musique
drwxr-xr-x 9 user user  4096 juin  13 08:51 Programs
drwxr-xr-x 2 user user  4096 nov.   9  2016 Public
drwxr-xr-x 8 user user  4096 juin   4 07:25 Sources
drwxr-xr-x 6 user user 12288 août   2 07:59 Téléchargements
drwxr-xr-x 7 user user  4096 juin   5 06:31 Vidéos
drwxr-xr-x 9 user user  4096 juin  30 19:32 VirtualBox VMs

Expansion des alias

C'est normal me direz-vous. En fait, l'alias ll qui a été défini est utilisable parce que je suis dans un Shell interactif et que par défaut Bash autorise l'expansion des alias dans un Shell interactif.

On peut s'en convaincre en désactivant cette option:

user@machine:~$ shopt -u expand_aliases
user@machine:~$ ll
bash: ll : commande introuvable
user@machine:~$ alias
alias l='ls -CF'
alias la='ls -A'
alias ll='ls -l'
alias ls='ls --color=auto'
alias rm='rm -i'

Les alias sont définis, ils existent mais ne sont pas utilisables pour autant !

Alias en mode non interactif

En mode non interactif, c'est à dire dans un script Shell lançé sans l'option -i, les choses sont différentes.

Première différence, le script .bash_aliases n'est pas chargé puisque .bashrc ne l'est pas. Ah bon ?

Il suffit de regarder le début du fichier .bashrc pour s'en convaincre:

user@machine:~$ more .bashrc 
# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples

# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac

Vos alias habituels ne seront donc pas connus dans les scripts.

C'est en fait assez heureux si l'on considère les alias couramment définis sur les commandes rm et cp avec une demande de confirmation: dans un script mieux vaut ne pas avoir à répondre à des questions !

Deuxième différence, l'expansion des alias n'est pas activée par défaut dans un Shell non interactif.

Considérons le script suivant:

#!/bin/bash

alias ll='ls -l'
alias
ll
user@machine:~$ alias.sh
alias ll='ls -l'
/home/user/alias.sh: ligne 5: ll : commande introuvable

L'alias défini dans le script lui même n'est pas utilisable !!!

En revanche si j'ajoute en début de script la ligne suivante:

shopt -s expand_aliases

mon alias est connu depuis le script. On pensera donc à ajouter cette commande, avant ou après la définition des alias, dans les scripts les utilisant.

Et pour afficher toutes les options actives de Bash:

shopt -s

samedi 5 août 2017

Une barre de défilement bien visible

Les soit disant "améliorations" d'ergonomie dans les IHM n'en sont pas toujours.

Par exemple sous Linux, j'utilise ici Debian avec Mate, la barre de défilement appelée communément "scrollbar" par les anglophones est presque invisible en raison d'un choix de couleurs malheureux: cette barre de défilement ayant quasiment la même couleur que l'espace sur lequel elle se déplace, on ne la voit pas comme l'illustre l'image d'un Terminal qui suit:

scrollbar-terminal.png

Vous aurez beau chercher dans les paramètres du profil du Terminal, vous ne trouverez rien à ce sujet.

En fait, pour changer de manière plus détaillée les couleurs du Terminal, il faut installer un paquet nommé gnome-color-chooser et lancer la commande du même nom.

Capture-GNOME_Color_Chooser.png

Les couleurs de la barre de progression se trouvent dans l'onglet Spécifique.

J'utilise ici la couleur du texte pour la "scrollbar" et celle du fond pour la surbrillance.

Ce sont des couleurs qui conviennent au thème Solarized que j'utilise et nom au Terminal par défaut en noir sur blanc qui se trouve à votre gauche.

Le résultat est le suivant:

visible-scrollbar.png

Cette façon de faire fonctionne évidemment sur Gnome et ses dérivés comme Mate ; sur les autres environnements de bureau, je ne peux rien dire sur le sujet.

Enfin, bien que je parle de Terminal dans ce billet, les modifications de couleurs de la barre de défilement s'appliquent bien évidemment aux autres applications tournant sous Gnome.

- page 2 de 20 -