dpkg-deb(1) dpkg suite dpkg-deb(1)

dpkg-deb - ابزار دستکاری و مدیریت بایگانی بسته‌های دبیان (.deb)

dpkg-deb [گزینه...] دستور

دستور dpkg-deb بایگانی‌های دبیان را بسته‌بندی، بازگشایی و اطلاعات مربوط به آن‌ها را ارائه می‌کند.

برای نصب یا حذف بسته‌ها از سیستم خود از دستور dpkg استفاده کنید.

همچنین می‌توانید dpkg-deb را با فراخوانی dpkg به همراه هر گزینه‌ای که می‌خواهید به dpkg-deb پاس داده شود اجرا کنید. dpkg تشخیص می‌دهد که شما قصد اجرای dpkg-deb را داشته‌اید و آن را برای شما اجرا خواهد کرد.

برای اکثر دستوراتی که آرگومان ورودی بایگانی می‌گیرند، در صورتی که نام بایگانی به عنوان یک نویسه خط تیره تکی («-») داده شود، بایگانی را می‌توان از ورودی استاندارد خواند؛ در غیر این صورت، عدم پشتیبانی در بخش توضیحات دستور مربوطه مستند خواهد شد.

یک بایگانی دبیان از درخت فایل‌سیستم ذخیره‌شده در binary-directory ایجاد می‌کند. پوشه binary-directory باید دارای یک زیردایرکتوری به نام DEBIAN باشد که حاوی فایل‌های فراداده (متادیتا) بسته مانند فایل کنترل (control) بسته باینری است. این پوشه در بایگانی فایل‌سیستم بسته باینری ظاهر نخواهد شد، بلکه در عوض فایل‌های درون آن در ناحیه اطلاعات کنترلی بسته باینری قرار خواهند گرفت.

مگر اینکه گزینه --no-check را مشخص کنید، dpkg-deb فایل DEBIAN/control را خوانده و تجزیه می‌کند. این فایل را برای خطاهای نحوی و سایر مشکلات بررسی می‌کند و نام بسته باینری در حال ساخت را نمایش می‌دهد. همچنین dpkg-deb مجوزهای دسترسی اسکریپت‌های نگه‌دارنده (maintainer scripts) و سایر فایل‌های موجود در دایرکتوری متادیتای بسته DEBIAN را بررسی خواهد کرد.

اگر هیچ archive مشخص نشده باشد، dpkg-deb بسته را در فایل binary-directory.deb می‌نویسد.

اگر بایگانی‌ای که قرار است ایجاد شود از قبل وجود داشته باشد، بازنویسی خواهد شد.

اگر آرگومان دوم یک دایرکتوری باشد، dpkg-deb در فایل directory/package_version_arch.deb می‌نویسد. هنگامی که یک دایرکتوری مقصد به‌جای فایل مشخص شده باشد، گزینه --no-check نمی‌تواند استفاده شود (زیرا dpkg-deb برای تعیین نام فایل مورد استفاده، باید فایل کنترل بسته را خوانده و تجزیه کند).

اطلاعاتی درباره بایگانی یک بسته باینری ارائه می‌دهد.

اگر هیچ control-file-name مشخص نشده باشد، خلاصه‌ای از محتویات بسته و همچنین فایل کنترل آن را چاپ می‌کند.

در صورت مشخص شدن هر control-file-name، دستور dpkg-deb آن‌ها را به ترتیبی که مشخص شده‌اند چاپ می‌کند؛ اگر هر یک از مؤلفه‌ها وجود نداشته باشند، یک پیام خطا در خروجی خطای استاندارد (stderr) برای هر کدام چاپ کرده و با وضعیت ۲ خارج می‌شود.

اطلاعات مربوط به بایگانی یک بسته باینری را در قالب مشخص‌شده با آرگومان --showformat ارائه می‌دهد. قالب پیش‌فرض، نام و نسخه بسته را در یک خط و با فاصله تب (tabulator) از یکدیگر نمایش می‌دهد.
اطلاعات فایل کنترل را از بایگانی یک بسته باینری استخراج می‌کند.

اگر هیچ control-field-name مشخص نشده باشد، کل فایل کنترل را چاپ می‌کند.

در صورت مشخص شدن هر فیلد، dpkg-deb محتویات آن‌ها را به ترتیبی که در فایل کنترل ظاهر می‌شوند چاپ می‌کند. اگر بیش از یک control-field-name مشخص شده باشد، dpkg-deb قبل از هر کدام نام فیلد آن را (به همراه یک دو نقطه و یک فاصله) درج می‌کند.

