我在 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 包时,它试图删除一个目录符号链接指向与 JUST THE SYMLINK 相反:
dpkg: warning: unable to delete old directory '/SOMEDIRECTORY/releases/OLD_RELEASESHA': Directory not empty
当我rm -f
手动运行该命令时,它按预期工作,但是当 postinst 运行时发生了什么,它将该命令更改为其他什么试图删除符号链接指向的目录而不仅仅是符号链接本身?
有人知道吗?谢谢
该错误消息不是来自 postinst 中的任何命令。
您没有提供太多信息,但我的猜测是,当您尝试安装 deb 包时,系统上已经存在该包的旧版本。在这种情况下,dpkg 会在安装新版本之前尝试清除旧版本。那时它预计
/SOMEDIRECTORY/releases/OLD_RELEASESHA
是空的,因为没有其他包有文件,所以它试图删除它,但其中有一些文件不属于任何包。这很好,只是没有预料到,所以 dpkg 输出警告。