Prispôsobenie Debianu na používanie implementácie Coreutils Rust

Sylvestre Ledru, známy svojou prácou pri budovaní Debian GNU/Linux pomocou kompilátora Clang, ohlásil úspešný experiment s použitím alternatívnej sady nástrojov, coreutils, prepísaných do jazyka Rust. Coreutils obsahuje nástroje ako sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln a ls. Pre prvú fázu integrácie Coreutils verzie Rust do Debianu boli stanovené nasledujúce ciele:

  • Zabaľte Rust alternatívu k coreutils pre Debian a Ubuntu.
  • Zavedenie Debianu s desktopom GNOME pomocou rust-coreutils.
  • Inštalácia 1000 najobľúbenejších balíkov z úložiska.
  • Zostavte zo zdrojov jadra Firefox, LLVM/Clang a Linux v prostredí s rust-coreutils.

Po vytvorení viac ako 100 záplat pre Rust/coreutils sa nám podarilo úspešne dosiahnuť všetky zamýšľané ciele. Prebiehajúce práce zahŕňajú implementáciu chýbajúcich utilít a možností, zlepšenie kvality a jednotnosti kódu, vývoj testovacieho balíka a odstraňovanie pádov, ku ktorým dochádza pri spustení testovacieho balíka z GNU Coreutils (zatiaľ úspešne prebieha 141 testov zo 613 ).

Pri vytváraní balíka rust-coreutils sa rozhodlo nenahradiť balík coreutils, ale poskytnúť im možnosť pracovať paralelne. Možnosti pomôcky v jazyku Rust sú nainštalované v /usr/lib/cargo/bin/ a aktivujú sa pridaním tohto adresára do premennej prostredia PATH. Vytvorenie balíka rust-coreutils bolo komplikované potrebou stiahnuť všetky závislosti na zostavení do úložiska, vrátane Rustu a rôznych balíkov malých prepraviek.

Vytvorenie bootovacieho obrazu nebol problém, ale prispôsobenie balíkov pre prostredie s rust-coreutils si vyžadovalo veľa práce, keďže veľa poinštalačných skriptov volá pomocné programy zo sady coreutils. Najväčší počet problémov bol spôsobený nedostatkom potrebných možností, napríklad obslužný program „cp“ nemal možnosti „--archive“ a „--no-dereference“, „ln“ nepodporoval „- relatívna možnosť, mktemp nepodporoval „-t“ , pri synchronizácii „-fs“, pri inštalácii – „--owner“ a „-group“. Ďalšie problémy vznikli v dôsledku rozdielov v správaní, napríklad inštalačný program nepodporoval špecifikovanie /dev/null ako vstupného súboru, mkdir mal možnosť „--parents“ namiesto „-parent“ atď.

Pri testovaní zostavy veľkých kódových základní nenastali žiadne väčšie problémy. Pri zostavovaní Firefoxu a LLVM/Clang sa používajú python skripty a cmake, takže nahradenie coreutils ich neovplyvnilo. Vytvorenie linuxového jadra prebehlo relatívne hladko, objavili sa len dva problémy: chybový výstup pri použití chown so symbolickým odkazom a chýbajúca možnosť „-n“ v utilite ln.

Zdroj: opennet.ru

Pridať komentár