برای فیلدهای درخواست‌شده‌ای که پیدا نشوند هیچ خطایی گزارش نمی‌شود.

محتویات بخش بایگانی درخت فایل‌سیستم در بایگانی بسته را فهرست می‌کند. این فهرست در حال حاضر به فرمت خروجی تفصیلی دستور tar تولید می‌شود.
درخت فایل‌سیستم را از یک بایگانی بسته در دایرکتوری مشخص‌شده استخراج می‌کند.

توجه داشته باشید که استخراج یک بسته در دایرکتوری ریشه (root) منجر به نصب صحیح آن نخواهد شد! برای نصب بسته‌ها از دستور dpkg استفاده کنید.

دایرکتوری directory (اما نه والدین آن) در صورت لزوم ایجاد خواهد شد و مجوزهای آن متناسب با محتویات بسته تغییر می‌یابد.

مشابه گزینه --extract (-x) همراه با --verbose (-v) است که هم‌زمان با استخراج فایل‌ها، فهرستی از آن‌ها را چاپ می‌کند.
درخت فایل‌سیستم را از بایگانی بسته در یک دایرکتوری مشخص‌شده، و فایل‌های فراداده بسته را در یک زیردایرکتوری به نام DEBIAN در دایرکتوری مشخص‌شده استخراج می‌کند (از زمان dpkg 1.16.1).

دایرکتوری مقصد (اما نه والدین آن) در صورت لزوم ایجاد خواهد شد.

بایگانی ورودی در حال حاضر به صورت متوالی پردازش نمی‌شود، بنابراین خواندن آن از ورودی استاندارد («-») پشتیبانی نمی‌شود.

داده‌های کنترلی را از یک بسته باینری استخراج کرده و به فرمت tar به خروجی استاندارد ارسال می‌کند (از زمان dpkg 1.17.14). همراه با tar(1) می‌توان از این گزینه برای استخراج یک فایل کنترلی خاص از بایگانی بسته استفاده کرد. بایگانی ورودی همیشه به صورت متوالی پردازش خواهد شد.
داده‌های درخت فایل‌سیستم را از یک بسته باینری استخراج کرده و به فرمت tar به خروجی استاندارد ارسال می‌کند. همراه با tar(1) می‌توان از این گزینه برای استخراج یک فایل خاص از بایگانی بسته استفاده کرد. بایگانی ورودی همیشه به صورت متوالی پردازش خواهد شد.
فایل‌های فراداده بسته را از یک بایگانی بسته در دایرکتوری مشخص‌شده استخراج می‌کند.

اگر دایرکتوری مشخص نشده باشد، زیردایرکتوری DEBIAN در دایرکتوری فعلی استفاده می‌شود.

دایرکتوری مقصد (اما نه والدین آن) در صورت لزوم ایجاد خواهد شد.

-?, --help
پیام راهنمای نحوه استفاده را نمایش داده و خارج می‌شود.
اطلاعات نسخه را نمایش داده و خارج می‌شود.

این گزینه برای تعیین قالب خروجی تولیدشده توسط --show به کار می‌رود. این قالب رشته‌ای است که برای هر بسته فهرست‌شده در خروجی نمایش می‌یابد.

این رشته می‌تواند با استفاده از فرمت “${field-name}” به هر فیلد وضعیتی اشاره کند؛ فهرستی از فیلدهای معتبر را می‌توان به آسانی با اجرای -I روی همان بسته تولید کرد. توضیح کاملی از گزینه‌های قالب‌بندی (شامل دنباله‌های گریز و فاصله‌بندی فیلدها) را می‌توان در توضیحات گزینه --showformat در صفحه راهنمای dpkg-query(1) یافت.

مقدار پیش‌فرض برای این فیلد “${Package}\t${Version}\n” است.

