Adaptation de Debian pour l'utilisation d'une implémentation des coreutils en Rust

Sylvestre Ledru, connu pour son travail sur l'assemblage de Debian GNU/Linux avec le compilateur Clang, a annoncé le succÚs d'une expérience impliquant un ensemble alternatif d'outils coreutils, réécrit en Rust. Les coreutils comprennent des utilitaires tels que sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln et ls. Pour la premiÚre étape de l'intégration de la version des coreutils en Rust dans Debian, les objectifs suivants ont été fixés :

  • CrĂ©ation d'un package avec une version alternative des coreutils en Rust pour Debian et Ubuntu.
  • TĂ©lĂ©chargement de Debian avec l'environnement de bureau GNOME, en utilisant rust-coreutils.
  • Installation des 1000 packages les plus populaires du dĂ©pĂŽt.
  • Compilation Ă  partir des sources de Firefox, LLVM/Clang et du noyau Linux dans un environnement avec rust-coreutils.

AprĂšs avoir créé plus de 100 patchs pour Rust/coreutils, tous les objectifs prĂ©vus ont Ă©tĂ© rĂ©alisĂ©s avec succĂšs. Le travail en cours note la mise en Ɠuvre des utilitaires et options manquants, l'amĂ©lioration de la qualitĂ© et de l'uniformitĂ© du code, le dĂ©veloppement du jeu de tests, ainsi que la rĂ©solution des Ă©checs survenant lors de l'exĂ©cution du jeu de tests des GNU Coreutils (141 tests rĂ©ussis sur 613 Ă  ce jour).

Lors de la création du package rust-coreutils, il a été décidé de ne pas remplacer le package coreutils, mais de permettre leur fonctionnement en parallÚle. Les versions des utilitaires en Rust sont installées dans /usr/lib/cargo/bin/ et activées en ajoutant ce répertoire à la variable d'environnement PATH. La création du package rust-coreutils était compliquée par la nécessité de télécharger toutes les dépendances de construction dans le dépÎt, y compris Rust et divers petits packages crate.

La création de l'image de démarrage n'a pas posé de problÚmes majeurs, mais l'adaptation des packages pour l'environnement avec rust-coreutils a nécessité beaucoup de travail, car de nombreux scripts post-installation invoquent des utilitaires du jeu des coreutils. Le plus grand nombre de problÚmes a été causé par l'absence d'options nécessaires, par exemple, dans l'utilitaire 'cp', les options '--archive' et '--no-dereference' étaient manquantes, 'ln' ne supportait pas l'option '--relative', dans mktemp '-t', dans sync '-fs', et dans install '--owner' et '--group'. D'autres problÚmes sont apparus à cause de différences de comportement, par exemple, l'utilitaire install ne supportait pas l'indication de /dev/null comme fichier d'entrée, mkdir avait l'option '--parents' au lieu de '--parent', etc.

Lors des tests de gros ensembles de code, il n'y a pas eu de problÚmes majeurs. La compilation de Firefox et LLVM/Clang utilise des scripts Python et CMake, donc le remplacement de coreutils n'a pas eu d'impact. La compilation du noyau Linux s'est déroulée relativement bien, avec seulement deux problÚmes : un message d'erreur lors de l'utilisation de chown avec un lien symbolique et l'absence de l'option « -n » dans l'utilitaire ln.

Source : opennet.ru

Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster