Existe uma maneira de encontrar pacotes binários instalados que não possuem páginas de manual?

13

Vi recentemente https://lintian.debian.org/tags/binary-without-manpage.html e mostra cerca de 14k páginas de manual que estão faltando.

Isso significa que é mais do que provável que alguns dos pacotes binários (não as bibliotecas) tenham páginas de manual ausentes. Como obtenho uma lista de pacotes / aplicativos binários instalados (NÃO bibliotecas) que não possuem páginas de manual? Talvez eu conheça alguns e comece a contribuir um pouco para isso.

shirish
fonte

Respostas:

16

Você pode listar todos os binários sem página de manual através do 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
GAD3R
fonte
2
não sabia que fazia parte do pacote devscripts, thanx.
Shirish
5

Enquanto manpage-alertfaz o que solicita, observe que a lista no link da sua pergunta é gerada por um processo diferente, que é a seguinte verificação no Lintian:

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

Portanto, pode ser produzido chamando lintiancom a -T binary-without-manpageopção (e outras opções para selecionar os pacotes que você deseja verificar).

Grisha Levit
fonte
não sabia disso, thanx.
Shirish
4

Graças à resposta aceita, foi interessante aprender sobre a existência de utilidade manpage-alert, parte do devscriptspacote, que na verdade é um shell script.

Tentei instalar, devscriptsmas recebi um prompt para instalar cerca de 70 MB de dependências, então pulei.

Ao baixar o devscriptspacote deb ( apt download devscripts), extrair o deb e examinar mais de perto o manpage-alertscript, toda a história "por baixo do capô" é que esse script de alerta executa o comando:

man -w -S 1:8:6 <file> (w = mostrar local -S 1: 8: 6 limita a busca do homem nas seções 1,8 e 6).

Esta operação é realizada em todos os arquivos recursivamente em diretórios /bin, /sbin, /usr/bin, /usr/sbin, e /usr/games.

Além disso, redirecionando manpara 2>&1e também redirecionando para >/dev/null, se um arquivo tiver um local de página de manual válido, nada será impresso, mas se houver manuma "entrada manual não", essa mensagem será impressa.
O autor de manpage-alertestá retirando ainda mais a manmensagem de erro da mensagem "consulte o man 7 não documentado para obter ajuda" e mantém apenas a primeira linha = No manual entry for xxxx.

Como resultado, as poucas linhas a seguir fornecerão uma impressão semelhante de binários ausentes nas páginas de manual sem a instalação do pacote 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##*/}mantém apenas o nome do comando tirando do caminho /usr/bin/ou /bin/ou qualquer outra coisa

Acima também pode ser executado como uma linha:

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: É claro que você pode instalar, devscriptspois muitos utilitários / scripts estão incluídos. Eu só gosto de saber o que está por baixo do capô :-)

George Vasiliou
fonte
Existem muitos pacotes interessantes nos devscripts, por exemplo, dch, rmadison, wnpp-check e outros, apenas não conheciam esse. Vale a pena. Duvido que seja um bashscript, pois o debian está tentando remover bashisms e confia em scripts simples de shell que são mais facilmente de um xterm para outro.
Shirish
@shirish Tomar um olhar mais atento, originais manpage-alertroteiro começa com#!/bin/sh -e
George Vasiliou