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 は警告を出力します。

関連情報