맨페이지 없이 설치된 바이너리 패키지를 찾는 방법이 있습니까?

맨페이지 없이 설치된 바이너리 패키지를 찾는 방법이 있습니까?

최근에 봤어https://lintian.debian.org/tags/binary-without-manpage.html약 14,000개의 누락된 맨페이지가 표시됩니다.

이는 일부 바이너리 패키지(라이브러리가 아님)에 맨페이지가 누락되었을 가능성이 높다는 것을 의미합니다. 맨페이지 없이 설치된 바이너리 패키지/응용 프로그램(라이브러리가 아님) 목록을 얻는 방법은 무엇입니까? 나는 그것에 대해 뭔가를 알고 그것에 기여하기 시작할 수도 있습니다.

답변1

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

답변2

귀하가 요청한 작업을 수행하는 동안 manpage-alert질문 링크의 목록은 Lintian의 다음 검사와 같은 다른 프로세스에 의해 생성된다는 점에 유의해야 합니다.

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

따라서 lintian옵션 -T binary-without-manpage(및 확인할 패키지를 선택하는 다른 옵션)을 호출하여 생성할 수 있습니다.

답변3

답변해 주셔서 감사합니다. 유틸리티가 존재 manpage-alert하고 패키지의 일부 devscripts이며 실제로는 쉘 스크립트라는 사실이 흥미롭습니다.

설치를 시도했는데 devscripts약 70MB 정도의 종속성을 설치하라는 메시지가 표시되어 건너뛰었습니다.

devscriptsdeb 패키지( )를 다운로드하고 apt download devscriptsdeb의 압축을 풀고 스크립트를 자세히 살펴보십시오 manpage-alert. "비하인드 스토리" 전체 내용은 명령을 실행하는 다음 경고 스크립트입니다.

man -w -S 1:8:6 <file> (w=show location -S 1:8:6은 검색을 섹션 1,8, 6의 사람들로 제한합니다).

/bin이 작업은 , /sbin, /usr/bin, , 디렉터리 /usr/sbin의 모든 파일에 대해 반복적으로 수행됩니다 /usr/games.

또한 에서 로 man리디렉션 할 때 파일에 유효한 매뉴얼 페이지 위치가 있으면 아무것도 인쇄되지 않지만 "수동 입력 없음"에 대한 메시지가 표시되면 이 메시지가 인쇄됩니다. 저자는 "도움이 필요하면 문서화되지 않은 man 7을 참조하세요" 메시지에서 오류 메시지를 제거 하고 첫 번째 줄만 유지합니다 = .2>&1>/dev/nullman
manpage-alertmanNo manual entry for xxxx

따라서 다음 줄은 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

추신: ${ff##*/}명령 이름만 유지하고 경로 /usr/bin//bin/기타 콘텐츠를 제거하세요.

위의 내용은 한 줄로 실행할 수도 있습니다.

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

추신: 물론 devscripts멋진 유틸리티/스크립트가 많이 포함되어 있으므로 설치할 수 있습니다. 나는 후드 아래에서 무엇이 실행되고 있는지 궁금합니다 :-)

관련 정보