Linux 시스템을 업그레이드할 때마다(예: 내가 가장 좋아하는 distro의 다음 버전 설치) 해당 구성 파일을 업그레이드하는 데 항상 시간이 많이 걸립니다. 왜냐하면 많은 경우에 내 설정을 반영하기 위해 distro 파일의 기본 구성을 변경하지 않기 때문입니다. 상황이 발생했지만 매우 신중하게 구성 파일을 만들었습니다.
지금까지 업그레이드할 때 이러한 경우 해당 매뉴얼 페이지를 처음부터 완전히 읽고 처음부터 새 구성 파일을 만들거나(깨끗하지만 많은 노력이 필요함) 이전 릴리스와 새 릴리스를 비교(차이점이라고 생각)합니다.기본구성 파일에서 중요할 수 있는 차이점을 발견했을 때 이를 내 구성 파일에 '포팅'(병합)했습니다(여러 가지 이유로 이 접근 방식이 마음에 들지 않습니다. 그 중 하나는 관리자가 새로운 구성 지시문을 무시하는 것이 위험할 수 있지만 급한 경우에는 항상 피할 수는 없습니다.
나는 항상 다른 사람들이 이 문제를 어떻게 처리하는지 자문합니다. 한 가지 아이디어는 이전 버전의 소프트웨어 매뉴얼 페이지를 최신 버전의 매뉴얼 페이지와 비교하여 구성 지시문이나 방법의 차이점을 즉시 확인하는 것입니다.
따라서 질문은 다음과 같습니다. 매뉴얼 페이지, 특히 텍스트 콘솔(주 시나리오는 X를 사용하지 않고 SSH를 통해 작업함)에 대한 특정 diff 뷰어를 아는 사람이 있습니까?
다른 시청자가 많다는 것을 알고 있습니다(이 주제에 대한 수십 개의 기사와 Q&A를 읽었습니다). 내 질문은 특히 매뉴얼 페이지의 diff 뷰어에 관한 것입니다. 이는 약간의 편안함을 제공합니다(예: 이전 매뉴얼 페이지의 기본 디렉토리를 말한 다음 "show diff sshd_config" 또는 이와 유사한 내용을 말합니다).
또한 결국 해당 업스트림의 변경 로그를 읽을 수 있다는 것도 알고 있지만 이를 신뢰할 수 없고(즉, 모든 변경 사항이 언급되지는 않음) 더 불편하고 일부 배포판에서는 업스트림을 과도하게 패치하는 경우를 많이 보았습니다. , 그래서 그렇게 말하는 것은 실제로 선택 사항이 아니라고 생각했습니다. 새로운 구성 옵션을 찾기 위해 이전 버전 소스 코드와 새 버전 소스 코드를 비교하는 것은 너무 많은 것처럼 보이며 Apache, Sendmail 등의 경우 불가능해 보입니다. 대신 (가능하다면) 매뉴얼 페이지를 비교하는 것이 타당해 보입니다.
어떤 아이디어가 있나요?
답변1
사람이 읽을 수 있는 형식으로 변경되면 매뉴얼 페이지는 자신에게 적합한 도구를 사용하여 비교할 수 있는 텍스트 파일입니다. 다음은 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 프로세스 교체).
/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§ion=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)
추신: 모든 공백을 무시하고 줄만 비교하려면 -w가 필요합니다. 읽기 및 비교 중에 균일한 형식을 사용하려면 두 경우 모두 less를 사용합니다.