این فصل به بررسی ساختار و محتوای بستههای “binary” و “source” میپردازد. اولی شامل فایلهای .deb
است که به صورت مستقیم توسط dpkg
استفاده میشود و دومی شامل سورس کد و دستورالعملهایی است که برای ساخت بستههای باینری لازم میباشند.
5.1. ساختار یک بسته باینری
قالب بستههای دبیان طوری طراحی شده است که محتوای آن روی هر سیستم یونیکس با دستورات کلاسیک ar
، tar
و gzip
(گاهی اوقات xz
یا bzip2
) قابل خواندن باشد. این ویژگی، برای قابلیت حمل بستهها و بازیابی آنها در شرایط بحرانی بسیار اهمیت دارد.
برای نمونه، تصور کنید که به اشتباه برنامه
dpkg
را پاک کردهاید و بنابراین دیگر نمیتوانید بستههای دبیان را نصب کنید.
dpkg
خود یک بسته دبیان است و اینطور بنظر میرسد که کار سیستم شما تمام شده باشد... خوشبختانه، شما قالب یک بسته را میشناسید و میتوانید با دانلود کردن فایل
.deb
بسته
dpkg آن را به صورت دستی نصب نمایید (قسمت
ابزار dpkg
، APT
و ar
را مشاهده کنید). اگر به بخت بد، برخی از برنامههای
ar
و
tar
یا
gzip
و
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
را نمایش میدهد.
control.tar.gz
. این فایل آرشیو شامل تمام اطلاعات جانبی مربوط به بسته است، مانند نام و نسخه آن. برخی از این اطلاعات به ابزار مدیریت بسته امکان تشخیص قابل نصب یا حذف بودن بسته را میدهد، برای نمونه بر اساس فهرست بستههای موجود در سیستم.
data.tar.gz
. این آرشیو شامل تمام فایلهای قابل استخراج از بسته است؛ این جایی است که فایلهای باینری، مستندات و موارد دیگر قرار دارند. بعضی بستهها ممکن است از قالبهای فشردهساز دیگری استفاده کنند که در این مورد نام فایل متفاوت خواهد بود (data.tar.bz2
برای bzip2 و data.tar.xz
برای xz).