Tilpasning af Debian til brugen af coreutils implementeringen i Rust

Sylvestre Ledru, der er kendt for sit arbejde med at samle Debian GNU/Linux ved brug af Clang-kompilatoren, har rapporteret om en vellykket gennemførelse af eksperimentet med at anvende et alternativt sæt af coreutils-værktøjer, der er omskrevet i Rust. Coreutils omfatter værktøjer som sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln og ls. For den første fase af integrationen af Rust-versionen af coreutils i Debian blev følgende mål sat:

  • Oprettelse af en pakke med en alternativ version af coreutils i Rust til Debian og Ubuntu.
  • Download af Debian med GNOME-skrivebord, ved brug af rust-coreutils.
  • Installation af de 1000 mest populære pakker fra repositoriet.
  • Bygning fra kildekoderne til Firefox, LLVM/Clang og Linux-kernen i et miljø med rust-coreutils.

Efter at have skabt over 100 patcher til Rust/coreutils er det lykkedes at gennemføre alle de fastsatte mål. Arbejdet fortsætter med fokus på realisering af manglende værktøjer og indstillinger, forbedring af kvaliteten og ensartetheden af koden, udvikling af testsættet og udbedring af fejl, der opstår ved kørsel af testsættet fra GNU Coreutils (141 tests er indtil videre gennemført ud af 613).

Ved oprettelsen af rust-coreutils-pakken blev det besluttet ikke at erstatte coreutils-pakken, men at sikre muligheden for parallel drift. Versionerne af værktøjerne i Rust installeres i /usr/lib/cargo/bin/ og aktiveres ved at tilføje denne mappe til miljøvariablen PATH. Oprettelsen af rust-coreutils-pakken blev kompliceret af behovet for at uploade alle byggeafhængigheder til arkivet, herunder Rust og diverse små crate-pakker.

Der opstod ikke væsentlige problemer med oprettelsen af det bootbare billede, men tilpasningen af pakkerne til miljøet med rust-coreutils krævede meget arbejde, da mange post-install scripts kalder værktøjer fra coreutils-sættet. Det største antal problemer blev forårsaget af manglende nødvendige indstillinger; for eksempel manglede 'cp'-værktøjet indstillingerne '--archive' og '--no-dereference', 'ln' havde ikke støtte for '--relative', 'mktemp' manglede '-t', 'sync' manglede '-fs', og 'install' havde ikke '--owner' og '--group'. Andre problemer opstod på grund af forskelle i adfærd; for eksempel understøttede 'install'-værktøjet ikke angivelse af /dev/null som inputfil, i 'mkdir' var der i stedet for '--parent' en indstilling som '--parents', osv.

Under test af store kodebaser opstod der ikke større problemer. Under bygningen af Firefox og LLVM/Clang anvendes python-scripts og cmake, så udskiftningen af coreutils påvirkede ikke dem. Bygningen af Linux-kernen forløb forholdsvis glat, kun to problemer opstod: fejlen der opstod ved brug af chown med et symbolsk link og manglen på optionen "-n" i ln værktøjet.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster