Exile on Keyboard St. - Blog sur Linux et Debian

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

samedi 5 novembre 2016

A quel paquet appartient un binaire sous Linux ?

Sous Linux, lorsque le nom d'un binaire ou d'un utilitaire est identique avec celui du paquet, comme gimp, vlc ou emacs, les choses sont simples.

Pour installer vlc, il suffit d'utiliser la commande:

sudo apt-get install vlc

Imaginons maintenant que vous ayez besoin de savoir quel paquet installer pour disposer de la commande sha1sum.

Ce cas de figure se présente notamment pour établir la liste des dépendances d'un logiciel. Quel paquet dois-je installer pour pouvoir utiliser la commande sha1sum ?

sudo dpkg -S /usr/bin/sha1sum
coreutils: /usr/bin/sha1sum

La commande dpkg avec le flag -S me donne la réponse. Il s'agit du paquet coreutils qui contient de multiples utilitaires GNU. Attention, cette commande cherche la commande /usr/bin/sha1sum dans les paquets installés sur le système uniquement. Elle est donc à utiliser sur un système disposant déjà de la commande sha1sum.

J'aurai pu aussi utiliser:

sudo dpkg -S sha1sum
manpages-fr-extra: /usr/share/man/fr/man1/sha1sum.1.gz
coreutils: /usr/share/man/man1/sha1sum.1.gz
coreutils: /usr/bin/sha1sum

Si maintenant je souhaite obtenir la liste de tous les fichiers installés par le paquet coreutils:

