当升级 Ubuntu(可能还有其他 *nix)时,升级过程将显示更改的配置文件的差异,并询问我是否要替换它们、保留旧版本或手动合并它们。我无法通过 Google 或通过搜索找到任何此类程序Ubuntu 打包文档。您是否知道具有以下功能的此类程序?
- 很少或没有依赖项(最好是单个 shell 脚本)。
- 仅 Shell(最好没有诅咒)。
- 做不是尝试变得“聪明”,例如通过自动合并。
编辑:我写了这个小东西来进行一些初步检查并询问用户要做什么,但它不是很灵活或很好:
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 的,但您可能会发现其源代码(shell 脚本)尽管如此有趣)。显然,Gentooetc-update
也有一个,但我既找不到来源,也找不到更多信息(该链接还提到dispatch-conf
,也可能很有趣;我不知道。)