المفاجأة: نفس الأمر، من برنامج مختلف تمامًا
كل أمر تعلّمته في هذا المسار — ls، cat، chmod، chown، sort، wc، head — كان طوال عقود يأتي من نفس المصدر: حزمة GNU Coreutils، مكتوبة بلغة C. لو فتحت خادم أوبنتو حديثًا اليوم وجرّبت أحد هذه الأوامر، قد يكون البرنامج الذي نفّذ الأمر فعليًّا غير ما تتوقّع.
من أين جاء هذا التغيير؟
مشروع uutils/coreutils هو إعادة كتابة لحزمة GNU Coreutils بلغة Rust، بهدف واجهة سطر أوامر مطابقة لكن بأمان ذاكرة أفضل. أوبنتو (Canonical) بدأت تجربته اختياريًّا في إصدار 25.10، ثم في أوبنتو 26.04 LTS (صدرت أبريل 2026) جعلته الافتراضي لعشرات الأوامر الأساسية بدل GNU.
💡 هذا التغيير خاص بأوبنتو حاليًا. على Fedora أو Debian أو Arch أو macOS، ما زالت أوامرك الأساسية من GNU كما تعرفها.
الاستثناءات: cp، mv، rm ما زالت GNU
ليس كل الأوامر انتقلت. بسبب ثغرات من نوع TOCTOU (time-of-check to time-of-use — فجوة زمنية بين فحص حالة ملف واستخدامه قد يستغلّها مهاجم) لم تُحلّ بعد في نسخة Rust، أوبنتو 26.04 LTS تركت cp وmv وrm تعمل من GNU حتى إشعار آخر، فيما أغلب الباقي (ls, cat, chmod, chown, sort, wc, head, وغيرها) أصبح من Rust افتراضيًّا.
| GNU Coreutils | Rust Coreutils (uutils) | |
|---|---|---|
| اللغة | C | Rust |
| الوضع في أوبنتو 26.04 LTS | استثناءات: cp, mv, rm | الافتراضي لبقية الأوامر |
| التوافق | المرجع التاريخي لكل التوزيعات | يهدف للتطابق، لم يكتمل 100% بعد |
| التوزيعات الأخرى | لا يزال الافتراضي | تجريبي/غير مفعّل افتراضيًّا |
كيف تعرف أي نسخة تعمل، وكيف ترجع لـ GNU؟
أوبنتو تُبقي النسختين مثبّتتين معًا خلال فترة الانتقال:
gnuls -la # يشغّل نسخة GNU من ls مباشرة (بادئة gnu)
gnucat file.txt # وكذلك لأي أمر آخر يبدأ بـ gnu
# رجوع كامل لكل الأوامر إلى GNU:
sudo apt install coreutils-from-gnu --allow-remove-essential
# أو الرجوع لاحقًا إلى نسخة Rust:
sudo apt install coreutils-from-uutils --allow-remove-essential
هل يكسر هذا سكربتاتك؟
نادرًا، لكن ليس مستحيلًا. uutils يهدف لتطابق كامل مع سلوك GNU، ولم يصل لذلك 100% بعد — ظهرت تقارير عن اختلافات طفيفة في أوامر مثل sort على أنظمة حقيقية بعد الترقية لأوبنتو 26.04. إذا كان سكربت إنتاج يعتمد على سلوك دقيق جدًّا لأمر معيّن (ترتيب sort الحرفي، رسائل خطأ محدّدة يقرأها سكربت آخر...) على خادم أوبنتو حديث، اختبره بعد أي ترقية توزيعة، أو استخدم بادئة gnu للتأكّد من السلوك الذي اعتدته.
🎯 التالي: مرجع أوامر Linux الكامل.