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
나는 당신이 보고 있는 프로그램이 다음과 같은 것이라고 강하게 의심합니다.dpkg
Debian-ish 배포판의 저수준 패키지 관리(사용) apt(itude)
. 프로필 관리를 설명하는 블로그 게시물을 여기에서 확인하세요..
아마도 이 기능을 가로챌 수도 있습니다.나만의 .deb
패키지 만들기- 내 생각에는 이것이 당신이 달성하려는 목표에 문제가 될 수 있을 것 같습니다.
갈 수 있는 다른 길이 있으니 한번 구경해 보세요NetBSD etcupdate
도구(NetBSD에만 해당되지만 다음을 찾을 수 있습니다.소스 코드(쉘 스크립트)그래도 흥미롭다). 확실히,Gentoo etc-update
에도 하나가 있습니다, 하지만 출처나 추가 정보를 찾을 수 없습니다. (해당 링크에는 dispatch-conf
흥미로울 수도 있는 내용도 언급되어 있습니다. 잘 모르겠습니다.)