Debian
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 包時,它試圖刪除一個目錄符號連結指向與 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 輸出警告。