Pas Debian aan om die Rust-implementering van coreutils te gebruik

Sylvestre Ledru, bekend vir sy werk om Debian GNU/Linux te bou deur die Clang-samesteller te gebruik, het 'n suksesvolle eksperiment gerapporteer met 'n alternatiewe stel nutsprogramme, coreutils, herskryf in die Rust-taal. Coreutils sluit nutsprogramme in soos sort, cat, chmod, chown, chroot, cp, date, dd, eggo, hostname, id, ln en ls. Vir die eerste fase van integrasie in Debian van die Rust-weergawe van coreutils, is die volgende doelwitte gestel:

  • Pak 'n Rust-alternatief vir coreutils vir Debian en Ubuntu.
  • Begin Debian met GNOME-lessenaar met behulp van roes-coreutils.
  • Die installering van die 1000 gewildste pakkette vanaf die bewaarplek.
  • Bou uit Firefox-, LLVM/Clang- en Linux-kernbronne in 'n omgewing met roes-coreutils.

Nadat ons meer as 100 pleisters vir Rust/coreutils geskep het, kon ons al die beoogde doelwitte suksesvol bereik. Die deurlopende werk sluit in die implementering van ontbrekende nutsprogramme en opsies, die verbetering van die kwaliteit en eenvormigheid van die kode, die ontwikkeling van die toetssuite en die uitskakeling van ineenstortings wat plaasvind wanneer die toetssuite vanaf GNU Coreutils uitgevoer word (141 toetse uit 613 word tot dusver suksesvol uitgevoer ).

Met die skep van die roes-coreutils-pakket is daar besluit om nie die core-utils-pakket te vervang nie, maar om die vermoë te bied dat hulle parallel kan werk. Nutsopsies in die Rust-taal word geïnstalleer in /usr/lib/cargo/bin/ en word geaktiveer deur hierdie gids by die PATH-omgewingsveranderlike te voeg. Die skep van die rust-coreutils-pakket was bemoeilik deur die behoefte om al die bouafhanklikhede in die bewaarplek af te laai, insluitend Rust en verskeie klein kratpakkette.

Die skep van 'n selflaaibeeld was nie 'n probleem nie, maar om die pakkette aan te pas vir 'n omgewing met roes-coreutils het baie werk geverg, aangesien baie post-install scripts nutsprogramme van die coreutils-stel oproep. Die grootste aantal probleme is veroorsaak deur die gebrek aan nodige opsies, byvoorbeeld, die "cp"-nutsding het nie die "--argief" en "--geen-dereference" opsies gehad nie, "ln" het nie die "- ondersteun nie. relative" opsie, mktemp het nie "-t" ondersteun nie, in sinchronisasie "-fs", in install - "--owner" en "-group". Ander probleme het ontstaan ​​as gevolg van verskille in gedrag, byvoorbeeld, die installasieprogram het nie die spesifikasie van /dev/null as 'n invoerlêer ondersteun nie, mkdir het die "--parents"-opsie gehad in plaas van "-parent", ens.

By die toets van die samestelling van groot kodebasisse het geen groot probleme ontstaan ​​nie. Wanneer Firefox en LLVM/Clang gebou word, word python-skrifte en cmake gebruik, so die vervanging van coreutils het hulle nie beïnvloed nie. Die bou van die Linux-kern het relatief glad verloop, met net twee probleme wat opgeduik het: foutuitvoer wanneer chown met 'n simboliese skakel gebruik word en die gebrek aan 'n "-n"-opsie in die ln-hulpprogram.

Bron: opennet.ru

Voeg 'n opmerking