Docker propose des images Debian taguée *-slim. Dans ces images malgré l'installation du manuel et des paquets intégrant de la documentation, l'appel du manuel ne retourne pas de résultat:
man man
No manual entry for man See 'man 7 undocumented' for help when manual pages are not available.
La commande apt-file permet d'identifier le paquet contenant un fichier voulu. Ici on recherche la documentation du manuel:
apt-file search man/man1/man.1.gz man-db: /usr/share/man/man1/man.1.gz
La commande apt-file nous indique que la documentation du manuel est fournie par le paquet man-db. Le paquet est cependant déjà installé comme le montre le retour de la commande dpkg ci-dessous:
dpkg -l | grep man-db ii man-db 2.8.5-2 amd64 on-line manual pager
Malgré l'installation correcte du paquet man-db le fichier /usr/share/man/man1/man.1.gz est absent du système:
ls /usr/share/man/man1/man.1.gz ls: cannot access '/usr/share/man/man1/man.1.gz': No such file or directory
Si on télécharge le paquet et qu'on le décompresse avec les commandes suivantes, les pages de documentation du manuel sont bien installées:
# Téléchargement du paquet dans le répertoire courant apt-get download man-db # Liste le contenu de l'archive pour vérifier la présence du fichier dans l'archive dpkg-deb --contents man-db_2.8.5-2_amd64.deb | grep man/man1/man.1.gz -rw-r--r-- root/root 12634 2019-02-10 12:14 ./usr/share/man/man1/man.1.gz # Décompresse l'archive dpkg-deb -x man-db_2.8.5-2_amd64.deb / # Vérifie la présence du fichier sur le système ls /usr/share/man/man1/man.1.gz /usr/share/man/man1/man.1.gz
On peut voir que la décompression à l'aide de l'utilitaire dpkg-deb se comporte comme attendu et que le fichier est bien présent sur le système.
Le choix a été fait d'exclure certains fichiers (dont ceux de la documentation) afin de réduire la taille des images Debian étiquetées *-slim. Ceci peut être fait en paramétrant dpkg via les fichiers présents dans /etc/dpkg/dpkg.cfg.d/ et plus particulièrement via le fichier /etc/dpkg/dpkg.cfg.d/docker.
Depuis la ligne de commande, lors de l'installation d'un paquet on peut exclure un ensemble de fichiers via les options --path-exclude et --path-include
# Installe le paquet man-db en excluant tous les fichiers de documentation sauf /usr/share/man/man1/man.1.gz dpkg --path-exclude='/usr/share/man/*' --path-include='/usr/share/man/man1/man.1.gz' -i man-db_2.8.5-2_amd64.deb