Tengo el siguiente script postint en el paquete 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
Este es un árbol de directorios antes de la instalación:
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
Cuando intento instalar el paquete deb, intento eliminar un directorio al que apunta el enlace simbólico en lugar de SOLO EL ENLACE SIMPLE:
dpkg: warning: unable to delete old directory '/SOMEDIRECTORY/releases/OLD_RELEASESHA': Directory not empty
Cuando ejecuto el rm -f
comando manualmente, funciona como se esperaba, pero ¿qué sucede cuando se ejecuta postinst y cambia ese comando a otra cosa? ¿Qué está tratando de eliminar el directorio al que apunta el enlace simbólico y no solo el enlace simbólico en sí?
¿Alguien tiene idea? Gracias
Respuesta1
Ese mensaje de error no proviene de ningún comando en postinst.
No ha proporcionado mucha información, pero supongo que cuando intenta instalar el paquete deb, ya existe una versión anterior del paquete en el sistema. En ese caso, dpkg intentaría borrar la versión anterior antes de instalar la nueva. Esperaba /SOMEDIRECTORY/releases/OLD_RELEASESHA
estar vacío en ese momento, ya que ningún otro paquete tiene archivos allí, por lo que intentó eliminarlo, pero noeranalgunos archivos que contiene, no tienen propiedad de ningún paquete. Esto está bien, simplemente no es lo esperado, por lo que dpkg genera una advertencia.