بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
بعض المعلومات عن flatpak .
الفكرة من ال runtime في flatpak توفير الحد الأدنى من الإعتماديات التي يحتاجها برنامج ما ليعمل ثم إذا إحتجت شيء أخر تقوم بتضمينه مع البرنامج هناك أكثرمن runtime منها خاصة بجنوم يوفر ما تحتاجه عادتا برامج تم برمجتها من خلال المكتبة الرسومية Gtk و هناك runtime خاص ب kde ويوفر الحد الأدنى من الإعتماديات التي يحتاجها عادتا أي برنامج يستخدم المكتبة الرسومية Qt بالإضافة لبرمجيات kde وهناك runtime إذا صح التعبير معيارية وحجمها أقل خاصة بمشروع freedesktop .
ممكن تثبيت أكثرمن runtime و اكثر من إصدار لذات ال runtime و أيضا أكثر من معامرية ويتم مشاركة هذه ال runtime بين البرامج يعني لنفترض برنامج gedit 3.26 و مثلا 57 firefox يحتاجو مثلا runtime gnome 3.26 يتم تثبيت runtime gnome 3.26 مرة واحدة ويتم مشاركته بين جميع البرامج التي تحتاجه وهكذا يتم توفير المساحة وإذا حصلت أي مشكلة او شيء يتم تحديث ال runtime وتستفيد الجميع البرامج التي تستخدمه.
كما هو مذكور في الوثائق الرسمية ليس من مصلحت المبرمج أن يقوم بعمل runtime خاص به لأنه يحتاج عملية صيانة دورية وقد يخرج الامر عن سيطرته لهذا الأفضل إستخدام شيء جاهز .
هناك اكثر من نوع لل runtime منها الذي نحتاجه لتشغيل البرنامج (Platform) مثلا runtimeخاص بجنوم بإصدار ومعمارية محددة org.gnome.Platform/x86_64/3.24 ومنها ما نحتاجه لبناء البرنامج أي يحتاجه المحزم (SDK)ويسمى مثلا في جنوم org.gnome.Sdk/x86_64/3.26 ويحتوي الأشياء الضرورية لعملية البناء وليس لعمل البرنامج نفسه ,إذا قمت بتحزيم برنامج ما من خلال إستخدام org.gnome.Sdk/x86_64/3.26 ليعمل ستحتاج تثبيت runtime platfrom بذات الإصدار والمعمارية مثلا org.gnome.Platform/x86_64/3.26 .
وهناك أنواع عبارة عن إضافات extension تحتوي مثلا ملفات الترجمة او مثلا الوثائق حيث يقوم flatpak بفصلهم عن البرنامج الأساسي أثناء عملية البناء أظن هذا السلوك الإفتراضي ما لم تطلب إلغاء هذا السلوك بشكل واضح .
خلاصة ما فهمته من وثائق flatpak البرنامج المحزم من خلال flatpak هو إذا صح التعبير وبطريقة ما عبارة عن مجلدات أو شجرة ملفات مثل الموجودة في القسم / أي القسم root , ال runtime يتم وصله داخل هذه الشجرة على مجلد usr/ وداخله البرامج والإعتماديات الأساسية وموجود طبعا مجلدات مثل usr/bin/ و usr/lib/ و ...إلخ ما يحصل عند تشغيل برنامج ما محزم من خلال flatpak يتم وصل ال runtime على مجلد usr/ و البرنامج الأساسي على مجلد إسمه app/ طبعا داخل بيئة معزولة من خلال إستخدام بعض التقنيات الموجودة أصلا ومذكروة في الوثائق الرسمية .
ممكن تثبيت أكثرمن runtime و اكثر من إصدار لذات ال runtime و أيضا أكثر من معامرية ويتم مشاركة هذه ال runtime بين البرامج يعني لنفترض برنامج gedit 3.26 و مثلا 57 firefox يحتاجو مثلا runtime gnome 3.26 يتم تثبيت runtime gnome 3.26 مرة واحدة ويتم مشاركته بين جميع البرامج التي تحتاجه وهكذا يتم توفير المساحة وإذا حصلت أي مشكلة او شيء يتم تحديث ال runtime وتستفيد الجميع البرامج التي تستخدمه.
كما هو مذكور في الوثائق الرسمية ليس من مصلحت المبرمج أن يقوم بعمل runtime خاص به لأنه يحتاج عملية صيانة دورية وقد يخرج الامر عن سيطرته لهذا الأفضل إستخدام شيء جاهز .
هناك اكثر من نوع لل runtime منها الذي نحتاجه لتشغيل البرنامج (Platform) مثلا runtimeخاص بجنوم بإصدار ومعمارية محددة org.gnome.Platform/x86_64/3.24 ومنها ما نحتاجه لبناء البرنامج أي يحتاجه المحزم (SDK)ويسمى مثلا في جنوم org.gnome.Sdk/x86_64/3.26 ويحتوي الأشياء الضرورية لعملية البناء وليس لعمل البرنامج نفسه ,إذا قمت بتحزيم برنامج ما من خلال إستخدام org.gnome.Sdk/x86_64/3.26 ليعمل ستحتاج تثبيت runtime platfrom بذات الإصدار والمعمارية مثلا org.gnome.Platform/x86_64/3.26 .
وهناك أنواع عبارة عن إضافات extension تحتوي مثلا ملفات الترجمة او مثلا الوثائق حيث يقوم flatpak بفصلهم عن البرنامج الأساسي أثناء عملية البناء أظن هذا السلوك الإفتراضي ما لم تطلب إلغاء هذا السلوك بشكل واضح .
خلاصة ما فهمته من وثائق flatpak البرنامج المحزم من خلال flatpak هو إذا صح التعبير وبطريقة ما عبارة عن مجلدات أو شجرة ملفات مثل الموجودة في القسم / أي القسم root , ال runtime يتم وصله داخل هذه الشجرة على مجلد usr/ وداخله البرامج والإعتماديات الأساسية وموجود طبعا مجلدات مثل usr/bin/ و usr/lib/ و ...إلخ ما يحصل عند تشغيل برنامج ما محزم من خلال flatpak يتم وصل ال runtime على مجلد usr/ و البرنامج الأساسي على مجلد إسمه app/ طبعا داخل بيئة معزولة من خلال إستخدام بعض التقنيات الموجودة أصلا ومذكروة في الوثائق الرسمية .