sovittaminen Debian käyttää coreutils-komennon Rust-toteutusta

Sylvestre Ledru, joka tunnetaan työstään kokoonpanon parissa Debian GNU/Linux raportoi onnistuneesta kokeesta Clang-kääntäjää käyttäen vaihtoehtoisella coreutils-apuohjelmien joukolla, joka on kirjoitettu uudelleen Rust-kielellä. coreutils sisältää apuohjelmia, kuten sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln ja ls. Integroinnin ensimmäisessä vaiheessa Debian Coreutilsin Rust-versiolle asetettiin seuraavat tavoitteet:

  • Paketin luominen vaihtoehtoisella coreutils-alustalla Rustissa sovellukselle Debian и Ubuntu.
  • Lataa Debian GNOME-työpöydällä käyttäen rust-coreutils-komentoa.
  • Asenna 1000 suosituinta pakettia arkistosta.
  • Käännetään Firefoxin, LLVM/Clangin ja kernel-lähdekoodien avulla Linux ympäristössä, jossa on rust-coreutils.

Yli 100 Rust/coreutils-korjauksen luomisen jälkeen kaikki asetetut tavoitteet on saavutettu onnistuneesti. Jatkuvaan työhön kuuluu puuttuvien apuohjelmien ja asetusten toteuttaminen, koodin laadun ja johdonmukaisuuden parantaminen, testipaketin kehittäminen sekä GNU Coreutils -testipaketin suorittamisen aikana tapahtuneiden kaatumisten korjaaminen (141/613 testistä toimii tällä hetkellä onnistuneesti).

rust-coreutils-pakettia luotaessa tavoitteena ei ollut korvata coreutils-ohjelmia, vaan mahdollistaa niiden rinnakkainen toiminta. Apuohjelmien Rust-versiot asennetaan hakemistoon /usr/lib/cargo/bin/, ja ne aktivoidaan lisäämällä tämä hakemisto PATH-ympäristömuuttujaan. Rust-coreutils-paketin luomista vaikeutti tarve ladata kaikki koontiriippuvuudet repositorioon, mukaan lukien Rust ja erilaiset pienet crate-paketit.

Käynnistyskuvan luominen ei ollut erityisen ongelmallista, mutta pakettien sovittaminen rust-coreutils-ympäristöön vaati huomattavasti työtä, koska monet asennuksen jälkeiset skriptit kutsuvat coreutils-paketin apuohjelmia. Useimmat ongelmat johtuivat puuttuvista pakollisista vaihtoehdoista. Esimerkiksi "cp"-apuohjelmasta puuttuivat "--archive" ja "--no-dereference" -asetukset, "ln" ei tukenut "--relative"-asetusta, mktemp ei tukenut "--t", sync ei tukenut "--fs" ja install ei tukenut "--owner" ja "--group". Muita ongelmia johtui toimintaeroista, kuten siitä, että asennusapuohjelma ei tukenut /dev/null-tiedostoa syöttötiedostona, mkdir-tiedostosta puuttui "--parents"-asetus "--parent"-asetuksen sijaan ja niin edelleen.

Suurten koodikantojen koontiversioiden testaaminen ei tuottanut merkittäviä ongelmia. Firefoxin ja LLVM/Clangin koontiversiot käyttävät Python-skriptejä ja CMakea, joten coreutils-komentosarjan korvaaminen ei vaikuttanut niihin. Ytimen koontiversio Linux Se sujui suhteellisen hyvin, vain kaksi ongelmaa ilmeni: virheilmoitus käytettäessä chownia symbolisen linkin kanssa ja "-n"-option puuttuminen ln-apuohjelmassa.

Lähde: opennet.ru

Osta luotettava isännöinti sivustoille, joissa on DDoS-suojaus, VPS VDS -palvelimet 🔥 Osta luotettavaa verkkosivustojen hostingia DDoS-suojauksella, VPS VDS -palvelimilla | ProHoster