¿Cómo ver las diferencias entre las páginas man para diferentes versiones del mismo progtwig?

Cada vez que actualizo una de mis cajas de Linux (es decir, instalando la siguiente versión de mi distribución favorita), actualizar los files de configuration respectivos siempre ha consumido mucho time, porque en muchos casos no solo modifico los files de configuration pnetworkingeterminados de la distribución para reflejar mi situación, pero he creado mis propios files de configuration con mucho cuidado.

Hasta ahora, al actualizar, en estos casos, o bien he leído las páginas de manual respectivas desde el principio y he creado nuevos files de configuration desde cero (esto es limpio, pero cuesta mucho esfuerzo), o he comparado (creo dif) los antiguos y los files de configuration pnetworkingeterminados de la nueva distribución, y cuando vi una diferencia que podría ser importante, la he "portado" (fusionado) en mi propio file de configuration (no estoy satisfecho con ese método por varias razones, una de ellas es que el mantenedor podría haber ignorado una nueva directiva de configuration que podría ser peligroso ignorar en mi caso, pero no siempre ha sido evitable si tenía prisa).

Siempre me he preguntado cómo otras personas lidian con ese problema. Una idea sería comparar la página man de la versión anterior de un software con la de la nueva versión, y así ver todas las diferencias en directivas o methods de configuration de inmediato.

Así que aquí está la pregunta: ¿Alguien sabe acerca de un visor de diferencias específicas para las páginas man, especialmente para la console de text (el escenario principal estaría funcionando a través de SSH sin X)?

Tenga en count que soy consciente de que hay muchos espectadores de diff (he leído docenas de artículos y preguntas y respuestas sobre este tema). Mi pregunta es específicamente sobre visores diff para páginas man que ofrecen cierta comodidad (por ejemplo, usted le dice el directory base de las páginas del viejo y solo tiene que decir "show diff sshd_config" o similar).

También soy consciente de que eventualmente podría leer el logging de cambios del respectivo upstream, pero he visto muchos casos en los que no se podía confiar (es decir, no todos los cambios se mencionaron allí), es mucho más inconveniente, y algunas distribuciones en gran medida parchear aguas arriba, entonces yo diría que esto no es realmente una opción. Comparar el código fuente de la versión anterior con el nuevo solo para descubrir nuevas opciones de configuration parece demasiado y tal vez sea imposible en el caso de Apache, Sendmail y similares. Por el contrario, la comparación de las páginas del manual parece razonable (si es posible).

¿Algunas ideas?

Las páginas Man, una vez cambiadas a una forma legible por humanos, son files de text que puedes diferenciar con la herramienta que más te convenga. Aquí hay dos ejemplos, como dos funciones bash , para dos herramientas: diff y vimdiff . Adáptelos a su herramienta favorita.

Con vimdiff :

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

Con diff , uno al lado del otro, ajustado al ancho de su pantalla:

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

En cada function, estoy diferenciando entre dos pseudo files <(...) , cada uno de los cuales contiene el resultado del command man entre paréntesis (esta es la Sustitución de processs de bash ).

/old/path/to/man es la jerarquía de directorys que contiene sus páginas de manual antiguas. Se espera que tenga los mismos niveles man man1 , man2 , … como su principal directory manual (probablemente /usr/share/man ). Cámbielo para que se ajuste a sus necesidades.

Uso:

 diff_man sshd_config vimdiff_man sshd_config 

Lo siento chicos, no pude resistirme a esto … Modificar la respuesta aceptada de esta manera:

 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) 

Puede comparar las páginas man localmente instaladas a las páginas man en línea … Me gusta y pensé en compartirlas.

Por supuesto, puede replace man.he.net con su visor de páginas de manual en línea favorito (es decir, https://manpages.debian.org ).

También esto funciona bien:

 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) 

PD: -w es necesario ignorar todo el espacio en blanco y comparar solo líneas. less se usa en ambos casos para un formatting uniforme durante la lectura y la comparación.