【发布时间】:2014-07-26 00:00:16
【问题描述】:
我有点卡在 Ubuntu 的 postinst 文件中。 问题是在升级包时。我有一些 sqlite 数据库(标记为配置文件以将它们从升级中保存),我想在其中修改特定版本(添加一些列)。因为我只想在安装特定版本时修改数据库(例如从版本 3 或更早版本到 4),所以我检查 $2 是否不为空。
数据库升级方法如下:
- 首先我备份数据库
- 制作新表
- 然后我修改表格
- 将旧表中的行复制到新表中
问题是如果出现问题,数据库已经被修改,但包将是新版本(四个),配置版本为 3。如果我想尝试再次安装包以获取package ok,postinst 会失败,因为数据库已经被修改过。 我想到的一件事是 unset -e,但我觉得这很不愉快。
我已经在文档中搜索了有关如何从 postinst 恢复失败的信息,例如它是否被称为具有不同参数的另一个脚本,但在文档中 Debian 没有说任何有用的信息。 也许 postinst 脚本不是修改数据库的最佳位置?
谢谢
最好的问候
【问题讨论】: