Ich habe das folgende Postint-Skript im Dpkg-Paket:
rm -f /SOMEDIRECTORY/current
ln -s /SOMEDIRECTORY/releases/RELEASESHA /SOMEDIRECTORY/current
ln -s /SOMEDIRECTORY/shared/config/config.json /SOMEDIRECTORY/releases/RELEASESHA/config/config.json
Dies ist ein Verzeichnisbaum vor der Installation:
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
Wenn ich versuche, das Deb-Paket zu installieren, versucht es, ein Verzeichnis zu entfernen, auf das der symbolische Link verweist, und nicht NUR DEN SYMLINK:
dpkg: warning: unable to delete old directory '/SOMEDIRECTORY/releases/OLD_RELEASESHA': Directory not empty
Wenn ich den rm -f
Befehl manuell ausführe, funktioniert er wie erwartet. Aber was passiert, wenn „postinst“ ausgeführt wird, das den Befehl in etwas anderes ändert? Was versucht, das Verzeichnis zu entfernen, auf das der symbolische Link verweist, und nicht nur den symbolischen Link selbst?
Irgendjemand eine Idee? Danke
Antwort1
Diese Fehlermeldung stammt nicht von Befehlen in der Postinstallation.
Sie haben nicht viele Informationen gegeben, aber ich vermute, dass beim Versuch, das Deb-Paket zu installieren, bereits eine ältere Version des Pakets auf dem System vorhanden ist. In diesem Fall würde dpkg versuchen, die alte Version zu löschen, bevor die neue installiert wird. Es ging davon aus, dass es /SOMEDIRECTORY/releases/OLD_RELEASESHA
zu diesem Zeitpunkt leer sein würde, da keine anderen Pakete Dateien darin haben, also versuchte es, es zu entfernen, aber es gabwareinige Dateien darin, die keinem Paket gehören. Das ist in Ordnung, es wird nur nicht erwartet, daher gibt dpkg eine Warnung aus.