Debian 软件包文件在重新安装时被删除

时间:2021-05-17 10:08:38

标签: debian-packaging

最近,我一直在为 debian 包构建我的项目。

我制作了 my_project.deb 并且安装良好。

但是,当我重新安装它时,它无法正常工作。

$ sudo dpkg -i my_project_1.0.0.deb
...
Preparing to unpack my_project.deb ...
Unpacking my_project (1.0.0) ...
Setting up my_project (1.0.0) ...
# install success
$ ls /usr/share/my_proejct # run successfully

$ sudo dpkg -i my_project_1.0.1.deb
Preparing to unpack my_project.deb ...
Unpacking my_project (1.0.1) ...
Setting up my_project (1.0.1) ...
# install failed
$ ls /usr/share/my_proejct # No such file or directory

为了找出我的项目文件去了哪里,我编写了维护者脚本(preinst、postinst、prerm、postrm)和 ls 文件,如下所示。

$ cat preinst
echo "I'm preinst
ls /usr/share/my_project
echo "bye preinst"

那么,

$ sudo dpkg -i my_project_1.0.0.deb
# install success
$ sudo dpkg -i my_project_1.0.0.deb
Preparing to unpack my_project_1.0.0.deb ...
I'm prerm
bin  doc  lib # ls output
bye prerm
I'm preinst
doc  lib # ls output. `bin` is removed. Why..?
bye preinst
Unpacking my_project (1.0.0) over (1.0.0) ...
I'm postrm
bin  doc  lib # ls output. Seems they are unpacked well
bye postrm
Setting up my_project (1.0.0) ...
I'm postinst
ls: cannot access '/usr/share/my_project/': No such file or directory # ls output. They are removed. Why..
bye postinst

我做错了什么吗?我想不通这些发生的原因。

1 个答案:

答案 0 :(得分:0)

原来是我的错。

升级包时,这里是它的步骤。

  • old.prerm 升级
  • new.preinst 升级
  • 文件被解压
  • old.postrm 升级 # 在这里
  • 删除旧文件
  • new.postinst 升级

我的 postrm 脚本总是删除 my_project 文件夹,这会导致解压文件被删除。所以,我已经改变了这一点,以便在为 postrm 提供升级参数时不删除文件夹。

相关问题