同じプログラムの複数のバージョンのマニュアルページの違いをどのように確認できますか?

同じプログラムの複数のバージョンのマニュアルページの違いをどのように確認できますか?

Linuxシステムをアップグレードするたびに(たとえば、私のお気に入りのDistroの次のバージョンをインストールするなど)、その構成ファイルをアップグレードするのに時間がかかります。なぜなら、多くの場合、私の設定を反映するためにdistroファイルのデフォルト設定を変更しないからです。状況が発生しましたが、非常に慎重に構成ファイルを作成しました。

これまでアップグレードする場合は、その場合は、そのマニュアルページを最初から完全に読み、最初から新しい設定ファイルを作成するか(クリーンですが多くの労力が必要です)、以前のリリースと新しいリリースを比較(違いと思います)します。基本設定ファイルで重要な違いを見つけたとき、それを私の設定ファイルに「移植」(マージ)しました(いくつかの理由でこのアプローチは気に入らません。その1つは、管理者が新しい設定ディレクティブを無視することです)危険ですが、緊急の場合は常に避けられません。

私はいつも他の人がこの問題をどのように扱うかを諮問しています。 1つのアイデアは、以前のバージョンのソフトウェアマニュアルページを最新バージョンのマニュアルページと比較して、設定ディレクティブまたは方法の違いをすぐに確認することです。

したがって、質問は次のようになります。マニュアルページ、特にテキストコンソール(メインシナリオはXを使用せずにSSHを介して作業しています)の特定のdiffビューアを知っていますか?

他の視聴者が多いことを知っています(このトピックに関する数十の記事とQ&Aを読んでいます)。私の質問は、特にマニュアルページのdiffビューアについてです。これはいくつかの快適さを提供します(たとえば、前のマニュアルページのベースディレクトリを話し、次に「show diff sshd_config」などを参照してください)。

また、最終的には、そのアップストリームの変更ログを読むことができることもわかっていますが、それを信頼できない(つまり、すべての変更は言及されていない)、より不便であり、一部のディストリビューションでは、アップストリームに過度にパッチを適用することがよくありました。だから、そう言うのは実際には選択肢ではないと思いました。新しい設定オプションを見つけるために古いバージョンのソースコードと新しいバージョンのソースコードを比較することはあまりにも多く見え、Apache、Sendmailなどでは不可能に見えます。代わりに(可能であれば)マニュアルページを比較するのが妥当に見えます。

どんなアイデアがありますか?

答え1

人間が読める形式に変更された場合、マニュアルページは自分に合ったツールを使用して比較できるテキストファイルです。以下は、bash2つのツールの2つの機能、およびdiff2つの例です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
)

各関数で2つの擬似ファイルを比較します。各ファイルには<(...)括弧内にコマンドの結果が含まれています(これはmanBashプロセスの交換)。

/old/path/to/man前のマニュアルページを含むディレクトリ階層です。メインマニュアルディレクトリと同じサポートスタッフレベルを持つことが期待されていますman1。あなたのニーズに合わせて変更してください。man2/usr/share/man

使用法:

diff_man sshd_config
vimdiff_man sshd_config

答え2

申し訳ありません。我慢できませんでした...許可された回答を次のように修正してください。

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.he.netをお気に入りのオンラインマニュアルページビューアに置き換えることができます(例: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が必要です。読み取りと比較中に均一な形式を使用するには、どちらの場合もlessを使用します。

関連情報