创建 .deb 安装程序以替换旧软件包,但无法在 Ubuntu 18.04 软件中心迁移数据

创建 .deb 安装程序以替换旧软件包,但无法在 Ubuntu 18.04 软件中心迁移数据

这是我的情况,我有两个 .deb 安装程序AB。软件包B是软件包A的后继者。对于已经安装了软件包A并将安装软件包 的用户B,我希望完全替换软件包A并保留其中的数据~/.A(并移动到~/.B以供将来使用)。

首先,要用新包替换A旧包B,我使用冲突替换DEBIAN/control包文件中的选项B

其次,为了保留 中的数据,我在包的脚本~/.A中编写了一个函数来检查包是否已安装。如果找到包,我将移动到。然后,新包可以使用 包的旧数据来执行迁移过程。步骤如下:preinstBAA~/.A~/.BBA

  1. A
  2. preinst of B(检查包A并在此处移动数据)
  3. 卸载A
  4. A
  5. 安装B
  6. 后安装B

dpkg如果我安装这些软件包,一切都会顺利:

sudo dpkg -i package-a.deb
sudo dpkg -i package-b.deb

但是,如果我在 Ubuntu 18.04 上使用软件中心(gnome-software)安装软件包,就会出现问题。在执行脚本之前旧包A已被卸载。preinst安装步骤改为:

  1. A
  2. 卸载A
  3. A
  4. preinst of B(检查包A并在此处移动数据,但所有内容~/.A已被删除
  5. 安装B
  6. 后安装B

经过一番调查,我发现 Ubuntu 18.04 上的 gnome-sofware 使用 packagekit 作为后端(似乎用作apt后端)来安装 .deb 文件。我使用以下apt命令安装包,但出现了同样的问题!

注意:此apt方法可以在 Ubuntu 16.04 和 18.04 上重现该问题

sudo apt install ./package-a.deb
sudo apt install ./package-b.deb

这个问题困扰了我几个星期了,一直没有好的解决办法。仍然无法同时替换旧包和移动旧数据。欢迎提出任何建议。

相关内容