升级配置文件的程序

升级配置文件的程序

当升级 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

我强烈怀疑你看到的程序是dpkgDebian-ish 发行版中的低级包管理(使用apt(itude))。 请参阅此处的博客文章解释其配置文件管理

你可能会劫持这个函数,即创建你自己的.deb- 我怀疑,这对于你想要实现的目标来说可能会很麻烦。

还有一条路可以走,你可以看看NetBSD 的etcupdate工具(虽然它是特定于 NetBSD 的,但您可能会发现其源代码(shell 脚本)尽管如此有趣)。显然,Gentooetc-update也有一个,但我既找不到来源,也找不到更多信息(该链接还提到dispatch-conf,也可能很有趣;我不知道。)

相关内容