구성 파일 업그레이드 절차

구성 파일 업그레이드 절차

Ubuntu(및 기타 *nix)를 업그레이드할 때 업그레이드 프로세스에서는 변경된 구성 파일의 차이점을 표시하고 해당 파일을 교체할지, 이전 버전을 유지할지, 아니면 수동으로 병합할지 묻습니다. Google이나 검색을 통해 그러한 프로그램을 찾을 수 없습니다.우분투 패키징문서. 다음과 같은 기능을 갖춘 프로그램을 알고 계십니까?

  • 종속성이 거의 또는 전혀 없습니다(단일 쉘 스크립트가 바람직함).
  • 쉘만(저주 없이 사용하는 것이 좋음)
  • 하다아니요예를 들어 자동으로 병합하는 등 "스마트"해 보세요.

편집: 초기 확인을 수행하고 사용자에게 무엇을 해야 할지 묻기 위해 이 작은 것을 작성했지만 그다지 유연하지도 않고 좋지도 않습니다.

for path
do
    if [ ! -e "${path}.new" ]
    then
        # No new revision; skip
        continue
    fi

    if [[ $(diff "${path}"{,.new} | grep '^[<>]' | grep -v '^[<>][[:space:]]*\(#\|START=\)' | wc -l) -eq 0 ]]
    then
        # No interesting lines; skip
        continue
    fi

    clear
    diff -u "${path}"{,.new}

    unset action
    while [[ ! "${action-}" =~ ^[sr]$ ]]
    do
        echo "Do you want to replace $path with ${path}.new?"
        read -s -n 1 -p $'[s]kip, [r]eplace: \n' action
    done

    case "$action" in
        s)
            continue
            ;;
        r)
            cp -v "${path}"{,.new}
            ;;
        *)
            echo "Invalid action ${action}!"
            exit 2
    esac
done

답변1

나는 당신이 보고 있는 프로그램이 다음과 같은 것이라고 강하게 의심합니다.dpkgDebian-ish 배포판의 저수준 패키지 관리(사용) apt(itude). 프로필 관리를 설명하는 블로그 게시물을 여기에서 확인하세요..

아마도 이 기능을 가로챌 수도 있습니다.나만의 .deb패키지 만들기- 내 생각에는 이것이 당신이 달성하려는 목표에 문제가 될 수 있을 것 같습니다.

갈 수 있는 다른 길이 있으니 한번 구경해 보세요NetBSD etcupdate도구(NetBSD에만 해당되지만 다음을 찾을 수 있습니다.소스 코드(쉘 스크립트)그래도 흥미롭다). 확실히,Gentoo etc-update에도 하나가 있습니다, 하지만 출처나 추가 정보를 찾을 수 없습니다. (해당 링크에는 dispatch-conf흥미로울 수도 있는 내용도 언급되어 있습니다. 잘 모르겠습니다.)

관련 정보