“apt-get upgrade” 之后如何使本地更改的配置文件与更新的 vanilla 软件包版本保持同步?

“apt-get upgrade” 之后如何使本地更改的配置文件与更新的 vanilla 软件包版本保持同步?

我正在维护 Ubuntu 16.04.6 LTS 和 Debian 4.9.210-1 系统。

当我 时apt-get upgrade,我经常会收到通知说我的本地配置文件已经与更新的包配置文件有变化。

这是有道理的,因为我可以根据自己的需要调整这些配置文件,例如增加 PHP 中的内存设置、让 Apache 在 HTTP 响应中隐藏版本号等。

从逻辑上讲,我想在每个过程中保留我编辑的配置文件apt-get upgrade,但不幸的是,随着时间的推移,我本地更改的配置文件差异越来越多的来自 vanilla 软件包版本升级,因为更新的 vanilla 包配置文件本身会发生变化:包维护者会修复注释中的拼写错误、添加注释、更改其格式、添加新选项等。

这些不断增加的差异使得在更新的配置文件中看到相关变化变得越来越困难。

为了在下次升级时更容易读取这些差异,我想将不相关的更改(更新的注释等)合并到我本地更改的配置文件中,同时保持相关更改不变。

有没有一种简单的方法可以“挑选”我感兴趣的配置文件更改,同时保持我的本地配置不变?

答案1

我没有体验过或意识到您正在寻找的功能类型。不过,如果有的话会很方便。您可能会将其作为功能请求提出。目前,我所做的是在升级之前备份我的重要配置文件。如果新版本中有新功能或旧配置文件中没有的东西,我会让升级用提供商的版本覆盖,然后手动将重要内容放回去。很痛苦,但我不知道还有其他方法。;)

答案2

回答你的问题,没有办法用打包器来做这件事。要么全有,要么全无。

然而,你可以采取一些措施来提供长期帮助:

  1. 对于 Apache2,您可以创建单独的配置文件来覆盖默认值;在 Ubuntu 上,它位于 下/etc/apache2/conf-available,然后您可以使用 启用它a2enconf。在我的服务器上,删除版本就是这样做的!

  2. 有些工具提供了在子目录中创建文件的方法(类似于 Apache),并允许您通过以两位数字开头的名称对这些文件进行排序。logrotate/etc/logrotate.d/...文件夹。但是,这个不允许您覆盖现有文件。

  3. 准备一个脚本来调整你想要调整的参数,只要记住每次更新时都运行它(使用 apt,你可以创建一个钩子,然后它会自动运行!)我写了一个工具,但我认为还有更好的工具可以做这样的事情。我的工具读取现有文件,添加/删除参数,然后将其保存回来。例如,对于 postsrs,我想更改变量SRS_DOMAIN,所以我这样做:

     edit-config /etc/default/postsrsd SRS_DOMAIN example.com
    

    该文件默认没有这样的名称(并且直到您添加名称并重新启动该服务后才会起作用),之前:

     SRS_DOMAIN=
    

    运行我的命令后:

     SRS_DOMAIN=example.com
    

    我尝试仅对不能包含或子目录的配置文件使用我的命令。

    注意:edit-config 是我的建议选择项目。我有一个包含它的 PPA,但 PPA 会发生变化,并且并非始终 100% 可用……使用时风险自负!

     $ sudo add-apt-repository ppa:snapcpp/ppa
     $ sudo apt-get install advgetopt
     $ edit-config --help
    

相关内容