يصف هذا الفصل بنية ومحتويات الحزم ”الثنائية“ و ”المصدرية“. الأولى هي ملفات .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).