Die Rückkehr des cp-Tools aus Rust Coreutils in Ubuntu führte zu einem Fehler beim Erstellen von livecd-rootfs

Die Entwickler von Ubuntu haben die cp-Variante aus dem GNU Coreutils-Paket zurückgebracht, nachdem eine Unvereinbarkeit in der Implementierung von cp aus den Rust Coreutils festgestellt wurde, die zu einem Fehler im Skript zum Erstellen von Live-Images (livecd-rootfs) führte.

Im Release von Ubuntu 24.04 wurden aufgrund entdeckter Schwachstellen die cp-, mv- und rm-Programme aus den GNU Coreutils zurückgebracht, aber im Update des Pakets coreutils-from-uutils 0.0.0~ubuntu26 wurde die Verwendung der Programme aus den Rust Coreutils wieder aufgenommen. Das Problem entstand durch den Aufruf der cp-Utility im Build-Skript mit den Optionen "-afL", die in den GNU Coreutils korrekt verarbeitet wurden, jedoch in den Rust Coreutils zu dem Fehler "cp: -r not specified; omitting directory " führten.

Der Fehler trat aufgrund eines unterschiedlichen Verhaltens bei der Verarbeitung der sich gegenseitig ausschließenden Optionen "-L" und "-a" auf. Die Option "-L" verlangt, dass symbolische Links dereferenziert werden, während die zusammengesetzte Option "-a", die auf "-dR --preserve=all" umgeschrieben wird, die Option "-d" enthält, die das Dereferenzieren symbolischer Links verbietet. In den Rust Coreutils wurde die zusammengesetzte Option "-a" vollständig verworfen, anstatt das konfliktbehaftete Flag "-d" einzeln zu entfernen, was dazu führte, dass das Flag "-R", das für das rekursive Kopieren von Verzeichnissen erforderlich ist, sowie das Flag "--preserve=all", das zur Beibehaltung der vorherigen Attribute in der Kopie verwendet wird, verloren ging.

Quelle: opennet.ru

60GB SSD 8Gb DDR4