Có cách nào để tìm các gói nhị phân được cài đặt không có manpages không?


13

Gần đây tôi đã thấy https://lintian.debian.org/tags/binary-without-manpage.html và nó hiển thị khoảng 14k trang bị thiếu.

Điều này có nghĩa là nhiều khả năng một số gói nhị phân (không phải thư viện) bị thiếu trang. Làm cách nào để có danh sách các gói / ứng dụng nhị phân được cài đặt (KHÔNG phải thư viện) không có trang? Tôi có thể biết một số và bắt đầu đóng góp một chút về điều đó.

Câu trả lời:


16

Bạn có thể liệt kê tất cả nhị phân mà không cần trang man thông qua manpage-alertlệnh

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
không biết nó là một phần của gói devscripts, thanx.
shirish

5

Mặc dù manpage-alertthực hiện những gì bạn yêu cầu, bạn nên lưu ý rằng danh sách trong liên kết từ câu hỏi của bạn được tạo bởi một quy trình khác, đó là kiểm tra sau trong Lintian:

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

Vì vậy, nó có thể được sản xuất bằng cách gọi lintianvới -T binary-without-manpagetùy chọn (và các tùy chọn khác để chọn các gói mà bạn muốn kiểm tra).


không biết về điều đó, thanx.
shirish

4

Nhờ câu trả lời được chấp nhận, thật thú vị khi tìm hiểu về sự tồn tại của tiện ích manpage-alert, một phần của devscriptsgói, thực sự là một tập lệnh shell.

Tôi đã cố gắng cài đặt devscriptsnhưng tôi nhận được lời nhắc cài đặt khoảng 70 MB phụ thuộc, vì vậy tôi đã bỏ qua.

Tải xuống devscriptsgói deb ( apt download devscripts), trích xuất deb và xem xét kỹ hơn về manpage-alertkịch bản, toàn bộ câu chuyện "dưới mui xe" là kịch bản cảnh báo này chạy lệnh:

man -w -S 1:8:6 <file> (w = hiển thị vị trí -S 1: 8: 6 giới hạn tìm kiếm của con người trong phần 1,8 và 6).

Thao tác này được thực hiện trong tất cả các tập tin một cách đệ quy dưới thư mục /bin, /sbin, /usr/bin, /usr/sbin, và /usr/games.

Ngoài ra, chuyển hướng manđến 2>&1và cũng chuyển hướng đến >/dev/null, nếu một tệp có vị trí trang man hợp lệ thì không có gì được in, nhưng nếu manphàn nàn về "không có mục nhập thủ công" thì thông báo này sẽ được in.
Tác giả của việc manpage-alerttiếp tục tước manthông báo lỗi từ thông báo "xem người đàn ông 7 không có giấy tờ để được giúp đỡ" và chỉ giữ dòng đầu tiên = No manual entry for xxxx.

Do đó, một vài dòng sau sẽ cho một bản in nhị phân thiếu các trang man mà không cài đặt gói 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##*/}giữ chỉ có tên lệnh tước con đường /usr/bin/hoặc /bin/hoặc bất cứ điều gì

Ở trên cũng có thể chạy như một lớp lót:

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: Tất nhiên bạn có thể cài đặt devscriptsvì có rất nhiều tiện ích / tập lệnh đẹp được bao gồm. Tôi chỉ muốn biết những gì chạy dưới mui xe :-)


Có rất nhiều gói thú vị trong các bản mô tả, ví dụ như dch, rmadison, wnpp-check và một số gói khác, chỉ không biết về cái này. Nó cũng có giá trị nó. Tôi nghi ngờ nó sẽ là một bashscript vì debian đã cố gắng loại bỏ bashism và dựa vào các kịch bản shell đơn giản, dễ dàng hơn từ xterm này sang xterm khác.
shirish

@shirish Nhìn kỹ hơn, manpage-alertkịch bản gốc bắt đầu bằng#!/bin/sh -e
George Vasiliou
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.