C'è un modo per trovare i pacchetti binari installati che non hanno manpage?


13

Di recente ho visto https://lintian.debian.org/tags/binary-without-manpage.html e mostra circa 14k manpage mancanti.

Ciò significa che è più che probabile che alcuni dei pacchetti binari (non le librerie) abbiano manpage mancanti. Come posso ottenere un elenco di pacchetti / applicazioni binari installati (NON librerie) che non hanno manpage? Potrei conoscerne alcuni e iniziare a contribuire un po 'a questo.

Risposte:


16

È possibile elencare tutti i file binari senza la pagina man tramite il manpage-alertcomando

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

2
non sapevo che facesse parte del pacchetto devscripts, grazie.
shirish


4

Grazie alla risposta accettata, è stato interessante conoscere l'esistenza dell'utilità manpage-alert, parte del devscriptspacchetto, che in realtà è uno script di shell.

Ho provato a installare devscriptsma ho ricevuto la richiesta di installare circa 70 MB di dipendenze, quindi ho saltato.

Scaricando il devscriptspacchetto deb ( apt download devscripts), estraendo il deb e dando un'occhiata più da vicino allo manpage-alertscript, l'intera storia "under the hood" è che questo script di avviso esegue il comando:

man -w -S 1:8:6 <file> (w = mostra posizione -S 1: 8: 6 limita la ricerca man nelle sezioni 1,8 e 6).

Questa operazione viene eseguita in tutti i file in modo ricorsivo sotto directory /bin, /sbin, /usr/bin, /usr/sbin, e /usr/games.

Inoltre, il reindirizzamento manalla 2>&1e anche reindirizzamento a >/dev/null, se un file ha una posizione pagina man valida non viene stampato nulla, ma se mansi lamenta per un "no entry manuale", allora questo messaggio viene stampato.
L'autore di manpage-alertsta eliminando ulteriormente manil messaggio di errore dal messaggio "vedi man 7 non documentato per aiuto" e mantiene solo la prima riga = No manual entry for xxxx.

Di conseguenza, le seguenti righe daranno una stampa simile delle pagine man mancanti binarie senza installare il pacchetto 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##*/}mantiene solo il nome del comando spogliando il percorso /usr/bin/o /bin/o qualsiasi altra cosa

Sopra può anche funzionare come one-liner:

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: puoi ovviamente installarlo devscriptspoiché sono incluse molte utilissime utilità / script. Mi piace solo sapere cosa succede sotto il cofano :-)


Ci sono molti pacchetti interessanti in devscripts, ad esempio dch, rmadison, wnpp-check e alcuni altri, semplicemente non lo sapevano. Ne vale la pena. Dubito che sarà un bashscript poiché Debian ha cercato di rimuovere i bashismi e fare affidamento su semplici script shell che sono più facilmente da un xterm all'altro.
shirish

@shirish Dando un'occhiata più da vicino, la manpage-alertsceneggiatura originale inizia con#!/bin/sh -e
George Vasiliou,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.