dpkg не может удалить символическую ссылку
У меня есть следующий скрипт postint в пакете dpkg:
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, он пытается удалить директорию, на которую указывает символическая ссылка, в отличие от ПРОСТО THE SYMLINK:
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 выдает предупреждение.