# الرخص واستبدال التبعيات دليل مولد من المحتوى المعتمد. عدّل المصادر الأصلية، لا هذا الملف. حقائق الإصدار مرحلية، ولا تثبت دعم الأرشيف النهائي. تتطلب الخطوات المحلية أداة لبات مثبتة مسبقا؛ روابط موقع لبات قراءة إضافية عبر الشبكة. ## رخصة لوحة الأوامر مصدر لوحة أوامر لبات ومساعداتها وترجماتها ومدخل سطح المكتب وأيقونتها مرخصة تحت MIT OR Apache-2.0. اختر إحدى الرخصتين واحتفظ بالإشعارات التي تتطلبها. ترافق هذا الدليل [رخصة MIT الأصلية](../resources/dependencies/share/aspl-console/LICENSE-MIT) و[رخصة Apache-2.0 الأصلية](../resources/dependencies/share/aspl-console/LICENSE-APACHE) و[إشعارات الطرف الثالث](../resources/dependencies/share/aspl-console/THIRD-PARTY-NOTICES). تتيح هذه الأذونات إعادة البناء بمكتبات LGPL معدلة والهندسة العكسية لتصحيح تلك التعديلات. تحتفظ كل تبعية بشروطها الخاصة. يصف هذا الدليل لوحة الأوامر 0.8.0. تحقق من الأرشيف بمقارنته بسجل الإصدار وقائمة البصمات المنفصلين قبل الاستخدام. لا تثبت الحقائق المرحلية ومصادر النسخة المحلية وحدها توافق الأرشيف النهائي أو نشره. اعمل على نسخة تملكها من [التثبيت الكامل](docs/install.md#layout)، واحتفظ بالشجرة الأصلية للمقارنة والاستعادة. استبدال المكتبات اختياري ولا يلزم للتشغيل الأول. ## Qt الخارجية وتبعيات المضيف ترتبط اللوحة ديناميكيا بمكونات Qt Core وGui وWidgets للنظام. تبقى Qt وإضافات منصتها وتبعياتها المعتادة خارجية، وكذلك محمل ELF وglibc وlibm ومكتبات تشغيل C++ وخطوط النظام. لا يعيد أرشيف اللوحة توزيع مكتبات Qt أو الخطوط. تعتمد شروط LGPLv3 أو GPL أو الرخصة التجارية الخاصة بـQt على مسار التوزيع المختار. احتفظ بإشعارات حزمة Qt للنظام ومسار مصدرها المطابق واستبدالها. لا تستبدل رخصة MIT OR Apache-2.0 للوحة تلك الالتزامات. [توثيق رخص Qt](https://doc.qt.io/qt-6/licensing.html) قراءة إضافية عبر الشبكة؛ توفر حزمة النظام المثبتة موادها القانونية ومصادرها المنطبقة. تتطلب الأبنية الحالية `Qt 6.11` أو أحدث؛ يستخدم المضيف المرصود `Qt 6.11.2` و`glibc 2.44` و`GCC 16.2.1`. هذا لا يضمن التوافق مع أي مضيف. يظل IBus بحاجة إلى الخدمة والمحرك الخارجيين المختارين. ويحتاج Local Compose إلى إعداد لغة المضيف وجدول Compose المختار والملفات المضمنة فيه. لا تثبت هذه الخطوات خدمة أو تعيد تشغيلها أو تغير ملفات تعريف إدخال سطح المكتب أو توفر بيانات Compose للمضيف. راجع [المتطلبات](docs/install.md#prerequisites). ## المصادر والوصفات والإشعارات الأصلية المطابقة يحتوي `share/aspl-console/source/` المثبت على مصدر اللوحة ومساعداتها المطابق، وضوابط CMake وPython، ورقعة Fcitx، وأرشيفي Fcitx وECM المثبتين وترويسة nlohmann. يحتوي المجلد المجاور `material/` على أرشيفات التبعيات المحفوظة والرقع ووصفات الحزم ومصدر بيانات التوليد والإشعارات الكاملة. يربط [جرد التبعيات](../resources/dependencies/share/aspl-console/material/dependencies.json) إصدارات المكونات بملفات التشغيل والمصادر والوصفات والإشعارات. تحفظ الموارد المرافقة لهذا الدليل علاقة `source/` و`material/` واللغة الأصلية والبايتات الأصلية لكل ملف. يربط سجل الإصدار المنفصل هذه الأصول بالأرشيف المتحقق منه. لا تثبت مدخلات تحضير النسخة المحلية وحدها عرض مصدر منشور. تحتفظ Fcitx 5.1.22 وlibibus 1.5.34 وGLib 2.88.3 بشروط LGPL-2.1-or-later. تحتفظ libsystemd 261.2 بشروط LGPL وإشعارات الشيفرة المضمنة. تشمل التبعيات أيضا libuv وlibxkbcommon وExpat وlibxcb/xcb-proto وlibXau وlibXdmcp وlibX11 وlibxkbfile وxkbcomp ومكتبات util-linux وlibffi وPCRE2/SLJIT وzlib. احتفظ بتعليقات حقوق النشر والرخص المتساهلة والاستثناءات لكل ملف، ومنها Wraphelp واستثناء محلل Bison الخاص بـxkbcomp. تحتفظ nlohmann بإشعارات MIT وCC0 وإشعارات Apache-2.0 البديلة الخاصة بالمصدر. تحتفظ بيانات XKB وISO وUnicode وCompose الخاصة بإشعاراتها الأصلية ونسب مولداتها. تحفظ أرشيفات المصدر الكاملة المواد القانونية التي تتجاوز ملفات التشغيل المختارة. استخدم [سجل توليد الموارد الأصلي](../resources/dependencies/share/aspl-console/material/RESOURCE-GENERATION.md) ووصفات المكونات للمدخلات والخيارات الدقيقة. قد تتضمن الوصفات أدوات بناء أو مكتبات اختيارية لا تحملها اللوحة. لا تَعِد المصادر المثبتة بإعادة إنتاج بايتات مكتبات التوزيعة نفسها. احتفظ بالمصادر غير المعدلة وإشعارات حقوق النشر، وسجل كل تعديل وتاريخه. ## قوائم تشغيل قابلة للتحرير يسجل `share/aspl-console/install-manifest.json` ملفات التثبيت الفعلية وتجزئاتها وأوضاعها وخيارات CMake وعلاقات تبعيات ELF. لكل من بيئتي Fcitx وIBus تحت `lib/aspl-console/` ملف `manifest.json` قابل للتحرير. تتحقق هذه القوائم من السلامة؛ ولا تحتوي على توقيع أو جذر ثقة مضمن. يمكن تحديث القائمة بعد استبدال مقصود ومتوافق. لا تعد كتابة التجزئات لإخفاء ملف مفقود أو تالف دون تفسير. حافظ على الواجهات العامة وأسماء SONAME التي تستخدمها المساعدات، وعلى بنية الموارد الكاملة ومسارات تحميل المساعدات النسبية. لا يثبت الاستبدال التوافق مع مضيف أو محرك أو إصدار عميل أو Qt مختلف. تظل تجزئات الإصدار المنشورة تعرف البايتات الأصلية، ولا تعرف نسختك المعدلة. ## استبدال مكتبات مشتركة أو بيانات التشغيل أعد بناء المكتبة المطلوبة من إصدار مصدرها المحفوظ، باستخدام رقع الحزمة وخيارات البناء المسجلة. تشمل المواد `ibus-HEAD.patch` لـIBus ورقع GLib ومصدر GVDB ومصدر حزمة systemd. تحقق من رخصة كل مكون ووصفته قبل توزيع التعديلات. استبدل الملف المطابق في `lib/aspl-console/fcitx/lib/` أو `lib/aspl-console/ibus/lib/`، أو مكتبة Compose في `lib/aspl-console/libxkbcommon.so.0`. توجد وحدة Unicode الخاصة بـFcitx في `fcitx/addon/libunicode.so`. توجد ملفات Core وConfig وUtils المعاد بناؤها في `recipient_build/fcitx-build/core/bin`؛ أعد بناء Core منفصلة إذا تغير مصدرها، ووحدة Unicode منفصلة إذا عدلتها. احتفظ بملفات البيانات المطابقة. بعد استبدال Fcitx المقصود، استخدم أوامر طرفية لينكس التالية مع المسار المطلق لنسخة التثبيت: أمر طرفية لينكس ```terminal console_tree=/absolute/path/to/recipient-owned/install console_source="$console_tree/share/aspl-console/source" python3 "$console_source/tools/refresh_runtime_manifest.py" \ "$console_tree/lib/aspl-console/fcitx" ``` لاستبدال IBus، مرر `"$console_tree/lib/aspl-console/ibus"` بدلا منه. تحدث الأداة أحجام الملفات وتجزئاتها في القائمة الموجودة، وترفض الملفات المفقودة والروابط الرمزية والمسارات غير الآمنة. يتحقق مساعد Compose من مسار المكتبة المحملة ويتيح استبدالا متوافق الواجهة فيه دون تحديث قائمة Fcitx أو IBus. تبقى متطلبات لغة المضيف وجدول Compose منطبقة. ## إعادة ربط مساعد لوحة المفاتيح الساكن استخدم مترجم `C++20` و`CMake 3.21` أو أحدث و`Python 3` و`patch` و`gettext` و`pkg-config`. جهز ملفات تطوير `Qt 6.11` أو أحدث بمكونات `Core` و`Gui` و`Widgets` و`Network` و`Test` و`LinguistTools`، و`libuv 1.52.1` و`Expat 2.8.4` و`libxkbcommon 1.13.2` و`libxkbcommon-x11 1.13.2` و`GLib/GIO/GObject 2.88.3` وملفات تطوير `Wayland` و`XCB`. تتحقق خطوة ضبط المصدر الكامل من GLib حتى مع تعطيل الاختبارات. يستخدم المضيف المسجل `GCC 16.2.1` و`Qt 6.11.2`. لا يلزم تثبيت حزمة تطوير Fcitx أو عميل Fcitx Qt D-Bus. ابدأ بالمصدر والمواد المطابقين لنسخة التثبيت. تضبط أوامر طرفية لينكس التالية بناء جديدا وتجهز Fcitx المرقعة وترويسات Core المولدة: أمر طرفية لينكس ```terminal console_tree=/absolute/path/to/recipient-owned/install console_source="$console_tree/share/aspl-console/source" recipient_build=/absolute/path/to/new/build cmake -S "$console_source" -B "$recipient_build" -DBUILD_TESTING=OFF \ -DASPL_CONSOLE_DEPENDENCY_MATERIAL="$console_tree/share/aspl-console/material" ``` يتحقق الضبط من المدخلات المثبتة، ويفك Fcitx ويرقعها ويبني Core وConfig وUtils وUnicode، ثم يجهز الموارد. عدل `"$recipient_build/fcitx-build/fcitx5-5.1.22/src/im/keyboard/keyboard.cpp"`، مع حفظ الإشعارات وتسجيل التغيير وتاريخه. لا تفك Fcitx من جديد أو تعيد تشغيل `prepare_fcitx.py` بعد التعديل. استخدم [بناء إعادة الربط المستقل](../resources/dependencies/share/aspl-console/source/tools/relink-fcitx/CMakeLists.txt) مع مصدر مساعد اللوحة المطابق والترويسات المولدة ونسخة بيئة التشغيل: أمر طرفية لينكس ```terminal recipient_helper=/absolute/path/to/new/helper-build cmake -S "$console_source/tools/relink-fcitx" -B "$recipient_helper" \ -DFCITX_SOURCE="$recipient_build/fcitx-build/fcitx5-5.1.22" \ -DFCITX_BUILD="$recipient_build/fcitx-build/core" \ -DFCITX_RUNTIME="$console_tree/lib/aspl-console/fcitx" cmake --build "$recipient_helper" -j2 install -m755 "$recipient_helper/aspl-console-fcitx-worker" \ "$console_tree/libexec/aspl-console/aspl-console-fcitx-worker" ``` يربط البناء المستقل شيفرة لوحة المفاتيح الساكنة المختارة ومساعد اللوحة بالمكتبات المشتركة المنسوخة. القيمة الافتراضية لـ`RECIPIENT_RUNPATH` هي `$ORIGIN/../../lib/aspl-console/fcitx/lib`، نسبة إلى `libexec/aspl-console`. للبنية المختلفة، مرر `-DRECIPIENT_RUNPATH` بمسار `$ORIGIN` الحرفي الموافق. اقتبسه في الطرفية حتى لا توسع الصدفة `$ORIGIN`. لا يثبت نجاح الربط وحده عمل أي تعديل. ## فحص النسخة المعدلة والاستعادة شغل نسخة التطبيق مع أداة لبات المثبتة منفصلة. اختبر مسار الإدخال المعدل وسلوك لوحة المفاتيح وUnicode، وتشغيلا عاديا لمصدر محفوظ مع إدخال سطر. إذا فقد مساعد أو مورد، يجب أن يتوقف التحرير بصورة ظاهرة؛ أصلح الإعداد المبلغ عنه واستخدم [إعادة المحاولة الصريحة](docs/guides/input-methods.md#retry). إذا منع عطل محمل المكتبات فتح النافذة، أصلح التثبيت أو المضيف أولا. احتفظ بالشجرة الأصلية للاستعادة. تثبت فحوص الاستبدال القصيرة الموجودة سلوك تعديل لوحة المفاتيح وlibxkbcommon المحددين فيها، ولا تثبت أي تعديل أو دعما عاما. بعد الاستبدال المقصود، أعد توليد جرد التثبيت المحلي باستخدام نسخة التثبيت وبناء CMake المطابق وخيارات مجلداته الفعلية: أمر طرفية لينكس ```terminal python3 "$console_source/tools/install_inventory.py" \ --install "$console_tree" --build "$recipient_build" \ --bindir bin --libdir lib \ --libexecdir libexec --datadir share ``` تحتاج هذه الخطوة إلى Python 3 و`readelf`. تحقق من الشجرة المعدلة محليا بأداة الحزم المطابقة؛ واحتفظ بسجل التعديلات والتجزئات الجديدة. يجهز المشرفون الإصدار ويتحققون منه بصورة منفصلة عبر مدخل [المساهمة](contributing.md). لا ينشر مسار المستلم هذا أرشيفا ولا يكمل عرض مصدر للإصدار.