Debian打包,更新到数据库

我有一个计划连续更新的debian软件包,我有几台服务器上的内部使用。

现在,更新必须在不同的时间一个接一个地发生,并且一些服务器可能会跳转多个版本,因此更新不能被假定为给定服务器发生。

所以,我知道debian包装的基础知识,但我可能会跳过一些先进的function,可以帮助我在这里。
我现在唯一的想法是有一个相当复杂的preinst和postinst脚本,完全处理所有的oldversion-newversion范围。

更好的主意?

作为一名Debian开发人员,一般来说,在一个压缩包中只有一个版本的软件包,因此需要按顺序安装多个版本并不是一个理想的解决scheme。 安装前和安装后的脚本可以用来自动执行某些升级function,但是您需要在版本之间保持这些脚本的紧密关系,才能正常工作,并且如果您尝试删除或降级,则可能会导致问题,除非您进行了适当的validation脚本。

如果您有需要单独维护的更改以确保完成,您可以使用可以安装并取决于最新实际软件包的主“元”包。 然后,您需要为每个更改生成单独的包,并设置适当的控件以确保正确的顺序。 这需要对Debian策略有一定的了解才能完成,特别要注意关于包关系的第5.6.10节,因为您需要Pre-Depend先前的更新包。

单独的包可能是更多的工作,但可以让你做事增量,但最理想的方式是使包可以识别和自动进行必要的更改。 如果configuration文件还没有使用ucf这将是明智的,因为如果稍后执行手动修改/更新,将会使它们在软件包中更容易pipe理。

编辑更新:

当我回来睡觉后重新读这个,我注意到你正在谈论一个数据库正在更新。 在这种情况下,我认为如果你的数据库本身具有某种forms的版本模式,并且顺序更新是在单独的文件中,只需要针对数据库执行的话,那么包装可以更简单。 那么只需要根据数据库表中存储的任何版本添加一个新的命令文件以有序的方式执行。 数据库pipe理问题不再是必需的包装问题。 所有的软件包都要有适当的脚本前后脚本来检查现有的数据库版本,并在软件包中执行必要的SQL命令脚本以使其处于最新状态。