يصف هذا الفصل بنية ومحتويات الحزم ”الثنائية“ و ”المصدرية“. الأولى هي ملفات .deb
، يمكن الاستفادة منها مباشرة باستخدام dpkg
، في حين تحوي الأخيرة شفرة البرنامج المصدرية، بالإضافة إلى تعليمات بناء حزم ثنائية.
5.1. بنية الحزمة الثنائية
صيغة حزم دبيان مصممة بحيث يمكن استخراج محتوياتها على أي نظام يونكس يملك الأوامر الكلاسيكية ar
، و tar
، و gzip
(وأحياناً xz
أو bzip2
). هذه الخاصية التافهة ظاهريًا حاسمة بالنسبة للمحمولية والإنقاذ في حالات الكوارث.
تخيل، مثلا، أنك حذفت برنامج dpkg
عن طريق الخطأ، وأنك لا تستطيع بالتالي تثبيت حزم دبيان بعد ذلك. ولأن dpkg
هو حزمة دبيان بحد ذاته، يبدو أن نظامك قد انتهى أمره... لحسن الحظ، أنت تعرف صيغة الحزمة ويمكنك بالتالي تنزيل ملف .deb
الخاص بحزمة dpkg ثم تثبته يدويًا (انظر الملاحظة الجانبية ”أدوات“). إذا اختفى واحد أو أكثر من البرامج ar
،tar
أو gzip
/xz
/bzip2
بسبب سوء الحظ، فكل ما تحتاج له هو نسخ البرنامج المفقود من نظام آخر (بما أن كل واحد من هذه البرامج يعمل بطريقة مستقلة تمامًا، وليس له اعتماديات، فالنسخ البسيط سيكفي).
لنلقِ نظرة على محتويات ملف .deb
:
$
ar t dpkg_1.16.10_amd64.deb
debian-binary
control.tar.gz
data.tar.gz
$
ar x dpkg_1.16.10_i386.deb
$
ls
control.tar.gz data.tar.gz debian-binary dpkg_1.16.10_i386.deb
$
tar tzf data.tar.gz | head -n 15
./
./var/
./var/lib/
./var/lib/dpkg/
./var/lib/dpkg/updates/
./var/lib/dpkg/alternatives/
./var/lib/dpkg/info/
./var/lib/dpkg/parts/
./usr/
./usr/share/
./usr/share/locale/
./usr/share/locale/sv/
./usr/share/locale/sv/LC_MESSAGES/
./usr/share/locale/sv/LC_MESSAGES/dpkg.mo
./usr/share/locale/it/
$
tar tzf control.tar.gz
./
./conffiles
./preinst
./md5sums
./control
./postrm
./prerm
./postinst
$
cat debian-binary
2.0
كما ترى، يتألف أرشيف ar
الذي يضم حزمة دبيان من ثلاثة ملفات:
debian-binary
. This is a text file which simply indicates the version of the .deb
file used (in 2013: version 2.0).
control.tar.gz
. ملف الأرشيف هذا يحوي جميع المعلومات الفوقية المتاحة، مثل اسم الحزمة وإصدارها. تسمح بعض هذه المعلومات الفوقية لأدوات إدارة الحزم بأن تقرر إذا كان يمكن تثبيت الحزمة أو إزالتها، حسب قائمة الحزم المتوفرة مسبقاً على الجهاز مثلاً.
data.tar.gz
. يحوي هذا الأرشيف على جميع الملفات التي يجب استخراجها من الحزمة؛ هذا هو المكان حيث تخزن الملفات التنفيذية، الوثائق، الخ. قد تستخدم بعض الحزم صيغ ضغط مختلفة، حيث يتغير اسم الملف في تلك الحالة (data.tar.bz2
بالنسبة لصيغة bzip2، data.tar.xz
بالنسبة لصيغة XZ، data.tar.lzma
بالنسبة لصيغة LZMA).