سطح فشرده‌سازی مورد استفاده در بخش پشتیبان فشرده‌ساز را هنگام ساخت بسته مشخص می‌کند (پیش‌فرض برای gzip برابر با ۹، برای xz برابر با ۶ و برای zstd برابر با ۳ است؛ گزینه طولانی از زمان dpkg 1.22.9 اضافه شده است). مقادیر پذیرفته‌شده مختص هر فشرده‌ساز است. برای gzip از 0 تا 9 که 0 به معنای فشرده‌ساز none (بدون فشرده‌سازی) نگاشت می‌شود. برای xz از 0 تا 9. برای zstd از 0 تا 22، که سطوح 20 تا 22 حالت فوق‌العاده (ultra) آن را فعال می‌کنند. پیش از نسخه dpkg 1.16.2 سطح 0 برای تمام فشرده‌سازها معادل بدون فشرده‌سازی (none) بود.
راهبرد فشرده‌سازی مورد استفاده در بخش پشتیبان فشرده‌ساز را هنگام ساخت بسته مشخص می‌کند (از زمان dpkg 1.16.2، گزینه طولانی از زمان dpkg 1.22.9). مقادیر مجاز عبارتند از: none (از زمان dpkg 1.16.4)، filtered، huffman، rle و fixed برای gzip (از زمان dpkg 1.17.0) و extreme برای xz.
نوع فشرده‌سازی مورد استفاده هنگام ساخت بسته را مشخص می‌کند (گزینه طولانی از زمان dpkg 1.22.9). مقادیر مجاز عبارتند از: gzip، xz (از زمان dpkg 1.15.6)، zstd (از زمان dpkg 1.21.18) و none (پیش‌فرض xz است).
--[no-]uniform-compression
مشخص می‌کند که پارامترهای فشرده‌سازی یکسان برای همه اعضای بایگانی (یعنی control.tar و data.tar؛ از زمان dpkg 1.17.6) استفاده شود. در غیر این صورت فقط عضو data.tar از آن پارامترها استفاده خواهد کرد. تنها انواع فشرده‌سازی پشتیبانی‌شده که مجاز به استفاده یکنواخت هستند عبارتند از: none، gzip، xz و zstd. گزینه --no-uniform-compression فشرده‌سازی یکنواخت را غیرفعال می‌کند (از زمان dpkg 1.19.0). فشرده‌سازی یکنواخت حالت پیش‌فرض است (از زمان dpkg 1.19.0).
حداکثر تعداد رشته‌های (threads) مجاز را برای فشرده‌سازهایی که از عملیات چندرشته‌ای پشتیبانی می‌کنند، تعیین می‌کند (از زمان dpkg 1.21.9).
مالک (owner) و گروه (group) را برای هر ورودی در داده‌های درخت فایل‌سیستم، روی کاربر ریشه (root) با شناسه 0 تنظیم می‌کند (از زمان dpkg 1.19.0).

توجه: این گزینه می‌تواند برای ساخت‌های بدون دسترسی ریشه (rootless) مفید باشد (به rootless-builds.txt مراجعه کنید)، اما هنگامی که ورودی‌ها مالک یا گروهی غیر از root دارند نباید استفاده شود. پشتیبانی از این موارد بعداً در قالب یک مانیفست فراداده اضافه خواهد شد.

نسخه قالب بایگانی مورد استفاده در هنگام ساخت را تنظیم می‌کند (از زمان dpkg 1.17.0). مقادیر مجاز عبارتند از 2.0 برای قالب جدید، و 0.939000 برای قالب قدیمی (پیش‌فرض 2.0 است).

قالب قدیمی بایگانی به راحتی توسط ابزارهای غیر دبیان قابل تجزیه نیست و اکنون منسوخ شده است؛ تنها کاربرد آن در ساخت بسته‌هایی است که قرار است توسط نسخه‌های dpkg قدیمی‌تر از 0.93.76 (سپتامبر ۱۹۹۵) تجزیه شوند، که صرفاً به عنوان i386 a.out منتشر شده بود.

بررسی‌های معمول dpkg-deb --build روی محتویات پیشنهادی یک بایگانی را مهار و غیرفعال می‌کند. از این طریق می‌توانید هر بایگانی دلخواهی را، فارغ از این‌که چقدر خراب باشد، ایجاد کنید.

این گزینه از زمان dpkg 1.22.12 پشتیبانی می‌شود.

این نام مستعاری برای --no-check است.
خروجی پرجزئیات و تفصیلی را فعال می‌کند (از زمان dpkg 1.16.1). این گزینه در حال حاضر فقط روی --extract تأثیر می‌گذارد و رفتار آن را شبیه به --vextract می‌سازد.
خروجی اشکال‌زدایی (دیباگ) را فعال می‌کند. این مورد کاربرد چندانی ندارد.

0
عملیات درخواست‌شده با موفقیت انجام شد.
2
خطای مرگبار یا غیرقابل جبران ناشی از استفاده نادرست در خط فرمان یا تعامل با سیستم، مانند دسترسی به پایگاه‌داده، تخصیص حافظه و غیره.

