Tutoriales

[Bug] Rust uutils du command informa un error de tamaño en Ubuntu 25.10

este Du comando es una herramienta estándar Verificar el uso del disco En sistemas Linux y Unix. Sin embargo, el usuario ejecuta Ubuntu 25.10 Noté algo extraño. Al calcular el tamaño del directorio, los modernos basados ​​en Rust Herramientas utilitarias La herramienta muestra un uso incorrecto del disco cuando los directorios principal y subdirectorio se superponen en Ubuntu 25.10.

Los usuarios informaron que uutils du El comando calculó incorrectamente el tamaño del directorio porque doble conteo El total parece demasiado alto en comparación con los clásicos. Herramientas centrales de GNU Versión.

trampa de doble conteo

este utilidades principales de uutils El proyecto tiene como objetivo reescribir las utilidades estándar de Linux utilizando óxido lenguaje de programación. Su objetivo principal es convertirse reemplazo directo Para herramientas tradicionales de GNU. Por lo tanto, los desarrolladores consideran que cualquier diferencia de comportamiento en comparación con GNU es un error.

La pregunta actual apareció cuando preguntaste. du Verifique dos directorios superpuestos a la vez.

Usuarios en el foro AskUbuntu informe pensar nuevo du El comando Rust uutils produce un tamaño de archivo incorrecto en Ubuntu 25.10.

Publicaciones relacionadas

Intentó comprobar el directorio principal y uno de sus subdirectorios con un solo comando, como /var y /var/log. La versión GNU lo maneja sin problemas e imprime el tamaño correcto, pero uutils fallido.

ejemplo:

En un problema relacionado con GitHub, el mismo usuario proporcionó un caso de prueba simple que muestra un directorio con un tamaño total de 15 MiB, con un subdirectorio que contiene 5 MiB de datos.

  • Totalmente correcto (GNU): La versión GNU calcula correctamente el uso total como 15 megas. Sólo cuenta los archivos en los subdirectorios una vez.
  • Totales incorrectos (uutils v0.2.2): este uutils El uso total reportado de la versión es 20 megas. Básicamente, agrega el tamaño del subdirectorio al tamaño del directorio principal, calculando estos archivos internos. dos veces.

La razón de esta diferencia es que uutils Agrega parámetros individuales sin confirmar si los datos han sido calculados.

Problema de ordenación de parámetros

Este problema es en gran medida una Problema de ordenación de parámetros Esto tiene que ver con cómo el programa maneja los datos superpuestos.

Al comprobar varios directorios, GNU tradicional du El comando y las utilidades como Busybox en realidad cambian su salida según el orden en que se enumeran los directorios. Sin embargo, incluso si cambiaran la salida específica por directorio, GNU y Busybox acuerdan el tamaño total final correcto.

Curiosamente, basado en Rust uutils du (Versión 0.2.2) Permanece consistente independientemente del orden de los parámetros. Produce el mismo resultado, pero aún así Incorrecto, Tamaño total inflado cada vez.

esto muestra uutils No se pueden verificar correctamente los archivos o directorios resumidos.

Algunos usuarios incluso sugirieron que las utilidades de Rust podrían no funcionar correctamente. recuento de enlaceslo que puede dar lugar a errores de suma.

Correcciones de soporte estándar POSIX

Otro usuario en el mismo hilo de AskUbuntu compartió una perspectiva diferente sobre el tema.

Durante años, los estándares de sistemas de archivos han proporcionado orientación confusa sobre este tema.

  • más viejo Estándar POSIX 2018 Tenga en cuenta que contar archivos que aparecen en varios directorios es definido por la implementación. Diferentes herramientas pueden elegir diferentes comportamientos.
  • Sin embargo, lo más nuevo Versión POSIX 2024 Elimina esta confusión. El estándar ahora requiere que solo se cuenten y reporten los archivos una entrada. Esto significa que el comportamiento GNU de contar el contenido sólo una vez es ahora el estándar requerido.

desde uutils expresamente destinado a Coincide exactamente con la salida de GNUeste comportamiento de doble conteo se considera un verdadero error de incompatibilidad.

Estado actual: ¡El error es público!

Los desarrolladores admiten que este problema de doble conteo es un error de incompatibilidad. Definitivamente viola el objetivo principal del proyecto: igualar exactamente la producción de GNU.

  • estado: esto es un Abierto pregunta.
  • pista: Este error está siendo rastreado actualmente. GitHub como problema #9202.
  • Progreso de la reparación: Al momento de escribir este artículo, no hay sucursales ni solicitudes de extracción relacionadas con el problema n.° 9202. Así que creo que todavía se está desarrollando una solución directa.

Solución temporal

Si está utilizando la siguiente versión du Residencia en uutils coreutils (como la versión 0.2.2 o similar en las nuevas versiones de Ubuntu)debería Evite la superposición de directorios en un solo du llamar.

Para obtener el tamaño total exacto de un directorio principal, simplemente ejecute el comando solo en el directorio principal. Por ejemplo, para comprobar las dimensiones. /varsolo usa:

du -smc /var

Esto asegura que usted obtenga Resumen correcto del tamaño total de /varcoincidiendo con lo que proporciona la versión GNU.

Estén atentos a nosotros para obtener más actualizaciones mientras el equipo de Rust uutils está trabajando arduamente para hacer su herramientas centrales El reemplazo perfecto que todos necesitamos.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba