.deb包的conffiles问题

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

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

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

有什么办法告诉安装程序,如果db文件已经存在,就把它放在一边,不要问用户该怎么办?

在Windows上使用内置python构build软件安装程序

针对虚拟机中的Windows 8.1 VM的Packerpipe理员问题

Packer Amazon EBS厨师 – 对不起,你必须有一个tty来运行sudo

为Ubuntu打包 – Web应用程序

如何将.java或.jar文件转换为Linux可执行文件(没有.jar扩展名,这意味着它不是.jar文件

如何使用GNU Automake进行后期安装?

什么是最好的方式发布多个Linux发行版的二进制应用程序?

包含unistd.h的write()的包装例程会导致错误

Matlab Mex插件包装库

托pipeJava Web Start应用程序以包含在Linux发行版中

是的,使用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

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....