سلام
بسته های دبیان فرمت فایلشون deb هستش درحالی که آرچ tar.zst است
یعنی فقط یک فایل فشرده باینریست ؟
تفاوتش با deb file چیه ؟
سلام
فایلهای deb هم یه نوع فایل فشرده هستند. با قالب فشردهسازی ar فشرده شدند. میتونید با دستور ar، فایلهای فشرده ar بسازید و استخراج کنید. ar جز binutils هست. binutils به طور پیشفرض نصب نیست. ar معمولا همراه busybox هم پیدا میشه.
binutils شامل یه سری ابزار برای کار با فایلهای باینری هست. معمولا برای کامپایل و ساختن برنامهها استفاده میشه.
busybox هم یه برنامه هست که خیلی از ابزارهای پرکاربرد یونیکس رو داخل خودش داره. چیزهایی مثل ls، sh، sed، cat و خیلی چیزهای دیگه که همراه coreutils و util-linux هستند. به همراه بعضی چیزهای binutils. معمولا یه نسخه کوچک vi و wget هم همراهش هست.
همه اینها رو توی یه فایل اجرایی جمع میکنه. توی دبیان، نسخه لینک شده این فایل اجرایی کلا به 700Kib هم نمیرسه. نسخهای که کتابخانههای مورد نیاز رو همراهش داره، کلا 2Mib هست.
به شدت بدرد سیستمهای نهفته و جاهایی که حافظه کمی هست، میخوره.
البته بعضی ابزارهاش، همه قابلیتها رو ندارند. مثلا dmesg اون، خروجی رنگی نداره یا modprobe اون، درست متوجه بعضی پیکربندیهای داخل /etc/modprobe.d/ نمیشه.
میتونید بسته binutils یا busybox یا busybox-static رو نصب کنید تا به ar دسترسی داشته باشید. دقت کنید که بستههای busybox و busybox-static با هم تداخل دارند و نمیشه همزمان هر دو رو نصب کرد.
بعد از اینکه نصب کردید، یه فایل deb پیدا کنید. فایلهای deb دانلود شده توسط apt، توی دایرکتوری زیر ذخیره میشن. به احتمال خیلی زیاد، حداقل یه فایل deb میتونید اونجا پیدا کنید. (مگه اینکه apt clean رو به تازگی زده باشید)
/var/cache/apt/archives
بعد برید توی /tmp/ یا هر جایی که میخواهید و یه دایرکتوری درست کنید و واردش بشید.
یکی از فایلهای deb رو کپی کنید اونجا.
اگه binutils رو نصب کردید، بسته رو مستقیم با ar استخراجش کنید. اینجا فرض شده فایل deb اسمش، rsync.deb هست. (اگه از cache های apt آوردید، اسمش طولانیتر و متفاوته)
ar x rsync.deb
اگه busybox یا budybox-static رو نصب کردید، اول باید busybox رو اجرا کنید تا اون از ar خودش استفاده کنه. اینجوری:
busybox ar x rsync.deb
الان باید سه تا فایل ایجاد شده باشه. یه فایل متنی debian-binary که احتمالا داخل 2.0 نوشته شده، و دوتا فایل فشرده tar به اسمهای control.tar.xz و data.tar.xz
اون فایلهای tar، با xz فشرده شدند. میتونید با دستور tar بازشون کنید اینجوری:
tar -xvf data.tar.xz
tar -xvf control.tar.xz
مهمه که اون f-، قبل از اسم فایل بیاد. میتونید آپشن J- رو هم به دستور بدید تا اول با xz استخراج بشه ولی از اونجایی که با f- فایل رو مشخص کردید، خود tar متوجه این موضوع میشه و به J- نیازی نیست. بدید هم مشکلی پیش نمیاد.
اگه از طریق پایپ اطلاعات رو به tar میدادید، لازم بود قالب فشردهسازی رو مشخص میکردید و J- رو میدادید.
اون v- برای این هست که tar بگه داره چیکار میکنه. اگه ندید هم مشکلی پیش نمیاد.
data.tar.xz شامل فایلهای اصلی برنامه هست که توی دایرکتوریهای سیستمی قرار میگیره.
control.tar.xz شامل اسکریپتهای preinstall، postinstall، prerm، postrm، هش md5 فایلهای اصلی، توضیحات بسته، trigger ها و چیزهایی هست که موقع نصب، حذف، ارتقا و ... بسته باید اجرا یا به کاربر نشون داده بشن.
ممکنه یه بسته همه اونها رو نداشته باشه. ولی فایل md5sums و control همیشه وجود دارند. هر دو فایل متنی هستند. md5sums شامل هش md5 فایلهای اصلی هست، control شامل توضیحات بسته، وابستگیها و اطلاعاتی هست که با apt show میتونید درباره یه بسته ببینید.
با دستور dpkg-deb هم میتونید فایلهای deb رو استخراج کنید. البته اینجوری فقط فایلهایی که قراره توی دایرکتوریهای سیستمی ذخیره بشن، نمایش داده میشن.
اینجوری میتونید با dpkg-deb، یه فایل deb رو باز کنید:
dpkg-deb -vx rsync.deb rsync-unpack
توی دستور بالا, v- مثل v- توی tar میمونه.
x- باعث میشه که dpkg-deb، بسته deb رو استخراج کنه.
rsync.deb اسم بسته deb هست.
rsync-unpack هم دایرکتوری هست که میخواهیم فایلهای استخراج شده داخلش قرار بگیره.
میتونید به جای دادن آپشنهای x- و v- به dpkg-deb، فقط آپشن X- رو بهش بدید. معادل هم هستند.
خود dpkg هم متوجه x- و X- میشه و اگه مثل dpkg-deb از اون آپشنها همراه dpkg استفاده کنید، dpkg-deb رو برای باز کردن بستههای deb اجرا میکنه. ولی حواستون باشه dpkg متوجه v- همراه x- نمیشه.