Debian

dpkg 無法刪除符號連結

  • May 15, 2014

我在 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 輸出警告。

引用自:https://serverfault.com/questions/595007