Они просят адаптировать Debian для использования Rust-реализации coreutils.

Сильвестр Ледру (разработчик, известный своей работой по созданию Debian GNU / Linux с использованием компилятора Clang) недавно выпустил отчет об эксперименте exitoso с альтернативным набором утилит, coreutils, переписанных на Rust.

Тем, кто не знаком с Coreutils, следует знать, что он включает такие утилиты, как sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln и ls. Сильвестр Ледру упомянуть, что для первый этап интеграции в Debian версии coreutils в Rust, были поставлены следующие задачи:

  • Создайте пакет с альтернативными coreutils Rust как для Debian, так и для Ubuntu.
  • Загрузка Debian в среде рабочего стола Gnome с помощью rust-coreutils.
  • Установите 1000 самых популярных пакетов из репозитория.
  • Сборка из исходных кодов ядра Firefox, LLVM / Clang и Linux с помощью rust-coreutils.

И с этим после создания более 100 патчей для Rust / coreutils все намеченные цели были успешно достигнуты. В настоящее время незавершенная работа указывает на реализацию недостающих утилит и опций, повышение качества и согласованности кода, разработка набора тестов, исправление ошибок, возникающих при запуске набора тестов GNU Coreutils (141 из 613 тестов на данный момент выполняется успешно).

Также отметим, что при создании пакета rust-coreutils было решено не заменять пакет основные утилиты, но позвольте им работать параллельно. Версии утилит на Rust устанавливаются в / usr / lib / cargo / bin / и активируются добавлением этого каталога в переменную окружения PATH. Создание пакета rust-coreutils затруднило загрузку всех зависимостей сборки в репозиторий, включая Rust и несколько небольших пакетов.

Я начал работать над альтернативным Coreutils, разработанным на Rust. Цель проекта - предложить прямую замену GNU Coreutils на основе C и оценить, можно ли использовать это для запуска обычного Debian. Подобно тому, что я сделал с clang.debian.net несколько лет назад (перестроил архив Debian с помощью clang вместо gcc).

Надеюсь, большинство читателей знают, что такое Coreutils. Это набор программ, выполняющих простые операции (копирование / перемещение файла, изменение прав / владельцев и т. Д.). Даже если некоторые команды относятся к 70-м годам, они лежат в основе Linux, Unix и macOS. Хотя можно найти разные реализации, они пытаются оставаться совместимыми с точки зрения аргументов, опций и т. Д. Эта реализация Coreutils ничем не отличается!

С другой стороны, упоминается, что особых проблем с созданием загрузочного образа не было. системы, но адаптация пакетов для среды rust-coreutils потребовала много работы, поскольку многие сценарии после установки вызывают утилиты набора coreutils, поскольку большинство проблем было вызвано отсутствием необходимых параметров, например, в нем упоминается, что в утилите «cp» отсутствовали параметры «–archive» и «–no-dereference», а для «ln» она не поддерживала «–relative» и параметр mktemp - «-t«, Синхронно »-fs«, в установить - »–владелец« и »–группа«.

Другие проблемы также возникли из-за различий в поведении.Например, утилита установки не поддерживала указание / dev / null в качестве входного файла, в mkdir вместо «–parent» была опция «–parents» и так далее.

Упаковка для Debian - нетривиальная или простая задача. Это требует независимой загрузки всех зависимостей в файл. Rust с его новой экосистемой и маленькими коробочками значительно усложняет эту задачу.

При тестировании сборки с большими кодовыми базами серьезных проблем не было. При компиляции Firefox и LLVM / Clang используются скрипты python и cmake, поэтому замена coreutils на них не повлияла. Сборка ядра Linux прошла относительно гладко, возникли только две проблемы: вывод ошибки при использовании chown с символической ссылкой и отсутствие опции «-n» в утилите ln.

В конце концов Если вам интересно узнать больше о записке, вы можете проверить детали По следующей ссылке.


Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: AB Internet Networks 2008 SL
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.