Переход Ubuntu на Rust Coreutils столкнулся с очередной проблемой совместимости. На этот раз она затронула важную команду Unix cp.
В последнем отчёте команды Ubuntu Foundations инженер Canonical Бенджамин Друнг сообщил, что команда проверила исправления, подготовленные по результатам аудита Rust Coreutils от Zellic, на версии 0.8 в Ubuntu 26.04 LTS. Тем не менее Ubuntu откатила cp на GNU Coreutils и предложила апстрим-пулл-реквест с основным исправлением.
Проблема отслеживается в Launchpad как баг #2158691 и связана с пакетом Ubuntu coreutils-from, который определяет, использовать ли команду из GNU Coreutils или из Rust-реализации uutils.
Согласно отчёту, Ubuntu на короткое время вернула Rust-версию cp в составе coreutils-from 0.0.0~ubuntu26. Это изменение вызвало сбои в livecd-rootfs, пакете для сборки live-образов Ubuntu. Баг получил статус Critical, и немедленным решением стало возвращение GNU cp.
Техническая проблема заключалась в том, как uutils cp обрабатывает комбинации опций архивирования и работы с символьными ссылками, в частности cp -afL. В GNU cp опция -a эквивалентна -dR --preserve=all, что подразумевает рекурсивное копирование и сохранение атрибутов.
Rust-реализация, однако, слишком агрессивно обрабатывала некоторые взаимоисключающие флаги. При комбинации опций -a и -L рекурсивное поведение, подразумеваемое -a, могло теряться, что приводило к ошибкам вроде “-r not specified; omitting directory”, хотя режим архива должен включать рекурсивное копирование.
Важно понимать, что это не катастрофический провал Rust Coreutils в целом. Это всего лишь небольшое, но болезненное различие в совместимости, которое проявляется только тогда, когда десятилетия скриптов, сборочных инструментов и дистрибутивной инфраструктуры сталкиваются с переизобретением очень старого поведения командной строки.
Поэтому конечным пользователям паниковать не стоит. Ubuntu не поставляет сломанный cp в стабильных релизах, а возврат к GNU cp — это именно тот консервативный шаг, которого следует ожидать на этапе разработки.




Пока нет комментариев. Будьте первым!