Чи є спосіб встановити встановлені двійкові пакети, у яких немає вказівок?


13

Нещодавно я побачив https://lintian.debian.org/tags/binary-without-manpage.html, і він показує близько 14 тис. Манжетів, яких немає.

Це означає, що більш ніж ймовірно, що в деяких бінарних пакунках (а не в бібліотеках) відсутні вказівки. Як отримати список встановлених бінарних пакетів / додатків (НЕ бібліотек), які не мають керівництва? Я, можливо, знаю деяких і почну трохи сприяти цьому.

Відповіді:


16

Ви можете перелічити всі бінарні сторінки без людини за допомогою 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, ніж дякує.
shirish

5

Хоча manpage-alertви робите те, про що ви просите, ви повинні зауважити, що список у посиланні з вашого питання генерується за допомогою іншого процесу, який полягає в наступній реєстрації в Лінтіані:

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

Таким чином, це може бути вироблено, зателефонувавши lintianза допомогою -T binary-without-manpageопції (та інших варіантів вибору пакетів, які ви хочете перевірити).


не знав про це, дяк.
shirish

4

Завдяки прийнятій відповіді було цікаво дізнатись про існування утиліти manpage-alert, частини devscriptsпакета, яка насправді є скриптом оболонки.

Я спробував встановити, devscriptsале отримав підказку встановити близько 70 Мб залежностей, тому я пропустив.

Завантажуючи 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 намагається видалити башизми і покладатися на прості сценарії оболонки, які легше переходять з одного xterm в інший.
shirish

@shirish Призначившись ближче, оригінальний manpage-alertсценарій починається з#!/bin/sh -e
Георгія Васильоу
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.