Gibt es eine Möglichkeit, installierte Binärpakete ohne Hilfeseiten zu finden?

13

Ich habe kürzlich https://lintian.debian.org/tags/binary-without-manpage.html gesehen und es werden ungefähr 14.000 Manpages angezeigt, die fehlen.

Dies bedeutet, dass es mehr als wahrscheinlich ist, dass in einigen Binärpaketen (nicht in Bibliotheken) Hilfeseiten fehlen. Wie erhalte ich eine Liste der installierten Binärpakete / -anwendungen (NICHT Bibliotheken), die keine Manpages haben? Ich könnte einige kennen und anfangen, ein bisschen dazu beizutragen.

shirish
quelle

Antworten:

16

Sie können alle Binärdateien ohne Manpage über den manpage-alertBefehl auflisten

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
quelle
2
Ich wusste nicht, dass es Teil des devscripts-Pakets ist, thanx.
Shirish
5

Während Sie manpage-alertdas tun, wonach Sie fragen, sollten Sie beachten, dass die Liste in dem Link aus Ihrer Frage durch einen anderen Prozess generiert wird, bei dem es sich um die folgende Prüfung in Lintian handelt:

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

Es kann also durch Aufrufen lintianmit der -T binary-without-manpageOption (und anderen Optionen zum Auswählen der Pakete, die Sie überprüfen möchten) erstellt werden.

Grisha Levit
quelle
Das wusste ich nicht, danke.
Shirish
4

Dank der akzeptierten Antwort war es interessant, mehr über die Existenz von Utility zu erfahren manpage-alert, einem Teil des devscriptsPakets, das eigentlich ein Shell-Skript ist.

Ich habe versucht, zu installieren, devscriptsaber ich wurde aufgefordert, etwa 70 MB Abhängigkeiten zu installieren, und habe übersprungen.

Nach dem Herunterladen des devscriptsdeb-Pakets ( apt download devscripts), dem Extrahieren des deb und einem genaueren Blick auf das manpage-alertSkript lautet die ganze Geschichte "under the hood", dass dieses Warnskript den Befehl ausführt:

man -w -S 1:8:6 <file> (w = show location -S 1: 8: 6 begrenzt die Personensuche in den Abschnitten 1,8 und 6).

Dieser Vorgang wird in allen Dateien rekursiv unter Verzeichnissen durchgeführt /bin, /sbin, /usr/bin, /usr/sbin, und /usr/games.

Darüber hinaus wird beim Weiterleiten manan 2>&1und auch beim Weiterleiten an >/dev/null, wenn eine Datei einen gültigen Manpage-Speicherort hat, nichts gedruckt. Wenn sich jedoch manbeschwert, dass keine manuelle Eingabe erfolgt, wird diese Nachricht gedruckt.
Der Autor von entfernt manpage-alertweiterhin die manFehlermeldung aus der Meldung "Siehe Mann 7 undokumentiert für Hilfe" und behält nur die erste Zeile bei = No manual entry for xxxx.

Infolgedessen erhalten Sie in den folgenden Zeilen einen ähnlichen Ausdruck von Binärdateien, in denen Manpages fehlen, ohne das devscripts-Paket zu installieren:

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##*/}hält nur die Befehlsnamen Abisolieren den Pfad /usr/bin/oder /bin/oder was auch immer

Oben kann man auch als Einzeiler fahren:

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: Sie können natürlich installieren, devscriptsda viele nette Hilfsprogramme / Skripte enthalten sind. Ich möchte nur wissen, was unter der Haube läuft :-)

George Vasiliou
quelle
Es gibt viele interessante Pakete in devscripts, zum Beispiel für dch, rmadison, wnpp-check und einige andere, die einfach nichts davon wussten. Es lohnt sich. Ich bezweifle, dass es sich um ein Bash-Skript handeln wird, da Debian versucht hat, Bashismen zu entfernen und sich auf einfache Shellskripte zu verlassen, die von einem xterm zum anderen einfacher sind.
Shirish
@ shirish Bei näherer Betrachtung manpage-alertbeginnt das ursprüngliche Drehbuch mit#!/bin/sh -e
George Vasiliou