دليل أداة captoinfo: تحويل termcap إلى terminfo في أوبونتو

مدخل إلى تحديث قواعد بيانات الطرفيات في لينكس

تعتمد بيئات يونكس ولينكس الحديثة على نظام terminfo لتحديد إمكانيات الشاشات الطرفية والتحكم في سلوكها، بعد أن كان معيار termcap القديم هو السائد لعقود. توفر حزمة أدوات النظام أداة متخصصة تُدعى captoinfo، وظيفتها أتمتة نقل وترجمة ملفات التعريف القديمة إلى التنسيق المعاصر دون الحاجة لإعادة كتابة التعليمات البرمجية يدويًا. يركز هذا الدليل التطبيقي على تثبيت الأداة ضمن بيئة Ubuntu، وتنفيذ تحويل عملي لملف إعدادات تجريبي، مع تحليل بنية المخرجات الناتجة وخيارات التحكم بالتنسيق لضمان توافق تام للطرفيات داخل نظامك.

1. تثبيت حزمة الأدوات واستكشاف بيئة الطرفية الحالية

تتواجد أداة captoinfo كجزء أساسي ضمن حزمة ncurses-bin. نبدأ بتحديث مستودعات النظام وتثبيت الحزمة عبر تنفيذ الأمر التالي:

sudo apt-get update -qq && sudo apt-get install -y ncurses-bin

للتحقق من نمط الطرفية النشط حاليًا داخل الجلسة، نقرأ المتغير البيئي عبر تشغيل echo $TERM.
تشير القيمة الظاهرة dumb إلى أن الطرفية تعمل في نمط تشغيل مبسط للغاية يفتقر إلى إمكانيات التحكم المرئي المتقدمة وتحديد مواضع المؤشر.

echo $TERM

للتأكد من تمركز الملف التنفيذي لـ captoinfo داخل مسارات النظام المعرفة، نستعلم عن موقعه باستخدام which captoinfo.
تقوم هذه الأداة بمطابقة اختصارات سمات termcap المكونة من حرفين وتحويلها إلى التسميات الوصفية المعتمدة في معيار terminfo.
⚙️ [أبرز خيارات التشغيل]

-v : تفعيل المخرجات المفصلة وتتبع خطوات المعالجة بدقة.
-V : إظهار رقم إصدار الأداة البرمجية.
-1 : طباعة كل سمة طرفية (capability) في سطر منفصل لتحسين القراءة.
-w : تحديد الحد الأقصى لعرض السطر في الناتج النهائي من حيث عدد الأعمدة.
-f : إعادة هيكلة سلاسل الماكرو الشرطية المعقدة لتسهيل تدقيقها.

which captoinfo

2. بناء ملف termcap تجريبي وتطبيق التحويل الأساسي

سنقوم بإنشاء ملف تعريف تجريبي باسم sample.termcap يحتوي على خصائص طرفية كلاسيكية لمحاكاة بنية البيانات القديمة:

![printf ‘sampleterm|Custom test terminal:\n\t:co#80:li#24:am:cl=\E[H\EJ:\n’ > ~/sample.termcap

لمعاينة بنية الملف والتأكد من صياغة مدخلاته، نستخدم الأمر cat ~/sample.termcap.
يظهر النص معتمدًا صيغة termcap التقليدية؛ حيث تفصل النقطتان الرأسيتان (:) بين السمات، متضمنةً أبعاد الشاشة (co#80 و li#24)، والالتفاف التلقائي للنص (am)، وتسلسل مسح الشاشة (cl).

cat ~/sample.termcap

نقوم الآن بتمرير الملف التجريبي إلى أداة التحويل عبر تنفيذ captoinfo ~/sample.termcap.
نلاحظ فورًا تغير الفواصل البنيوية من النقطتين الرأسيتين (:) إلى الفاصلة العادية (,)، فضلًا عن استبدال الرموز الثنائية بأسمائها الصريحة المعتمدة في terminfo، مثل تحول co و li إلى cols#80 و lines#24.

captoinfo ~/sample.termcap

3. ضبط عرض المخرجات وتفعيل وضع التتبع المفصل (-v و -w)

للحصول على تقرير تشخيصي يوضح آليات معالجة كل سمة على حدة، ننفذ الأمر بإضافة خيار التتبع captoinfo -v ~/sample.termcap.
يتيح الخيار -v رؤية سجل العمليات والخطوات المتبعة في تفسير السمات المعقدة أثناء عملية النقل.

captoinfo -v ~/sample.termcap

عند الرغبة في تنظيم النص الناتج ليناسب الشاشات ذات العرض المحدود، نحدد عدد الأعمدة باستخدام captoinfo -w 60 ~/sample.termcap.
يقوم المعامل -w بكسر الأسطر الطويلة تلقائيًا عند تجاوزها العرض المحدد (60 عمودًا في هذا المثال)، مما يمنح المخرجات مظهرًا منظمًا يسهل مراجعته في النوافذ الضيقة.

captoinfo -w 60 ~/sample.termcap

4. حفظ ملف terminfo واختبار سلامة البنية عبر tic

لحفظ المخرجات المحولة في ملف مستقل لاستخدامه لاحقًا، نقوم بإعادة توجيه التدفق القياسي عبر تشغيل captoinfo ~/sample.termcap > ~/sample.terminfo.
يضمن تخزين الناتج في ملف بامتداد terminfo جاهزيته لعمليات التجميع والإدراج ضمن قاعدة بيانات النظام.

captoinfo ~/sample.termcap > ~/sample.terminfo

للتحقق من خلو الملف الناتج من أي أخطاء لغوية أو تعارضات هيكلية، نستعين بمترجم التعريفات tic عبر الأمر tic -c ~/sample.terminfo.
يعمل الخيار -c على فحص صحة القواعد النحوية للملف دون تثبيته الفعلي في مسارات النظام، ويعد غياب رسائل الخطأ دلالة مباشرة على مطابقة الملف للمعايير القياسية.

tic -c ~/sample.terminfo

لإجراء مقارنة مرجعية بين مخرجاتنا وتعريفات الطرفيات القياسية المعتمدة في النظام، نستعرض جزءًا من إعدادات xterm عبر تشغيل infocmp -1 xterm-256color | head -n 15.
تُظهر نتائج أداة infocmp تطابقًا تامًا في الهيكلية العامة وقواعد التنسيق بين الطرفية الافتراضية xterm-256color وما أنتجته أداة captoinfo خلال خطوات التحويل السابقة.

infocmp -1 xterm-256color | head -n 15

استعرضنا من خلال هذه الخطوات العملية أسلوب الاستفادة من أداة captoinfo في توزيعة أوبونتو لترقية تعريفات termcap التراثية وضخها في قوالب terminfo الحديثة. تمنحك هذه المعرفة مرونة عالية في صيانة الأنظمة الموروثة وضمان تشغيل الأدوات والبرمجيات الطرفية دون تعقيدات التوافقية.