Exile on Keyboard St. - Blog sur Linux et Debian

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

jeudi 16 novembre 2017

upgrade-from-grub-legacy: la commande (assez) mal nommé du paquet grub-pc

Le paquet grub-pc du bootloader de Linux contient 3 commandes placées dans les répertoires /bin et /sbin.

Une d'entre elles se nomme upgrade-from-grub-legacy et permet de migrer de Grub à Grub 2. Contrairement aux deux autres commandes du paquet grub-pc, son nom ne commence pas par grub.

Ce choix peut poser problème si vous utilisez la complétion avec Bash car c'est la seule commande Linux qui commence par 'upg'.

Si vous avez défini un alias pour mettre à jour votre système comme suit:

alias update='apt-get update && apt-get upgrade && apt-get autoremove'

Et que, par erreur, vous saisissez dans votre terminal:

upg <TAB> <ENTER>

Vous aller lancer la commande upgrade-from-grub-legacy, ce qui n'était absolument pas votre volonté.

Dommage, vous vous souveniez que votre alias se nommait upgrade !

Si par mégarde, vous faites cette erreur (je l'ai faites ...), ne faites par CTRL C après avoir lançé la commande, parce que si tous les fichiers de /boot/grub/i386-pc/ n'ont pas eu le temps d'être recréés au moment du CTRL C, votre système Linux ne redémarrera pas !!!!

Si par contre, vous laissez la commande se terminer, pas de problème. Néanmoins, le nom de cette commande est mal choisi et devrait commencer par grub pour éviter d'être utilisée à mauvais escient, surtout que de passer de Grub à Grub2 n'arrive maintenant quasiment plus jamais.

dimanche 5 novembre 2017

Le paquet trash-cli ou comment utiliser la corbeille en ligne de commande

On a tous à un moment ou à un autre supprimé un fichier par erreur sous Linux.

On remédie souvent à cette situation malheureuse par un:

alias rm='rm -i'

Cependant, il existe un moyen de se passer de la confirmation de suppression de la commande rm et cela consiste à utiliser la corbeille en ligne de commande.

Linux propose en effet le paquet trash-cli que l'on installe comme suit:

sudo apt-get install trash-cli

Et pour supprimer un fichier, plutôt que d'utiliser la commande rm:

trash-put Readme.md 

Puis:

trash-put Profiles.zip 

Pour afficher la liste des fichiers présents dans la corbeille:

trash-list 
2017-11-05 16:34:05 /home/user/Profiles.zip
2017-11-05 16:33:51 /home/user/Readme.md

La timestamp affiché étant la date de suppression du fichier.

Supposons maintenant que j'ai supprimé Readme.md par erreur:

user@machine:~$ restore-trash 
   0 2017-11-05 16:34:05 /home/user/Profiles.zip
   1 2017-11-05 16:33:51 /home/user/Readme.md
What file to restore [0..1]: 

Il me suffit alors de sélectionner le numéro du fichier pour que celui-ci soit restauré.

Le paquet trash-cli fournit aussi la commande restore-trash qui permet de rétablir l'intégralité des fichiers placés à la corbeille.

Et on peut maintenant définir:

alias rm='trash-put'

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

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

- page 1 de 11