Existe-t-il un moyen de trouver les packages binaires installés qui n'ont pas de pages de manuel?

13

J'ai récemment vu https://lintian.debian.org/tags/binary-without-manpage.html et il affiche environ 14 000 pages de manuel manquantes.

Cela signifie qu'il est plus que probable que certains des paquets binaires (pas les bibliothèques) manquent de pages de manuel. Comment obtenir une liste des packages / applications binaires installés (PAS des bibliothèques) qui n'ont pas de pages de manuel? Je pourrais en savoir quelques-uns et commencer à y contribuer un peu.

shirish
la source

Réponses:

16

Vous pouvez lister tous les binaires sans page de manuel via la manpage-alertcommande

manpage-alert - check for binaries without corresponding manpages

DESCRIPTION

   manpage-alert  searches the given list of paths for binaries without cor‐
   responding manpages.

   If no paths are specified on the command line, the path list  /bin  /sbin
   /usr/bin /usr/sbin /usr/games will be assumed
GAD3R
la source
2
ne savait pas que cela faisait partie du paquet devscripts, merci.
shirish
5

Bien que manpage-alertfasse ce que vous demandez, vous devez noter que la liste dans le lien de votre question est générée par un processus différent, qui est la vérification suivante dans Lintian:

https://github.com/Debian/lintian/blob/master/checks/manpages.pm

Il peut donc être produit en appelant lintianavec l' -T binary-without-manpageoption (et d'autres options pour sélectionner les packages que vous souhaitez vérifier).

Grisha Levit
la source
ne savait pas à ce sujet, merci.
shirish
4

Grâce à la réponse acceptée, il était intéressant de découvrir l'existence d'un utilitaire manpage-alert, une partie du devscriptspackage, qui est en fait un script shell.

J'ai essayé d'installer devscriptsmais j'ai reçu une invite pour installer environ 70 Mo de dépendances, j'ai donc sauté.

En téléchargeant le devscriptspaquet deb ( apt download devscripts), en extrayant le deb et en examinant de plus près le manpage-alertscript, toute l'histoire "sous le capot" est que ce script d'alerte exécute la commande:

man -w -S 1:8:6 <file> (w = montrer l'emplacement -S 1: 8: 6 limite la recherche de l'homme dans les sections 1,8 et 6).

Cette opération est réalisée dans tous les fichiers sous répertoires récursive /bin, /sbin, /usr/bin, /usr/sbinet /usr/games.

De plus, en redirigeant manvers 2>&1et également en redirigeant vers >/dev/null, si un fichier a un emplacement de page de manuel valide, rien n'est imprimé, mais s'il se manplaint d'une "absence d'entrée manuelle", ce message est imprimé.
L'auteur de manpage-alertsupprime en outre le manmessage d'erreur du message "voir man 7 sans document pour obtenir de l'aide" et ne conserve que la première ligne = No manual entry for xxxx.

Par conséquent, les quelques lignes suivantes donneront une impression similaire des pages de manuel manquantes des binaires sans installer le package devscripts:

F=( "/bin/*" "/sbin/*" "/usr/bin/*" "/usr/sbin/*" "/usr/games/*" )
for f in ${F[@]};do 
  for ff in $f;do
    if ! mp=$(man -w -S 1:8:6 "${ff##*/}" 2>&1 >/dev/null);then 
       echo "$mp" |grep -v "man 7 undocumented" #man 7 undocumented is printed in a separate line.
    fi
  done
done

PS: ${ff##*/}ne conserve que le nom de la commande dépouillant le chemin /usr/bin/ou /bin/ou quoi que

Ci-dessus peut également fonctionner en une ligne:

gv@debi64:$ F=( "/bin/*" "/sbin/*" "/usr/bin/*" "/usr/sbin/*" "/usr/games/*" );for f in ${F[@]};do for ff in $f;do if ! mp=$(man -w -S 1:6:8 "${ff##*/}" 2>&1 >/dev/null);then echo "$mp" |grep -v "man 7 undocumented";fi;done;done

No manual entry for ntfsmove
No manual entry for ipmaddr
No manual entry for iptunnel
^C

PS: Vous pouvez bien sûr installer devscriptscar de nombreux utilitaires / scripts sont inclus. J'aime juste savoir ce qui se passe sous le capot :-)

George Vasiliou
la source
Il y a beaucoup de paquets intéressants dans les scripts de développement, par exemple dch, rmadison, wnpp-check et quelques autres, tout simplement pas au courant de celui-ci. Ça en vaut la peine. Je doute que ce soit un bashscript car debian a essayé de supprimer les bashismes et de s'appuyer sur des scripts shell simples qui sont plus facilement d'un xterm à l'autre.
shirish
@shirish En y regardant de plus près, le manpage-alertscript original commence par#!/bin/sh -e
George Vasiliou