Skip to main content

Docker

يوفّر Docker طريقة خفيفة وقابلة للنقل لتغليف التطبيقات وتشغيلها في حاويات معزولة. ومن خلال تجميع التطبيق مع جميع التبعيات المطلوبة، تضمن الحاوية سلوكًا متّسقًا عبر الأجهزة المختلفة، من الحواسيب المحمولة إلى خوادم الإنتاج. TeX Live قوية لكنها كبيرة الحجم وحساسة للاختلافات على مستوى النظام. ويجعل تغليف TeX Live داخل صورة Docker سلسلة أدوات LaTeX قابلة للتنبؤ وقابلة لإعادة الإنتاج وسهلة التوزيع. ومع ذلك، تعتمد بعض حزم TeX Live على الوصول إلى الصدفة (shell). ولأسباب أمنية، يجب أن تعمل الحاوية في بيئة مقيّدة تمنع المستخدمين من تنفيذ أوامر صدفة عشوائية (على سبيل المثال عبر \write18 أو shell escape). ويحمي هذا العزل النظام المضيف ويتجنب الوصول غير المقصود إلى نظام الملفات الأساسي للحاوية أو إلى أدوات مثل bash.

إصدار TeXLive الكامل

TeXLive-Full@ayaka-notes هي صورة TeXLive Docker كاملة الميزات، مصممة للترجمة المعزولة لـ LaTeX في Ayakaleaf Pro أو Overleaf CEP أو بيئات ترجمة LaTeX المستقلة. تهدف هذه الصورة إلى توفير توزيعة TeXLive شبه كاملة مع خطوط وأدوات شائعة مثبّتة مسبقًا، وذلك لتقليل حالات فشل الترجمة الناتجة عن الحزم أو الخطوط المفقودة. ملاحظات: صورة Docker هذه لا تحتوي على أي مكوّن من sharelatex/overleaf. وهي تُستخدم للترجمة في Overleaf/Overleaf Pro.

الميزات:

  • 🚀 تدعم معماريتي الخوادم x86_64 و arm64
  • 📦 تثبيت TeXLive كامل ومحسّن
  • 🧩 خطوط وأدوات شائعة مثبّتة مسبقًا
  • 🐳 جاهزة للاستخدام مع Docker و Docker Compose
  • 🧪 مُختبرة مع Overleaf Server Pro / Overleaf Pro
  • 🔄 تُحدَّث بانتظام مع أحدث إصدارات TeXLive
  • 🏷 وسوم متعددة لإصدارات TeXLive (من 2020 حتى الأحدث)
  • 🧑‍🔬 دعم Knitr لشيفرة R في مستندات LaTeX

الاستخدام مع Ayakaleaf Pro

صُمّمت TeX Live Full من Ayaka-notes خصيصًا لـ ayakaleaf-pro، ويمكنك إضافة متغيرات البيئة التالية إلى الملف config/variables.env إذا كنت من مستخدمي toolkit. على سبيل المثال:
config/variables.env

إصدار TeX Live

بفضل GitHub Action، يمكننا بناء جميع صور tex بالتوازي، وتشمل:
  • ghcr.io/ayaka-notes/texlive-full:2026.1 (وأيضًا الوسم latest)
  • ghcr.io/ayaka-notes/texlive-full:2025.1
  • ghcr.io/ayaka-notes/texlive-full:2024.1
  • ghcr.io/ayaka-notes/texlive-full:2023.1
  • ghcr.io/ayaka-notes/texlive-full:2022.1
  • ghcr.io/ayaka-notes/texlive-full:2021.1
  • ghcr.io/ayaka-notes/texlive-full:2020.1
  • ghcr.io/ayaka-notes/texlive-full:base
نستخدم أرشيف المرآة من texlive info، الذي يتضمن تقريبًا جميع إصدارات texlive من 1996 إلى 2025. وبفضل Dockerfile الخاص بـ Overleaf، يمكننا بناء هذا المشروع بشكل أسرع.
لماذا لا يتم دعم TeX Live 2019 والإصدارات الأقدم؟ إن صيانة هذه الصور القديمة صعبة للغاية. كما أن موقع texlive.info لا يوفّر معلومات عن إصدارات TeX Live الصادرة قبل 2019، لذا لا يمكننا بناء صور لتلك الإصدارات. إذا كنت بحاجة إلى إصدار قديم محدد، فيُرجى فتح issue وإعلامنا بذلك.

المكوّنات المضمّنة

الحزم التالية مضمّنة في صورة docker.
  • جميع حزم TeXLive (لتلك السنة)
  • حزم R (المختارة فقط)
  • fontconfig inkscape pandoc python3-pygments wget python3
  • gnupg gnuplot perl-modules perl ca-certificates
  • ghostscript qpdf r-base-core tar
الخطوط التالية مضمّنة في صورة docker.
يُرجى التأكد مما إذا كان يمكن استخدام الخطوط المعنية تجاريًا. نحن لسنا مسؤولين عن أي مشكلات قانونية تنشأ عن استخدامك غير الصحيح للخطوط. وبمجرد تنزيلك للصورة، فإنك توافق على ذلك تلقائيًا.

الترخيص

MIT

المشكلات

عندما يترجم overleaf مشروع latex، إذا حدث عدم عثور على خط، فقد تجد أن عملية الترجمة تستغرق وقتًا طويلًا، وذلك لأنه عند فقدان خط، ستحاول texlive إعادة بناء ذاكرة الخطوط المؤقتة بالكامل. وهذه عملية تستهلك وقتًا طويلًا.في صورتنا، قمنا ببناء ذاكرة الخطوط المؤقتة مسبقًا، وأصلحنا هذه المشكلة عبر هذا الـ commit
عند استخدام هذه الصورة في sharelatex، قد تجد أن sync tex بطيء للغاية.راجع: https://github.com/overleaf/overleaf/issues/1150، ويكفي تعطيل http 2.0.
إذا كنت تستخدم صورة texlive الرسمية على docker hub texlive/texlive، فقد تجد أنه عند إعادة ترجمة مشروع، سيتم الإبلاغ عن خطأ. أما في صورتنا، فقد تم إصلاح هذه المشكلة، لأننا نستخدم أحدث صورة أساسية لـ ubuntu ونثبّت جميع التبعيات من مستودع ubuntu الرسمي.

تذكيرات تقنية أخرى

عند بناء صور texlive (قبل 2019)، قد تحتاج إلى الانتباه إلى المشكلات التالية:
  • قبل texlive 2017، كان يُدعم http/ftp فقط، لذا لا يمكنك استخدام https للتنزيل، إلا إذا عدّلت سكربت peal.
  • قبل 2015، كان يتم توفير ملف sha256 فقط. لذا لا يمكنك استخدام sha512 للتحقق.
آخر تعديل في ٤ أكتوبر ٢٠٢٦