มีวิธีหาแพ็คเกจไบนารีที่ติดตั้งซึ่งไม่มี manpages หรือไม่?


13

ฉันเพิ่งเห็นhttps://lintian.debian.org/tags/binary-without-manpage.htmlและมันแสดงให้เห็นประมาณ 14,000 manpages ที่หายไป

ซึ่งหมายความว่าเป็นไปได้มากกว่าที่แพ็คเกจไบนารีบางส่วน (ไม่ใช่ไลบรารี) มี manpages ที่ขาดหายไป ฉันจะรับรายการแพคเกจไบนารี / แอปพลิเคชั่นที่ติดตั้ง (ไม่ใช่ไลบรารี) ที่ไม่มี manpages ได้อย่างไร ฉันอาจรู้จักและเริ่มมีส่วนร่วมบ้าง

คำตอบ:


16

คุณสามารถแสดงรายการไบนารีทั้งหมดโดยไม่มี man page ผ่าน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
ไม่ทราบว่าเป็นส่วนหนึ่งของแพ็คเกจ devscripts, thanx
Shirish

5

ในขณะที่manpage-alertทำสิ่งที่คุณขอคุณควรทราบว่ารายการในลิงก์จากคำถามของคุณสร้างขึ้นโดยกระบวนการที่แตกต่างกันซึ่งเป็นการตรวจสอบต่อไปนี้ใน Lintian:

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

ดังนั้นมันสามารถผลิตได้โดยการโทรlintianด้วย-T binary-without-manpageตัวเลือก (และตัวเลือกอื่น ๆ เพื่อเลือกแพคเกจที่คุณต้องการตรวจสอบ)


ไม่รู้เกี่ยวกับสิ่งนั้นขอบคุณ
Shirish

4

ขอบคุณคำตอบที่ยอมรับมันน่าสนใจที่จะเรียนรู้เกี่ยวกับการมีอยู่ของยูทิลิตี้manpage-alertส่วนหนึ่งของdevscriptsแพ็คเกจซึ่งจริงๆแล้วคือเชลล์สคริปต์

ฉันพยายามติดตั้งdevscriptsแต่ได้รับแจ้งให้ติดตั้งประมาณ 70MB ของการอ้างอิงดังนั้นฉันข้าม

การดาวน์โหลดdevscriptsแพคเกจ deb ( apt download devscripts) การแตก deb และมองmanpage-alertสคริปต์อย่างใกล้ชิดเรื่องราวทั้งหมด "ภายใต้ประทุน" คือสคริปต์แจ้งเตือนนี้ใช้คำสั่ง:

man -w -S 1:8:6 <file> (w = แสดงตำแหน่ง -S 1: 8: 6 จำกัด การค้นหาผู้ชายในส่วนที่ 1,8 และ 6)

การดำเนินการนี้จะดำเนินการในทุกไฟล์ที่ซ้ำภายใต้ไดเรกทอรี/bin, /sbin, /usr/bin, และ/usr/sbin/usr/games

นอกจากนี้การเปลี่ยนเส้นทางmanไป2>&1ยังและการเปลี่ยนเส้นทางไปยัง>/dev/nullหากไฟล์มีตำแหน่งของหน้ากระดาษที่ถูกต้องจะไม่มีการพิมพ์อะไรเลย แต่ถ้าหากmanมีการแจ้งเตือนสำหรับ "ไม่มีการป้อนข้อมูลด้วยตนเอง" ข้อความนี้จะถูกพิมพ์
ผู้เขียนmanpage-alertมีการเพิ่มเติมลอกmanข้อความข้อผิดพลาดจาก "ดูคนที่ 7 ที่ไม่มีเอกสารเพื่อขอความช่วยเหลือ" ข้อความและช่วยให้เพียงบรรทัดแรก 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

PS: ${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

PS: แน่นอนคุณสามารถติดตั้งdevscriptsเนื่องจากมีสาธารณูปโภค / สคริปต์ที่ดีมากมายรวมอยู่ด้วย ฉันแค่อยากจะรู้ว่าสิ่งที่ทำงานภายใต้ประทุน :-)


มีแพ็คเกจที่น่าสนใจมากมายใน devscripts เช่น dch, rmadison, wnpp-check และอื่น ๆ อีกมากมายไม่รู้มาก่อนเลย มันคุ้มค่าดี ฉันสงสัยว่ามันจะเป็น bashscript เนื่องจาก debian พยายามลบ bashisms และพึ่งพาเชลล์สคริปต์ธรรมดาซึ่งง่ายกว่าจาก xterm หนึ่งไปอีกอันหนึ่ง
Shirish

@shirish manpage-alertเริ่มต้นด้วยการมองอย่างใกล้ชิดสคริปต์ต้นฉบับเริ่มต้นด้วย#!/bin/sh -e
George Vasiliou
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.