Czy istnieje sposób na znalezienie zainstalowanych pakietów binarnych, które nie mają stron podręcznika?

13

Ostatnio widziałem https://lintian.debian.org/tags/binary-without-manpage.html i pokazuje około 14 tysięcy brakujących stron podręcznika.

Oznacza to, że jest więcej niż prawdopodobne, że w niektórych pakietach binarnych (nie bibliotekach) brakuje stron podręcznika. Jak uzyskać listę zainstalowanych pakietów / aplikacji binarnych (NIE bibliotek), które nie mają stron podręcznika? Mógłbym trochę poznać i zacząć się do tego przyczyniać.

shirish
źródło

Odpowiedzi:

16

Możesz wyświetlić listę wszystkich plików binarnych bez strony man poprzez manpage-alertpolecenie

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
GAD3R
źródło
2
nie wiedziałem, że to część pakietu devscripts, dzięki.
shirish
5

Chociaż manpage-alertrobi to, o co prosisz, pamiętaj, że lista w linku do twojego pytania jest generowana przez inny proces, którym jest następujący sprawdzian w Lintian:

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

Można go wytworzyć, dzwoniąc lintianz -T binary-without-manpageopcją (i innymi opcjami, aby wybrać pakiety, które chcesz sprawdzić).

Grisha Levit
źródło
nie wiedziałem o tym, dzięki.
shirish
4

Dzięki przyjętej odpowiedzi, interesujące było poznanie istnienia narzędzia manpage-alert, części devscriptspakietu, która w rzeczywistości jest skryptem powłoki.

Próbowałem zainstalować, devscriptsale dostałem monit o zainstalowanie około 70 MB zależności, więc pominąłem.

Pobranie devscriptspakietu deb ( apt download devscripts), wyodrębnienie deb i przyjrzenie się manpage-alertskryptowi, cała historia „pod maską” polega na tym, że ten skrypt ostrzegawczy uruchamia polecenie:

man -w -S 1:8:6 <file> (w = pokaż lokalizację - S 1: 8: 6 ogranicza wyszukiwanie człowieka w sekcjach 1,8 i 6).

Operacja ta wykonywana jest we wszystkich plikach rekurencyjnie pod katalogów /bin, /sbin, /usr/bin, /usr/sbin, i /usr/games.

Co więcej, przekierowanie mando, 2>&1a także przekierowanie do >/dev/null, jeśli plik ma prawidłową lokalizację strony manpodręcznika, nic nie jest drukowane, ale jeśli narzeka na „brak ręcznego wprowadzania”, wówczas komunikat ten jest drukowany.
Autor manpage-alertjest dalej usuwając mankomunikat o błędzie z komunikatu „zobacz man 7 nieudokumentowane w celu uzyskania pomocy” i zachowuje tylko pierwszą linię = No manual entry for xxxx.

W rezultacie kilka poniższych wierszy da podobny wydruk plików binarnych z brakującymi stronami man bez instalowania pakietu 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##*/}przechowuje tylko nazwę polecenia odpędzania ścieżkę /usr/bin/lub /bin/czy cokolwiek

Powyżej może również działać jako jedna linijka:

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: Możesz oczywiście zainstalować, devscriptsponieważ zawiera wiele ładnych narzędzi / skryptów. Po prostu lubię wiedzieć, co działa pod maską :-)

George Vasiliou
źródło
W skryptach dev jest wiele interesujących pakietów, np. Dch, rmadison, wnpp-check i kilka innych, po prostu o tym nie wiedziałem. Warto. Wątpię, aby był to skrypt bashscript, ponieważ debian próbował usunąć bashizmy i polegać na prostych skryptach powłoki, które są łatwiejsze z jednego xterma na drugi.
shirish
@shirish Przyglądając się bliżej, oryginalny manpage-alertskrypt zaczyna się od#!/bin/sh -e
George Vasiliou