Product SiteDocumentation Site

15.3. إنشاء مستودع حزم للأداة APT

بدأت شركة فلكوت تدريجياً بمتابعة صيانة عدد من حزم دبيان، سواء الحزم المعدلة محلياً عن حزم سابقة، أو حزم منشأة من الصفر لتوزيع بيانات وبرامج داخلية.
يريدون مكاملة هذه الحزم في أرشيف حزم يمكن استخدامه مباشرة عبر APT لتسهيل عملية التنصيب. ولأسباب واضحة متعلقة بالصيانة، يريدون فصل الحزم الداخلية عن الحزم التي أعادوا بناءها محلياً. الهدف هو أن تصبح المدخلات الموافقة لهذه الحزم في ملف /etc/apt/sources.list.d/falcot.list كما يلي:
deb http://packages.falcot.com/ updates/
deb http://packages.falcot.com/ internal/
أعدّ مديرو النظم إذاً مضيفاً ظاهرياً على مخدم HTTP الداخلي لديهم، مع تحديد /srv/vhosts/packages/ كجذر مساحة الوب المرتبطة به. لقد سلموا عملية إدارة الأرشيفات نفسها إلى الأمر mini-dinstall (من الحزمة ذات الاسم نفسه). تتابع هذه الأداة مجلد الواردات incoming/ (في حالتنا، /srv/vhosts/packages/mini-dinstall/incoming/) وتنتظر وصول حزم جديدة إليه؛ وعند رفع حزمة جديدة سوف تثبتها في أرشيف دبيان في /srv/vhosts/packages/. يقرأ الأمر mini-dinstall ملف *.changes الذي ينشأ عند توليد حزم دبيان. تحوي هذه الملفات قائمة بجميع الملفات الأخرى المرتبطة بهذه النسخة من الحزمة (*.deb و*.dsc و*.diff.gz/*.debian.tar.gz و*.orig.tar.gz أو مثيلاتها الناتجة عن استخدام أدوات ضغط مختلفة)، وهي تسمح للأمر mini-dinstall بمعرفة الملفات التي يجب تثبيتها. كما تحوي ملفات *.changes اسم التوزيعة المستهدفة (غالباً unstable) الذي يُذكر في آخر مدخلة من مدخلات debian/changelog، حيث يستخدم mini-dinstall هذه المعلومة ليقرر المكان الذي سيثبت الحزمة فيه. لذلك يتعيّن على مديري النظم تغيير هذا الحقل دوماً قبل بناء أي حزمة، وإعطائه القيمة internal أو updates، حسب الموقع الهدف. بعدها يولّد mini-dinstall الملفات التي تحتاجها APT، مثل Packages.gz.
لإعداد mini-dinstall يجب ضبط الملف ~/.mini-dinstall.conf؛ كانت المحتويات في حالة شركة فلكوت كالتالي:
[DEFAULT]
archive_style = flat
archivedir = /srv/vhosts/packages

verify_sigs = 0
mail_to = admin@falcot.com

generate_release = 1
release_origin = Falcot Corp
release_codename = stable

[updates]
release_label = Recompiled Debian Packages

[internal]
release_label = Internal Packages
أحد القرارات التي تستحق الذكر هو توليد ملفات Release لكل أرشيف. وهذه تساعد في إدارة أولويات تثبيت الحزم باستخدام ملف الضبط /etc/apt/preferences (انظر قسم 6.2.5, “إدارة أولويات الحزم” لمزيد من التفاصيل).
استدعاء mini-dinstall في الواقع يبدأ تشغيل خدمة في الخلفية. وطالما أن هذه الخدمة تعمل، سوف تفحص ورود حزم جديدة إلى المجلد incoming/ كل نصف ساعة؛ عند وصول حزمة جديدة، سوف تُنقَل إلى الأرشيف ويعاد توليد ملفات Packages.gz و Sources.gz المناسبة. إذا كان تشغيل الخدمة يسبب مشكلة، يمكن أيضاً استدعاء mini-dinstall يدوياً في الوضع اللاتفاعلي (أو الدفعي batch)، باستخدام الخيار -b، في كل مرة تُرفَع فيها حزمة جديدة إلى المجلد incoming/. الإمكانيات الأخرى التي يوفرها mini-dinstall موثقة في صفحة الدليل mini-dinstall(1).‎