يصف هذا الفصل بنية ومحتويات الحزم ”الثنائية“ و ”المصدرية“. الأولى هي ملفات .deb، يمكن الاستفادة منها مباشرة باستخدام dpkg، في حين تحوي الأخيرة شفرة البرنامج المصدرية، بالإضافة إلى تعليمات بناء حزم ثنائية.
5.1. بنية الحزمة الثنائية
صيغة حزم دبيان مصممة بحيث يمكن استخراج محتوياتها على أي نظام يونكس يملك الأوامر الكلاسيكية ar، و tar، و gzip (وأحياناً xz أو bzip2). هذه الخاصية التافهة ظاهريًا حاسمة بالنسبة للمحمولية والإنقاذ في حالات الكوارث.
تخيل، مثلا، أنك حذفت برنامج
dpkg عن طريق الخطأ، وأنك لا تستطيع بالتالي تثبيت حزم دبيان بعد ذلك. ولأن
dpkg هو حزمة دبيان بحد ذاته، يبدو أن نظامك قد انتهى أمره... لحسن الحظ، أنت تعرف صيغة الحزمة ويمكنك بالتالي تنزيل ملف
.deb الخاص بحزمة
dpkg ثم تثبته يدوياً (انظر الملاحظة الجانبية
أدوات dpkg ،APT و ar). إذا اختفى واحد أو أكثر من البرامج
ar ،
tar أو
gzip/
xz/
bzip2 بسبب سوء الحظ، فكل ما تحتاج له هو نسخ البرنامج المفقود من نظام آخر (بما أن كل واحد من هذه البرامج يعمل بطريقة مستقلة تماماً، وليس له اعتماديات، فالنسخ البسيط سيكفي). حتى لو عاندتك الظروف التي يعاني منها نظامك أكثر من ذلك، وحتى لو لم تعمل هذه أيضاً (ربما اختفت بعض أهم المكتبات من النظام؟)، عليك تجربة النسخة الستاتيكية من
busybox (المتوفر في الحزمة
busybox-static)، التي تعمل بشكل مستقل أكثر، وتوفر أوامر فرعية مثل
busybox ar، و
busybox tar، و
busybox gunzip.
لنلقِ نظرة على محتويات ملف .deb:
$ ar t dpkg_1.17.23_amd64.deb
debian-binary
control.tar.gz
data.tar.gz
$ ar x dpkg_1.17.23_amd64.deb
$ ls
control.tar.gz data.tar.gz debian-binary dpkg_1.17.23_amd64.deb
$ tar tzf data.tar.gz | head -n 15
./
./var/
./var/lib/
./var/lib/dpkg/
./var/lib/dpkg/parts/
./var/lib/dpkg/info/
./var/lib/dpkg/alternatives/
./var/lib/dpkg/updates/
./etc/
./etc/logrotate.d/
./etc/logrotate.d/dpkg
./etc/dpkg/
./etc/dpkg/dpkg.cfg.d/
./etc/dpkg/dpkg.cfg
./etc/alternatives/
$ tar tzf control.tar.gz
./
./conffiles
./postinst
./md5sums
./prerm
./preinst
./control
./postrm
$ cat debian-binary
2.0
كما ترى، يتألف أرشيف ar الذي يضم حزمة دبيان من ثلاثة ملفات:
debian-binary. هذا ملف نصي يشير ببساطة إلى نسخة ملف .deb المستخدم (في 2015: الإصدارة 2.0).
control.tar.gz. ملف الأرشيف هذا يحوي جميع المعلومات الفوقية المتاحة، مثل اسم الحزمة وإصدارها. تسمح بعض هذه المعلومات الفوقية لأدوات إدارة الحزم بأن تقرر إذا كان يمكن تثبيت الحزمة أو إزالتها، حسب قائمة الحزم المتوفرة مسبقاً على الجهاز مثلاً.
data.tar.gz. يحوي هذا الأرشيف على جميع الملفات التي يجب استخراجها من الحزمة؛ هذا هو المكان حيث تخزن الملفات التنفيذية، الوثائق، الخ. قد تستخدم بعض الحزم صيغ ضغط مختلفة، حيث يتغير اسم الملف في تلك الحالة (data.tar.bz2 بالنسبة لصيغة bzip2، data.tar.xz بالنسبة لصيغة XZ).