تكييف دبيان لاستخدام تطبيق Rust لـ coreutils

أبلغ سيلفستر ليدرو، المعروف بعمله في بناء Debian GNU/Linux باستخدام مترجم Clang، عن تجربة ناجحة باستخدام مجموعة بديلة من الأدوات المساعدة، الأساسية، المعاد كتابتها بلغة Rust. يتضمن Coreutils أدوات مساعدة مثل النوع، وcat، وchmod، وchown، وchroot، وcp، والتاريخ، وdd، وecho، وhostname، وid، وln، وls. بالنسبة للمرحلة الأولى من التكامل في إصدار Debian من Rust من coreutils، تم تحديد الأهداف التالية:

  • حزمة بديل Rust لـ coreutils لـ Debian وUbuntu.
  • تشغيل Debian مع سطح مكتب GNOME باستخدام Rust-coreutils.
  • تثبيت 1000 حزمة الأكثر شعبية من المستودع.
  • يمكنك البناء من مصادر Firefox وLLVM/Clang وLinux kernel في بيئة تحتوي على صدأ أساسي.

بعد إنشاء أكثر من 100 تصحيح لـ Rust/coreutils، تمكنا من تحقيق جميع الأهداف المقصودة بنجاح. يتضمن العمل المستمر تنفيذ الأدوات المساعدة والخيارات المفقودة، وتحسين جودة وتوحيد التعليمات البرمجية، وتطوير مجموعة الاختبار، والقضاء على الأعطال التي تحدث عند تشغيل مجموعة الاختبار من GNU Coreutils (يتم تشغيل 141 اختبارًا من أصل 613 بنجاح حتى الآن ).

عند إنشاء حزمة Rust-Coreutils، تقرر عدم استبدال حزمة Coreutils، ولكن لتوفير القدرة عليها للعمل بالتوازي. يتم تثبيت خيارات الأداة المساعدة في لغة Rust في /usr/lib/cargo/bin/ ويتم تنشيطها عن طريق إضافة هذا الدليل إلى متغير بيئة PATH. كان إنشاء حزمة Rust-coreutils معقدًا بسبب الحاجة إلى تنزيل جميع تبعيات البناء في المستودع، بما في ذلك Rust وحزم الصناديق الصغيرة المتنوعة.

لم يكن إنشاء صورة تمهيد مشكلة، ولكن تكييف الحزم لبيئة تحتوي على صدأ-coreutils يتطلب الكثير من العمل، نظرًا لأن العديد من البرامج النصية بعد التثبيت تستدعي الأدوات المساعدة من مجموعة coreutils. كان السبب في العدد الأكبر من المشكلات هو عدم وجود الخيارات الضرورية، على سبيل المثال، لم يكن لدى الأداة المساعدة "cp" خيار "--archive" و"--no-dereference"، ولم يدعم "ln" الخيار "-" "نسبي"، لم يكن mktemp يدعم "-t"، في المزامنة "-fs"، في التثبيت - "--owner" و "-group". ظهرت مشكلات أخرى بسبب الاختلافات في السلوك، على سبيل المثال، لم تدعم أداة التثبيت المساعدة تحديد /dev/null كملف إدخال، وكان لدى mkdir خيار "--parents" بدلاً من "-parent"، وما إلى ذلك.

عند اختبار تجميع قواعد التعليمات البرمجية الكبيرة، لم تنشأ أي مشاكل كبيرة. عند إنشاء Firefox وLLVM/Clang، يتم استخدام نصوص python وcmake، لذا فإن استبدال coreutils لم يؤثر عليهما. تم بناء نواة Linux بسلاسة نسبية، مع ظهور مشكلتين فقط: ظهور خطأ عند استخدام chown مع رابط رمزي وعدم وجود خيار "-n" في الأداة المساعدة ln.

المصدر: opennet.ru

إضافة تعليق