Cómo solucionar el error «Error reading fd» al limpiar la caché de Pacman en Arch Linux y derivadas

Si al ejecutar sudo pacman -Scc, pacman -Sc o incluso paccache aparecen mensajes similares a los siguientes:

:: ¿Desea quitar los paquetes restantes de la caché? [S/n]
quitando paquetes antiguos de la caché...
error: no se pudo abrir el archivo /var/cache/pacman/pkg/download-ZNQd6B: Error reading fd 7
error: no se pudo abrir el archivo /var/cache/pacman/pkg/download-bAKFkb: Error reading fd 7
...

Es probable que el problema no sea Pacman ni Paccache, sino la existencia de directorios temporales que han quedado en la caché del sistema.

¿Qué provoca este error?

Durante la descarga de paquetes, Pacman crea elementos temporales con nombres similares a:

/var/cache/pacman/pkg/download-XXXXXX

En condiciones normales, estos archivos o directorios temporales desaparecen automáticamente una vez finaliza la descarga.

Sin embargo, si una actualización se interrumpe, el sistema se apaga de forma inesperada o se produce algún fallo durante el proceso, pueden quedar restos dentro del directorio de caché.

Cuando posteriormente ejecutamos pacman -Sc, pacman -Scc o paccache, estas herramientas intentan tratarlos como archivos de caché normales y aparecen errores como «Error reading fd 7» o «Es un directorio».

Cómo comprobar si existen estos directorios

Podemos verificarlo ejecutando:

sudo find /var/cache/pacman/pkg -maxdepth 1 -type d -name 'download-*'

Si aparecen uno o varios directorios con ese nombre, ya hemos encontrado la causa del problema.

Cómo solucionarlo

Basta con eliminar esos directorios temporales:

sudo find /var/cache/pacman/pkg -maxdepth 1 -type d -name 'download-*' -exec rm -rf {} +

Estos directorios únicamente contienen restos temporales de descargas incompletas, por lo que pueden eliminarse con seguridad.

Comprobar que el problema se ha resuelto

Una vez eliminados los directorios, vuelve a ejecutar:

sudo pacman -Scc

o bien:

sudo paccache -r -k2

Si todo ha ido bien, la limpieza de la caché finalizará sin mostrar los errores anteriores.

Conclusión

Aunque el mensaje pueda hacer pensar en un problema de Pacman o de Paccache, la causa suele ser mucho más sencilla: directorios temporales download-* que quedaron abandonados tras una descarga interrumpida.

Eliminarlos permite que las herramientas de limpieza vuelvan a funcionar con normalidad y evita errores como «Error reading fd 7» o «Es un directorio» durante la limpieza de la caché.


Descubre más desde Tecno y Soft

Suscríbete y recibe las últimas entradas en tu correo electrónico.