dpkg -L coreutils
/.
/bin
/bin/cat
/bin/chgrp
/bin/chmod
/bin/chown
/bin/cp
/bin/date
/bin/dd
/bin/df
/bin/dir
/bin/echo
/bin/false
/bin/ln
/bin/ls
/bin/mkdir
/bin/mknod
/bin/mv
/bin/pwd
/bin/readlink
/bin/rm
/bin/rmdir
/bin/vdir
/bin/sleep
/bin/stty
/bin/sync
/bin/touch
/bin/true
/bin/uname
/bin/mktemp
/usr
/usr/share
/usr/share/doc
/usr/share/doc/coreutils
/usr/share/doc/coreutils/AUTHORS
/usr/share/doc/coreutils/README.Debian
....
/usr/bin/printf
/usr/bin/ptx
/usr/bin/runcon
/usr/bin/seq
/usr/bin/sha1sum
/usr/bin/sha224sum
/usr/bin/sha256sum
/usr/bin/sha384sum
/usr/bin/sha512sum
/usr/bin/shred
/usr/bin/shuf
/usr/bin/sort
/usr/bin/split
/usr/bin/stat
/usr/bin/sum
/usr/bin/tac
/usr/bin/tail
/usr/bin/tee
/usr/bin/test
/usr/bin/timeout
/usr/bin/tr
/usr/bin/truncate
/usr/bin/tsort
/usr/bin/tty
/usr/bin/unexpand
/usr/bin/uniq
/usr/bin/unlink
/usr/bin/wc
/usr/bin/whoami
/usr/bin/yes
/usr/bin/arch
/usr/lib
/usr/lib/coreutils
/usr/lib/coreutils/libstdbuf.so
/usr/sbin
/usr/sbin/chroot
/usr/share/man/man1/[.1.gz
/usr/share/man/man1/md5sum.textutils.1.gz
/usr/bin/touch
/usr/bin/md5sum.textutils

Ensuite la question qui se pose est: comment savoir qu'il faut installer le paquet coreutils pour avoir accès à la commande sha1sum si ce paquet n'est pas installé sur mon système ?

Pour cela, il faut utiliser la commande apt-file qui contrairement à dpkg va élargir sa recherche aux paquets non installés.

Dans un premier temps on met à jour les index utilisés par cette commande:

sudo apt-file update

Les index ont été mis à jour:

 ls -l /var/cache/apt/apt-file/
total 46052
-rw-r--r-- 1 root root 21606550 déc.  29  2015 ftp.fr.debian.org_debian_dists_wheezy_main_Contents-amd64.gz
-rw-r--r-- 1 root root    28816 déc.  29  2015 ftp.fr.debian.org_debian_dists_wheezy-updates_main_Contents-amd64.gz
-rw-r--r-- 1 root root  3863361 nov.   7 08:59 http.debian.net_debian_dists_wheezy-backports_main_Contents-amd64.gz
-rw-r--r-- 1 root root 21611934 nov.   7 08:59 httpredir.debian.org_debian_dists_wheezy_main_Contents-amd64.gz
-rw-r--r-- 1 root root    31249 nov.   7 08:59 httpredir.debian.org_debian_dists_wheezy-updates_main_Contents-amd64.gz

Et pour chercher qui fournit le binaire d'emacs:

apt-file search /usr/bin/emacs23
emacs23: /usr/bin/emacs23
emacs23: /usr/bin/emacs23-x
emacs23-lucid: /usr/bin/emacs23
emacs23-lucid: /usr/bin/emacs23-lucid
emacs23-nox: /usr/bin/emacs23
emacs23-nox: /usr/bin/emacs23-nox

mercredi 5 octobre 2016

Trouver de la documentation pour se former au scripting et à Bash

Lorsqu'on commence à écrire un script Shell sous Linux ou que l'on va devoir en maintenir un écrit depuis longtemps, on a souvent besoin de vérifier certaines syntaxes et parfois aussi envie de prendre le temps d'en découvrir d'autres.

Une simple recherche Google telle que "test string comparison shell" ne suffit pas toujours.

Mais alors quelles ressources consulter pour approfondir notre connaissance du Shell Linux et plus précisément de Bash, puisque c'est souvent ce dernier qu'on utilise désormais ?

La première réponse qui vient à l'esprit est évidemment:

Première méthode: RTFM !

man bash

Maintenant que https://manpages.debian.org/ n'est plus en ligne, on est quitte pour revenir au bon vieux terminal !

Deuxième méthode: Le site de GNU

On peut évidemment aussi consulter le manuel de Bash sur le site de GNU, mais l'avantage de la manpage contrairement au site de GNU c'est qu'elle est traduite dans ma langue, c'est à dire en Français ! D'où l'intérêt d'installer Linux en Français ...

Il y a aussi des ressources précieuses sur le site The Linux Documentation Project, par exemple:

Troisième méthode: The Linux Documentation Project

Le Bash Guide for Beginners est comme son nom l'indique conseillé aux novices du Bash. Son défaut évident est qu'il commence à dater puisqu'il est de 2008.

Toujours sur The Linux Documentation Project, vous trouverez un document beaucoup plus détaillé, à savoir le Advanced Bash-Scripting Guide qui est plus détaillé que le précédent, a un sommaire qui nous oriente facilement et en plus est plus à jour !

Quatrième méthode: Un bouquin !

Eh oui, les livres ça existe encore et des fois il y a aussi des nouvelles éditions !!! C'est le cas du Bash Pocket Reference de l'éditeur O'Reilly qui vient d'être ré-édité à un prix très raisonnable.

Si vous n'avez pas envie de débourser un centime, vous pouvez aussi vous tourner vers le livre de Michel Scifo, LES SCRIPTS AVEC LE SHELL BASH, qui présente les avantages suivants:

  1. Il est publié sous une license libre
  2. Il est récent
  3. Il est gratuit
  4. Il est en Français
  5. Il comporte des exercices

Enfin, il est recommandé par framboise314 !

Cinquième méthode: Un lint pour le Shell

C'est pas le tout d'écrire des scripts Bash, mais la syntaxe utilisée est-elle toujours correcte ? Pas de panique, l'outil Shellcheck est là, il existe en tant que paquet Debian et si vous voulez l'installer, tout est décrit ici dans un précédent post sur Shellcheck et la vérification de syntaxe en Shell.

samedi 16 janvier 2016

Configurer la librairie readline pour un bash sur mesure

Bash utilise une librairie nommée readline pour parser l'entrée utilisateur.

Cette librairie readline développée par la projet GNU est paramétrable à l'envie via un fichier spécifié par la variable d'environnement INPUTRC. En l'absence de cette variable, c'est le fichier ~/.inputrc qui est lu.

Par exemple, pour supprimer le bip énervant lorsque l'on appuie sur la touche TAB, il suffit d'ajouter dans le fichier ~/.inputrc:

set bell-style none

Si on veut maintenant que la complétion sur les noms de fichiers soit insensible à la casse, il faut ajouter:

set completion-ignore-case on

Si ensuite on souhaite que la complétion fasse plus que proposer les choix possibles mais sélectionne d'emblée la première possibilité et que chaque appui sur TAB prenne en compte le choix possible suivant, il faut utiliser la complétion à la "mode vim":

TAB: menu-complete
set show-all-if-ambiguous on

On peut également changer les valeurs de editingmode et de keymap pour ne plus avoir les raccourcis de emacs par défaut (Ctrl-R, Ctrl-S, Ctrl-A, Ctrl-E ...) mais ceux de vi à la place.

Pour une liste exhaustive des options du fichier de configuration de readline, on pourra consulter la man page correspondante.

- page 1 de 2