Tengo problemas para eliminar un directorio en mi sistema MacOS Mojave 10.14.3.
El sistema de archivos es APFS y estos son los síntomas:
$ rm -rf strange/
rm: strange/: Directory not empty
$ sudo rm -rf strange/
Password:
rm: strange/: Directory not empty
$ ls -lia strange/
total 0
786499 drwxr-xr-x 3 kk staff 96 Feb 26 18:56 .
430961 drwxr-xr-x+ 49 kk staff 1568 Feb 26 21:50 ..
$ ls -lid strange/
786499 drwxr-xr-x 3 kk staff 96 Feb 26 18:56 strange/
Observe que el número de enlaces del directorio es 3. Un directorio vacío recién creado tiene un número de enlaces de 2.
Ningún otro archivo o directorio del sistema tiene el mismo número de inodo (esto se comprobó utilizando sudo find / -inum 786499
), y creo que los directorios en los sistemas de archivos APFS no pueden tener enlaces duros adicionales de todos modos (como pueden con HFS+).
Al poner el directorio en la papelera y vaciarlo se obtiene un diálogo con el texto
La operación no puede completarse porque el elemento "extraño" está en uso.
Sin embargo, la ejecución de sudo lsof "$HOME/strange"
(después de devolver el directorio a mi directorio principal) no devuelve nada, y reiniciar la máquina no cambia nada. Usando sudo lsof +L1
(que enumera los archivos abiertos con un recuento de enlaces de cero, es decir, los archivos eliminados que se mantienen abiertos por alguna aplicación) tampoco revela ninguna ruta bajo el strange
directorio.
El directorio no tiene ACLs ni atributos extendidos:
$ ls -lde@ strange/
drwxr-xr-x 3 kk staff 96 Feb 26 18:56 strange/
Al hacer una copia del directorio con el Finder se crea strange copy
. Este directorio de copias tiene un número de enlaces de 2 y puede se borrará. Sin embargo, curiosamente, el cuadro de diálogo "Obtener información" en Finder dice que cada directorio (original y copia) contiene un elemento (normalmente informa de cero elementos para los directorios vacíos recién creados).
$ ls -la strange*
strange:
total 0
drwxr-xr-x 3 kk staff 96 Feb 26 23:57 .
drwxr-xr-x+ 49 kk staff 1568 Feb 27 10:36 ..
strange copy:
total 0
drwxr-xr-x 2 kk staff 64 Feb 26 23:57 .
drwxr-xr-x+ 49 kk staff 1568 Feb 27 10:36 ..
La ejecución de "Primeros auxilios" mediante la "Utilidad de discos" de MacOS no cambia nada (devuelve "Exitoso" al final). Esto independientemente de si se hace en el sistema vivo o en el modo de rescate.
Corriendo fsck_apfs -y
en el disco en modo de rescate hace producir una serie de advertencias en una de las instantáneas del sistema de archivos del siguiente tipo:
warning: Cross Check : Mismatch between extentref entry reference count (1) and calculated fsroot entry reference count (0) for extent (0x236654a + 4)
Esto no parece ser reparado por fsck_apfs
sin embargo.
¿Alguna pista sobre cómo borrar este directorio?
Para los que se preguntan, el directorio se encontró inicialmente como un subdirectorio de un juego de Steam (Factorio, versión 0.17.0). La ruta original del directorio era ~/Library/Application Support/Steam/steamapps/common/Factorio/factorio.app/Contents/data/base/campaigns/demo/locale/ru
. La parte de demo
hacia abajo hacía que el juego no se iniciara correctamente (estaba, aparte de los directorios, vacío, pero el juego intentaba recoger algún archivo inexistente del demo
directorio y se estrelló). Al apartar el directorio, el juego era jugable, pero más tarde descubrí que el directorio inferior ru
no se ha podido eliminar el directorio. Este es el directorio que he renombrado strange
y al que me refiero a lo largo de esta pregunta.
He enviado comentarios a Apple sobre esto, pero no soy un desarrollador de Apple, así que no puedo enviar un informe de error formal.