حداکثر تعداد رشته‌های مجاز را برای فشرده‌سازهایی که از عملیات چندرشته‌ای پشتیبانی می‌کنند تعیین می‌کند (از زمان dpkg 1.21.9).

گزینه --threads-max این مقدار را بازنویسی (override) می‌کند.

نوع فشرده‌ساز مورد استفاده را تعیین می‌کند (از زمان dpkg 1.21.10).

گزینه -Z این مقدار را بازنویسی می‌کند.

سطح فشرده‌سازی مورد استفاده را تعیین می‌کند (از زمان dpkg 1.21.10).

گزینه -z این مقدار را بازنویسی می‌کند.

حالت رنگ را تنظیم می‌کند (از زمان dpkg 1.18.5). مقادیر پذیرفته‌شده در حال حاضر عبارتند از: auto (پیش‌فرض)، always و never.
در صورت تنظیم، برای تصمیم‌گیری در مورد فعال‌سازی پشتیبانی از زبان بومی (Native Language Support)، که به عنوان پشتیبانی از بین‌المللی‌سازی (یا i18n) نیز شناخته می‌شود، استفاده خواهد شد (از زمان dpkg 1.22.7). مقادیر پذیرفته‌شده عبارتند از: 0 و 1 (پیش‌فرض).
نام مسیر را برای فایل passwd سیستم تنظیم می‌کند. این مسیر نسبت به دایرکتوری --root است. مقدار پیش‌فرض /etc/passwd است.

از زمان dpkg 1.22.16.

نام مسیر را برای فایل group سیستم تنظیم می‌کند. این مسیر نسبت به دایرکتوری --root است. مقدار پیش‌فرض /etc/group است.

از زمان dpkg 1.22.16.

در صورت تنظیم، dpkg-deb از آن به عنوان دایرکتوری برای ایجاد فایل‌ها و دایرکتوری‌های موقت استفاده خواهد کرد.
در صورت تنظیم، به عنوان برچسب زمانی (به صورت ثانیه از زمان مبدا یا epoch) در نگهدارنده ar(5) مربوط به deb(5) استفاده شده و برای مهار و تثبیت mtime در ورودی‌های فایل tar(5) به کار می‌رود.

از زمان dpkg 1.18.8.

سعی نکنید تنها از dpkg-deb برای نصب نرم‌افزار استفاده کنید! شما باید خود dpkg را استفاده کنید تا مطمئن شوید تمام فایل‌ها به درستی در جای خود قرار گرفته، اسکریپت‌های بسته اجرا شده و وضعیت و محتویات آن ثبت شده‌اند.

بررسی بایگانی بسته‌های غیرقابل اعتماد یا استخراج آن‌ها در دایرکتوری‌های موقت آماده‌سازی باید به عنوان یک مرز امنیتی در نظر گرفته شود و هرگونه نقض آن مرز ناشی از این عملیات باید به عنوان یک آسیب‌پذیری امنیتی تلقی گردد. اما کار با بایگانی بسته‌های غیرقابل اعتماد نباید ساده انگاشته شود، چرا که سطح حمله علاوه بر خود قالب‌های بایگانی و فایل‌های کنترل، شامل هر کتابخانه فشرده‌سازی پشتیبانی‌شده نیز می‌شود. انجام این عملیات روی داده‌های غیرقابل اعتماد با کاربر ریشه (root) به شدت منع می‌شود.

ساخت بایگانی بسته‌ها تنها باید بر روی داده‌های قابل اعتماد انجام شود.

دستور dpkg-deb -I package1.deb package2.deb رفتار نادرستی دارد.

هیچ احراز اصالتی روی فایل‌های .deb انجام نمی‌شود؛ در واقع، حتی یک چکسام (checksum) مستقیم نیز وجود ندارد. (ابزارهای سطح بالاتر مانند APT از احراز اصالت بسته‌های .deb دریافت شده از یک مخزن مشخص پشتیبانی می‌کنند، و امروزه اکثر بسته‌ها یک فایل کنترل md5sum تولیدشده توسط debian/rules ارائه می‌دهند؛ هرچند این موضوع مستقیماً توسط ابزارهای سطح پایین‌تر پشتیبانی نمی‌شود.)

/usr/share/doc/dpkg/spec/rootless-builds.txt, deb(5), deb-control(5), dpkg(1), dselect(1).

2026-03-06 1.23.7-dirty