我是系统管理新手,正在帮助管理一个学生组的服务器。我想知道,当您升级软件包并且配置文件发生变化时,最佳做法是什么。我一直在查看差异,然后通常只保留旧版本,除非看起来有一些重要的东西需要添加,否则使用 kdiff3 手动合并配置文件,但有没有更好的方法呢?
另外,我是否必须自己将旧文件备份到某处,还是 dpkg 会自动进行备份?有时我会注意到某些目录中的旧版本配置文件中有 .old 文件。
这个问题很复杂,因为我是这个小组的新成员,我不知道为什么有些变化会这样,但如果有疑问,我会一直遵循现有版本。
顺便说一句,我想要一些具体信息。例如,当 dpkg 提示你整个 Y/N/I/O/D/etc 时,你会怎么做?你是备份旧文件,安装新文件,然后合并,还是在 ncurses 提示符下有更好的方法来合并文件?
答案1
这似乎是一种合理的做法。类似于我大约 15 年来一直在做的事情(自 1994 年以来一直在使用 Debian)。它对我来说总是有效的 :)
我从一个基本假设开始:如果我修改了配置文件,那么我有充分的理由,并且我的更改可能比新的默认配置文件中的任何内容更好/更重要。
然后我检查我的配置和新的打包版本,然后:
完全忽略任何差异,因为它们不重要或与我的设置无关。
将新配置中所有有用的内容合并到我现有的配置中。
如果有很多新内容,而我只想保留少量的更改,那么我会执行相反的操作并将我的更改合并到新的配置文件中,然后使用它。
我没有为此使用任何专门的工具或 GUI 工具。我只使用“diff -u”和 less 和 vi,偶尔还会使用一些标准文本处理工具,如 sed 或 perl。当 diff 输出超过一屏左右时,colordiff 也很好用。
答案2
尽管我同意 Craig Sanders 的回答,但我必须补充一点:在许多升级过程中(通常在发布之间 - 例如 Hardy --> Intrepid),apt 会将配置文件报告为更改,而我并没有更改它们。如果我确信我没有更改配置文件,我会选择转储旧文件并保留软件包维护者的版本。
答案3
刚刚发现这篇文章正在寻找我的类似问题的答案。
我最终选择打开一个终端,使用 meld 进行三向合并,
meld file.conf file.conf.dpkg-old file.conf.dpkg-new
将结果保存到 file.conf 并继续
答案4
是的,在我看来,最好的做法是获取维护版本并在其中报告定制的值。
这样,您就可以确保拥有最新的配置文件,其中包含更新的注释、注释掉的默认值等等。
当您由于新的配置文件版本而导致更新过程中出现冲突时,最好的做法是保留我们的版本和维护者版本之间的最佳版本,记下要审查的文件,然后手动编辑文件以手动合并差异(差分是一种非常强大的方法,但是 kdiff 也是一个不错的选择:)
要记住的最重要的事情是避免自定义配置文件过期!
我的意见 :)