.deb包conffiles问题

时间:2009-11-18 12:37:24

标签: linux installer installation debian packaging

我正在使用.deb软件包分发我的一个应用程序,但是有一个与其中一个文件有关的问题。

该发行版包括一个数据库文件,该文件由应用程序不断更新,全新安装我希望安装程序将新的空数据库文件复制到用户系统上,但在升级时我希望安装程序保留现有安装程序就地复制(覆盖它会导致所有用户数据丢失)。

目前我已将该文件包含在'conffiles'文件中,因此安装程序始终会询问用户是否覆盖现有文件,但这不是我想要的行为 - 覆盖文件 never 正确的事情,我担心用户可能会在升级过程中选择错误的选项并软管他们的数据。

有没有办法告诉安装程序,如果db文件已经存在,请不要管它,不要问用户该怎么办?

1 个答案:

答案 0 :(得分:4)

是的,使用preinst / postinst脚本。通常的方法是使用以dpkg-new结尾的特殊名称命名包中的文件,例如 /var/lib/myapp/mydb.data.dpkg-new 。然后编写一个' postinst '脚本,放入包的 DEBIAN 目录,检查数据库是否存在,并相应地重命名或删除dpkg-new文件,类似的东西:

#!/bin/bash

if [ -f /var/lib/myapp/mydb.data ]; then
    rm /var/lib/myapp/mydb.data.dpkg-new
else
   mv /var/lib/myapp/mydb.data.dpkg-new /var/lib/myapp/mydb.data
fi