Разработчики Ubuntu временно откатили реализацию команды cp на Rust, заменив её версией из классического набора GNU Coreutils. Очередная проблема перехода на Rust Coreutils всплыла в ходе проверки исправлений по итогам аудита, выполненного компанией Zellic для версии 0.8, используемой в Ubuntu 26.04 LTS. Инженер Canonical Бенджамин Друнг сообщил, что команда проверила эти исправления, но столкнулась с критической ошибкой.
Источник изображения: linuxiac.com
Инцидент зафиксирован в баг-трекере Launchpad под номером 2158691. Он связан с пакетом coreutils-from, отвечающим за выбор между оригинальной и Rust-реализацией. В версии 0.0.0~ubuntu26 разработчики вновь активировали cp на Rust, что привело к сбоям в пакете livecd-rootfs, используемом для сборки загрузочных ISO-образов. Ошибке присвоен критический статус, а оперативным решением стал возврат к GNU-версии cp. Запрос на доработку направлен в вышестоящий репозиторий uutils.
Техническая причина заключалась в том, что новая версия по-разному обрабатывала сочетания параметров при копировании файлов с сохранением структуры каталогов и ссылок. В сборочных скриптах применялся вызов с набором флагов, который в старой версии корректно включал рекурсивное копирование всех файлов и папок с сохранением прав доступа. В Rust-версии обработка оказалась излишне строгой: при определённом сочетании параметров система теряла режим рекурсивного копирования. В результате возникала ошибка, хотя по логике работы утилиты копирование должно было выполняться корректно.
Случившееся не говорит о полной несостоятельности Rust Coreutils. Это лишь одно из типичных несоответствий, которые проявляются при интеграции переписанных утилит в сложную инфраструктуру дистрибутива с многолетними наработками скриптов и сборочных цепочек. Пользователям стабильных релизов Ubuntu беспокоиться не о чём. Система не поставляет сломанную команду, а описанный откат является стандартной практикой, направленной на сохранение стабильности в процессе разработки.

