代码之家  ›  专栏  ›  技术社区  ›  codebox

.deb包配置文件问题

  •  3
  • codebox  · 技术社区  · 15 年前

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

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

    目前我已经将文件包含在“conffiles”文件中,因此安装程序总是询问用户是否覆盖现有文件,但这不是我想要的行为-覆盖文件是 从未 这是正确的做法,我担心用户在升级过程中可能会选择错误的选项,并破坏他们的数据。

    有没有什么方法可以告诉安装程序,如果数据库文件已经存在,就让它单独存在,不要问用户该怎么做?

    1 回复  |  直到 15 年前
        1
  •  4
  •   wazoox    15 年前

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

    #!/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