Как просмотреть различия между страницами руководства для разных версий одной и той же программы?

Всякий раз, когда я обновляю один из своих ящиков Linux (т.е. устанавливаю следующую версию моего любимого дистрибутива), обновление соответствующих файлов конфигурации всегда было очень трудоемким, потому что во многих случаях я не просто изменяю файлы конфигурации по умолчанию, чтобы отражать моя ситуация, но я очень тщательно обработал свои собственные файлы конфигурации.

До сих пор, при обновлении, в этих случаях я либо полностью читал соответствующие man-страницы с нуля и делал новые конфигурационные файлы с нуля (это чисто, но стоит много усилий), или я сравнил (думаю, diff) старый и файлы конфигурации по умолчанию нового дистрибутива, и когда я увидел разницу, которая может быть важна, я «портировал» (объединил) ее в свой собственный файл конфигурации (я недоволен этим методом по нескольким причинам, один из которых заключается в том, что сопровождающий мог игнорировать новую конфигурационную директиву, которая может быть опасна для игнорирования в моем случае, но ее не всегда можно было избежать, если бы я спешил).

Я всегда спрашивал себя, как другие люди справляются с этой проблемой. Одной из идей было бы сравнить справочную страницу старой версии программного обеспечения с новой версией, таким образом, сразу же увидеть все различия в директивах или методах конфигурации.

Итак, вот вопрос: знает ли кто-нибудь о конкретном читателе различий для man-страниц, особенно для текстовой консоли (основной сценарий будет работать через SSH без X)?

Имейте в виду, что я знаю, что есть много разных зрителей (я читал десятки статей и вопросов и ответов по этому вопросу). Мой вопрос в частности о различиях зрителей для справочных страниц, которые предлагают некоторый комфорт (например, вы говорите ему базовый каталог страниц старика, а затем только должны сказать «показать diff sshd_config» или тому подобное).

Я также знаю, что в конечном итоге я смог прочитать журнал изменений соответствующего восходящего потока, но я видел много случаев, когда вы не могли положиться на него (т. Е. Не все изменения упоминались там), это намного неудобно, а некоторые дистрибутивы сильно патч вверх по течению, поэтому я бы сказал, что это не вариант. Сравнение исходного кода старой версии с новым только для определения новых параметров конфигурации кажется слишком большим и, возможно, невозможно в случае Apache, Sendmail и т. П. Напротив, сравнение страниц руководства кажется разумным (если возможно).

Есть идеи?

Человеческие страницы, однажды измененные на удобочитаемую форму, представляют собой текстовые файлы, которые вы можете отличить от любого инструмента, который вам подходит. Вот два примера, как две функции bash , для двух инструментов: diff и vimdiff . Адаптируйте их к вашему любимому инструменту.

С vimdiff :

 vimdiff_man() { vimdiff -R <(man --manpath="/old/path/to/man" "$1") <(man "$1"); } 

С diff , бок о бок, настроенный на ширину экрана:

 diff_man() ( width="${COLUMNS:-80}" export MANWIDTH=$((width / 2 - 2)) diff -y -W"$width" <(man --manpath="/old/path/to/man" "$1") <(man "$1") | less ) 

В каждой функции я различаю между двумя псевдо-файлами <(...) , каждый из которых содержит результат команды man между круглыми скобками (это подстановка процесса bash's Process Substitution ).

/old/path/to/man – иерархия каталогов, содержащая ваши старые страницы руководства. Ожидается, что в качестве основного справочника руководства (вероятно, /usr/share/man ) будут иметь те же средние мужские уровни man1 , man2 , …. Измените его в соответствии с вашими потребностями.

Применение:

 diff_man sshd_config vimdiff_man sshd_config 

Извините, ребята, я не мог удержаться на этом … Модифицировать принятый ответ следующим образом:

 diff -y -w -W 150 <(links -dump "http://man.he.net/?topic=grep&section=all" |less |fold -s -w 70) <(man grep |less |fold -s -w 70) 

Вы можете сравнивать бок о бок локальные установленные справочные страницы с онлайн-страницами man … Мне просто нравится и думал поделиться этим.

Offcourse вы можете заменить man.he.net своим любимым онлайн-просмотрщиком manpage (т. Е. https://manpages.debian.org ).

И это даже хорошо работает:

 diff -y -w -W 150 <(links -dump "https://www.mankier.com/?q=grep" |less |fold -s -w 70) <(man grep |less |fold -s -w 70) 

PS: -w необходимо игнорировать все пробелы и сравнивать только строки. меньше используется в обоих случаях для однородного формата во время чтения и сравнения.