Existe uma maneira de encontrar pacotes binários instalados que não possuam manpages?

13

Recentemente, vi o link e ele mostra cerca de 14k manpages que estão faltando.

Isso significa que é mais do que provável que alguns dos pacotes binários (não bibliotecas) tenham faltantes manpages. Como obtenho uma lista de pacotes / aplicativos binários instalados (NÃO bibliotecas) que não possuem páginas de manual? Eu poderia conhecer alguns e começar a contribuir um pouco para isso.

    
por shirish 15.01.2017 / 21:21

3 respostas

16

Você pode listar todos os binários sem a página man através do comando manpage-alert

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
    
por 15.01.2017 / 22:32
5

Enquanto manpage-alert faz o que você pede, você deve observar que a lista no link da sua pergunta é gerada por um processo diferente, que é a seguinte verificação em Lintian:

link

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

    
por 15.01.2017 / 22:40
4

Graças à resposta aceita, foi interessante aprender sobre a existência do utilitário manpage-alert , parte do pacote devscripts , que é na verdade um shell script.

Eu tentei instalar o devscripts , mas recebi uma solicitação para instalar cerca de 70MB de dependências, então pulei.

Baixando o pacote devscripts deb ( apt download devscripts ), extraindo o deb e observando mais de perto o script manpage-alert , a história completa "sob o capô" é que este script de alerta executa o comando:

man -w -S 1:8:6 <file> (w = mostra a localização -S 1: 8: 6 limita a pesquisa de homem nas secções 1,8 e 6).

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

Além disso, redirecionando man para 2>&1 e também redirecionando para >/dev/null , se um arquivo tiver um local de página man válido, nada será impresso, mas se man reclamar por "nenhuma entrada manual", esta mensagem é impresso.
O autor de manpage-alert está removendo mais a mensagem de erro man da mensagem "veja o homem 7 não documentado para ajuda" e mantém apenas a primeira linha = No manual entry for xxxx .

Como resultado, as seguintes poucas linhas darão uma impressão similar de binários faltando man pages sem instalar o 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 retirando o caminho /usr/bin/ ou /bin/ ou o que for

Acima também pode ser executado como um marcador:

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 devscripts , já que muitos utilitários / scripts estão incluídos. Eu só gosto de saber o que corre sob o capô: -)

    
por 16.01.2017 / 14:29