Aanpassing van Debian voor het gebruik van de coreutils-implementatie in Rust

Sylvestre Ledru, bekend om zijn werk met het samenstellen van Debian GNU/Linux met de Clang-compiler, heeft met succes een experiment uitgevoerd waarbij een alternatieve set coreutils, herschreven in Rust, werd ingezet. De coreutils omvatten tools zoals sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln en ls. Voor de eerste fase van de integratie van de Rust-versie van coreutils in Debian werden de volgende doelen gesteld:

  • Het creĆ«ren van een pakket met de alternatieve Rust-versie van coreutils voor Debian en Ubuntu.
  • Debian downloaden met de GNOME-desktop, met behulp van rust-coreutils.
  • Installeren van de 1000 meest populaire pakketten uit de repository.
  • Bouwen uit bronbestanden van Firefox, LLVM/Clang en de Linux-kernel in een omgeving met rust-coreutils.

Na het creƫren van meer dan 100 patches voor Rust/coreutils is het gelukt om alle gestelde doelen te realiseren. De voortdurende werkzaamheden omvatten de implementatie van ontbrekende tools en opties, het verbeteren van de kwaliteit en consistentie van de code, het ontwikkelen van de testset en het oplossen van fouten die optraden bij het uitvoeren van de testset van GNU Coreutils (tot nu toe slagen 141 van de 613 tests).

Bij het maken van het rust-coreutils-pakket werd besloten om het coreutils-pakket niet te vervangen, maar om de mogelijkheid voor parallelle werking te waarborgen. De Rust-versies van de tools worden geïnstalleerd in /usr/lib/cargo/bin/ en worden geactiveerd door deze map aan de omgevingsvariabele PATH toe te voegen. Het creëren van het rust-coreutils-pakket werd bemoeilijkt door de noodzaak om alle bouwafhankelijkheden, inclusief Rust en verschillende kleine crate-pakketten, in de repository te uploaden.

Bij het creĆ«ren van het opstartbare beeld zijn er geen bijzondere problemen opgetreden, maar de aanpassing van de pakketten voor de omgeving met rust-coreutils vereiste veel werk, aangezien veel post-installatiescripts tools uit de coreutils-set aanroepen. Het grootste aantal problemen werd veroorzaakt door het ontbreken van noodzakelijke opties, bijvoorbeeld ontbraken de opties "—archive" en "—no-dereference" in de tool 'cp', was er in 'ln' geen ondersteuning voor de optie "—relative", in mktemp "-t", in sync "-fs", in install "—owner" en "—group". Andere problemen kwamen voort uit gedragsverschillen; bijvoorbeeld, de tool install ondersteunde geen opgave van /dev/null als invoerbestand, in mkdir was de optie "—parents" in plaats van "—parent" aanwezig, enzovoort.

Tijdens het testen van de assemblage van grote codebases zijn er geen grote problemen opgetreden. Bij de assemblage van Firefox en LLVM/Clang worden python-scripts en cmake gebruikt, dus de vervanging van coreutils had geen invloed. De assemblage van de Linux-kernel verliep relatief soepel, er kwamen slechts twee problemen naar voren: de foutmelding bij het gebruik van chown met een symbolische link en het ontbreken van de optie "-n" in de utiliteit ln.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster