dpkg 无法删除符号链接

dpkg 无法删除符号链接

我在 dpkg 包中有以下 postint 脚本:

rm -f /SOMEDIRECTORY/current
ln -s /SOMEDIRECTORY/releases/RELEASESHA /SOMEDIRECTORY/current
ln -s /SOMEDIRECTORY/shared/config/config.json /SOMEDIRECTORY/releases/RELEASESHA/config/config.json

这是安装前的目录树:

drwxr-xr-x 2 user user 4096 May 12 15:21 config
drwxr-xr-x 3 user user 4096 May 14 08:56 shared
drwxr-xr-x 6 user user 4096 May 14 10:06 releases
lrwxrwxrwx 1 root          root            49 May 14 10:14 current -> /SOMEDIRECTORY/releases/RELEASESHA

当我尝试安装 deb 包时,它会尝试删除符号链接指向的目录,而不是仅仅删除符号链接:

dpkg: warning: unable to delete old directory '/SOMEDIRECTORY/releases/OLD_RELEASESHA': Directory not empty

当我手动运行该rm -f命令时,它可以按预期工作,但是当 postinst 运行时,它会将该命令更改为其他命令,试图删除符号链接指向的目录而不仅仅是符号链接本身?

有人知道吗?谢谢

答案1

该错误消息并非来自 postinst 中的任何命令。

您没有提供太多信息,但我的猜测是,当您尝试安装 deb 包时,系统上已经有一个旧版本的包。在这种情况下,dpkg 会在安装新版本之前尝试清除旧版本。它预计/SOMEDIRECTORY/releases/OLD_RELEASESHA此时是空的,因为没有其他包包含文件,所以它尝试删除它,但那里其中有些文件不属于任何软件包。这没什么,只是不合常理,所以 dpkg 会输出警告。

相关内容