최근에 봤어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 정도의 종속성을 설치하라는 메시지가 표시되어 건너뛰었습니다.
devscripts
deb 패키지( )를 다운로드하고 apt download devscripts
deb의 압축을 풀고 스크립트를 자세히 살펴보십시오 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/null
man
manpage-alert
man
No 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
멋진 유틸리티/스크립트가 많이 포함되어 있으므로 설치할 수 있습니다. 나는 후드 아래에서 무엇이 실행되고 있는지 궁금합니다 :-)