Проблеми з переходом на Rust Coreutils в Ubuntu

Проблеми з переходом на Rust Coreutils в Ubuntu

Перехід Ubuntu на Rust Coreutils зіткнувся з черговою проблемою сумісності, яка торкнулася команди Unix cp.

Оновлення команди Ubuntu Foundations

У новому оновленні команди Ubuntu Foundations інженер Canonical Бенджамін Друн повідомив, що команда перевірила виправлення з аудиту Rust Coreutils від Zellic для версії 0.8 на Ubuntu 26.04 LTS. Проте Ubuntu відкотила cp на GNU Coreutils і подала upstream PR для основного виправлення.

Трекінг проблеми на Launchpad

Цю проблему відстежують у Launchpad як bug #2158691 і вона стосується пакетів coreutils-from в Ubuntu, який визначає, чи використовує команда GNU Coreutils, чи реалізацію на базі Rust (uutils).

Критичні помилки в новій версії команди cp

Згідно з описом помилки, Ubuntu коротко відновила версію Rust Coreutils команди cp в coreutils-from 0.0.0~ubuntu26. Ця зміна викликала збої в livecd-rootfs, одному з пакетів, відповідальних за створення завантажувальних образів Ubuntu. Помилка була помічена як критична, а негайним рішенням стало повернення до GNU cp.

Технічні особливості проблеми з cp

Технічна проблема полягала в тому, як uutils cp обробляв комбінації архівів і варіантів з символічними посиланнями, зокрема випадки на кшталт cp -afL. У GNU cp, опція -a є еквівалентом -dR --preserve=all, що включає рекурсивне копіювання та збереження атрибутів.

Проте реалізація на Rust обробляла деякі взаємно виключні прапорці занадто агресивно. Коли такі варіанти, як -a і -L, були об’єднані, рекурсивна поведінка, що має на увазі -a, могла бути втрачена, що призводило до помилок, таких як “-r not specified; omitting directory,” хоча режим архіву повинен включати рекурсивне копіювання.

Висновки щодо Rust Coreutils

Важливо розуміти, що це не є драматичним провалом Rust Coreutils в цілому. Це всього лише невелика, але болісна різниця в сумісності, яка проявляється, коли десятки років скриптів, інструментів складання та інфраструктури дистрибутивів стикаються з повторною реалізацією дуже старої поведінки командного рядка.

Отже, для кінцевих користувачів немає причин для паніки. Ubuntu не постачає зламаний cp у стабільному випуску, а повернення до GNU cp є точно тим консервативним кроком, який очікується під час розробки.