dpkg-buildpackage(1) dpkg suite dpkg-buildpackage(1)

dpkg-buildpackage - ساخت بسته‌های دودویی یا منبع از روی سورس‌ها

dpkg-buildpackage [گزینه...] [--] [filename.dsc|directory]

دستور dpkg-buildpackage برنامه‌ای است که فرآیند ساخت یک بستهٔ دبیان را خودکارسازی می‌کند.

آرگومان‌های filename.dsc و directory از dpkg نسخه 1.22.7 پشتیبانی می‌شوند. معناشناسی آن‌ها آزمایشی است.

این فرآیند شامل مراحل زیر است:

1.
قلاب preinit را قبل از خواندن هرگونه فایل منبع اجرا می‌کند. اگر یک فایل .dsc مشخص شده باشد، آن را مجدداً از حالت فشرده استخراج کرده و به دایرکتوری آن تغییر مسیر می‌دهد، اگر یک directory مشخص شده باشد به آن دایرکتوری تغییر مسیر می‌دهد، در غیر این صورت انتظار دارد دایرکتوری جاری حاوی درخت منبع باشد. محیط ساخت را با تنظیم متغیرهای محیطی گوناگون آماده می‌کند (به محیط (ENVIRONMENT) مراجعه کنید)، قلاب init را اجرا کرده و dpkg-source --before-build را فرامی‌خواند (مگر آن‌که از -T یا --target استفاده شده باشد).
2.
بررسی می‌کند که وابستگی‌های ساخت و تداخل‌های ساخت برآورده شده باشند (مگر این‌که -d یا --no-check-builddeps مشخص شده باشد).
3.
اگر یک یا چند هدف مشخص با گزینهٔ -T یا --target انتخاب شده باشد، آن اهداف را فراخوانی کرده و در همین‌جا متوقف می‌شود. در غیر این صورت، قلاب preclean را اجرا کرده و fakeroot debian/rules clean را برای پاک‌سازی درخت ساخت فرامی‌خواند (مگر آن‌که -nc یا --no-pre-clean مشخص شده باشد).
4.
قلاب source را اجرا کرده و dpkg-source -b را برای تولید بستهٔ منبع فرامی‌خواند (اگر ساختی از نوع source با گزینهٔ --build یا گزینه‌های معادل آن درخواست شده باشد، و اگر هیچ فایل .dsc مشخص نشده باشد).
5.
قلاب build را اجرا کرده و دستور debian/rules build-target را فرامی‌خواند، سپس قلاب binary و در پی آن fakeroot debian/rules binary-target را اجرا می‌کند (مگر آن‌که ساختی تنها از نوع منبع با --build=source یا گزینه‌های معادل آن درخواست شده باشد). توجه داشته باشید که build-target و binary-target یا برابر build و binary هستند (حالت پیش‌فرض، یا در صورتی که ساختی برای any و all با گزینهٔ --build یا گزینه‌های معادل درخواست شده باشد)، یا برابر build-arch و binary-arch هستند (اگر ساختی برای any و نه all با گزینهٔ --build یا گزینه‌های معادل درخواست شده باشد)، یا برابر build-indep و binary-indep خواهند بود (اگر ساختی برای all و نه any با گزینهٔ --build یا گزینه‌های معادل درخواست شده باشد).
6.
قلاب buildinfo را اجرا کرده و dpkg-genbuildinfo را برای تولید یک فایل .buildinfo فرامی‌خواند. چندین گزینه از dpkg-buildpackage به dpkg-genbuildinfo ارسال می‌شوند. اگر یک فایل .dsc مشخص شده باشد، در فایل .buildinfo تولیدشده به آن ارجاع داده خواهد شد، زیرا می‌توانیم اصالت و منشأ درخت منبع را احراز کنیم.
7.
قلاب changes را اجرا کرده و dpkg-genchanges را برای تولید یک فایل .changes فرامی‌خواند. نام فایل .changes به نوع ساخت بستگی دارد و تا حد لزوم مشخص خواهد بود اما نه بیشتر؛ نام به این صورت خواهد بود:
برای ساختی که شامل any باشد
در غیر این صورت، برای ساختی که شامل all باشد
در غیر این صورت، برای ساختی که شامل source باشد

بسیاری از گزینه‌های dpkg-buildpackage به dpkg-genchanges ارسال می‌شوند.

8.
قلاب postclean را اجرا می‌کند و اگر -tc یا --post-clean مشخص شده باشد، مجدداً fakeroot debian/rules clean را فرامی‌خواند.
9.
دستور dpkg-source --after-build را فرامی‌خواند.
10.
قلاب check را اجرا کرده و یک بررسی‌کنندهٔ بسته را برای فایل .changes فرامی‌خواند (اگر دستوری در DEB_CHECK_COMMAND یا با گزینهٔ --check-command مشخص شده باشد).
11.
قلاب sign را اجرا کرده و با استفاده از پشتیبان OpenPGP (تا زمانی که یک ساخت UNRELEASED نباشد، یا --no-sign مشخص نشده باشد) فایل .dsc (در صورت وجود، مگر این‌که -us یا --unsigned-source مشخص شده باشد)، فایل .buildinfo (مگر این‌که -ui، --unsigned-buildinfo، -uc یا --unsigned-changes مشخص شده باشد) و فایل .changes (مگر این‌که -uc یا --unsigned-changes مشخص شده باشد) را امضا می‌کند.
12.
اگر یک فایل .dsc مشخص شده باشد، دایرکتوری منبع استخراج‌شده را حذف می‌کند.
13.
قلاب done را اجرا می‌کند.

تمام گزینه‌های طولانی را می‌توان هم در خط فرمان و هم در فایل‌های پیکربندی سیستمی و کاربری dpkg-buildpackage مشخص کرد. هر خط در فایل پیکربندی یا یک گزینه است (دقیقاً همانند گزینهٔ خط فرمان اما بدون خط تیره‌های ابتدایی) یا یک یادداشت (اگر با ‘#’ شروع شود).

نوع ساخت (type) را از میان فهرستی از مؤلفه‌ها که با کاما جدا شده‌اند، مشخص می‌کند (از dpkg نسخه 1.18.5). همهٔ مؤلفه‌های مشخص‌شده با هم ترکیب می‌شوند تا نوع ساخت واحد برای استفاده انتخاب شود، که متضمن یک اجرای ساخت واحد با تولید یک فایل .changes واحد است. به dpkg-genchanges ارسال می‌شود.

مقادیر مجاز عبارتند از:

بستهٔ منبع را می‌سازد.

توجه: هنگام استفاده از این مقدار به صورت مستقل، و اگر آنچه می‌خواهید صرفاً ساخت (مجدد) بستهٔ منبع از یک درخت منبع تمیز است، استفادهٔ مستقیم از dpkg-source همواره گزینهٔ بهتری است زیرا نیازی به نصب هیچ‌گونه وابستگی ساختی ندارد، در حالی که در غیر این صورت برای فراخوانی هدف clean به آن‌ها نیاز خواهد بود.

بسته‌های دودویی وابسته به معماری را می‌سازد.
بسته‌های دودویی مستقل از معماری را می‌سازد.
بسته‌های دودویی وابسته و مستقل از معماری را می‌سازد. این نام مستعاری برای any,all است.
همه‌چیز را می‌سازد. این نام مستعاری برای source,any,all بوده و با حالت پیش‌فرض در زمانی که هیچ گزینهٔ ساختی مشخص نشده باشد، یکسان است.
معادل با --build=source,all (از dpkg نسخه 1.17.11).
معادل با --build=source,any (از dpkg نسخه 1.17.11).
معادل با --build=binary یا --build=any,all.
معادل با --build=any.
معادل با --build=all.
معادل با --build=source.
معادل با --build=full، --build=source,binary یا --build=source,any,all (از dpkg نسخه 1.15.8).
دستور debian/rules target را به ازای هر هدف مشخص‌شده، پس از آماده‌سازی محیط ساخت (به جز فراخوانی dpkg-source --before-build)، یک‌بار فرامی‌خواند و فرآیند ساخت بسته را در همین‌جا متوقف می‌سازد (از dpkg نسخه 1.15.0، گزینهٔ طولانی از نسخه 1.18.8، پشتیبانی از چند هدف از نسخه 1.18.16). اگر --as-root نیز داده شده باشد، دستور به عنوان کاربر ریشه اجرا می‌شود (به --root-command مراجعه کنید). توجه داشته باشید که اهداف شناخته‌شده‌ای که لازم است به عنوان ریشه اجرا شوند نیازی به این گزینه ندارند (یعنی اهداف clean، binary، binary-arch و binary-indep).
تنها همراه با --target معنادار است (از dpkg نسخه 1.15.0). الزام می‌کند که هدف با اختیارات کاربر ریشه اجرا شود.
بدون تغییر به dpkg-genchanges منتقل می‌شود. صفحهٔ راهنمای آن را ببینید.
به عنوان -m به dpkg-genchanges ارسال می‌شود (از dpkg نسخه 1.21.10). صفحهٔ راهنمای آن را ببینید.
به عنوان -e به dpkg-genchanges ارسال می‌شود (از dpkg نسخه 1.21.10). صفحهٔ راهنمای آن را ببینید.
معماری دبیانی را که برای آن بسته می‌سازیم مشخص می‌کند (گزینهٔ طولانی از dpkg نسخه 1.17.17). معماری دستگاهی که روی آن بسته را می‌سازیم به‌طور خودکار تعیین می‌شود و برای دستگاه میزبان نیز پیش‌فرض است.
نوع سیستم گنو را که برای آن بسته می‌سازیم مشخص می‌کند (گزینهٔ طولانی از dpkg نسخه 1.17.17). می‌توان از آن به جای --host-arch یا به عنوان مکمل برای بازنویسی نوع پیش‌فرض سیستم گنو معماری دبیانِ میزبان استفاده کرد.
معماری دبیانی را که باینری‌های ساخته‌شده برای آن هدف‌گذاری می‌شوند مشخص می‌کند (از dpkg نسخه 1.17.17). مقدار پیش‌فرض، دستگاه میزبان است.
نوع سیستم گنو را که باینری‌های ساخته‌شده برای آن هدف‌گذاری می‌شوند مشخص می‌کند (از dpkg نسخه 1.17.17). می‌توان از آن به جای --target-arch یا به عنوان مکمل برای بازنویسی نوع پیش‌فرض سیستم گنو معماری دبیانِ هدف استفاده کرد.
نمایه(ها)ی ساختی که می‌سازیم را به صورت یک فهرست جداشده با کاما مشخص می‌کند (از dpkg نسخه 1.17.2، گزینهٔ طولانی از نسخه 1.18.8). رفتار پیش‌فرض، ساخت بدون هیچ نمایهٔ خاصی است. همچنین آن‌ها را (به صورت فهرستی جداشده با فاصله) در متغیر محیطی DEB_BUILD_PROFILES تنظیم می‌کند که به عنوان مثال به فایل‌های debian/rules اجازه می‌دهد از این اطلاعات برای ساخت‌های مشروط استفاده کنند.
تعداد کارهایی که مجازند هم‌زمان اجرا شوند را مشخص می‌کند (از dpkg نسخه 1.14.7، گزینهٔ طولانی از نسخه 1.18.8). اگر auto مشخص شده باشد، تعداد کارها مطابق با تعداد پردازنده‌های برخط خواهد بود (از dpkg نسخه 1.17.10)، و اگر jobs مشخص نشده باشد، تعداد نامحدود خواهد بود. رفتار پیش‌فرض auto است (از dpkg نسخه 1.18.11) در حالت غیرتحمیلی (از dpkg نسخه 1.21.10)، و به این ترتیب همواره استفاده از آن برای هر بسته‌ای، از جمله بسته‌هایی که با ساخت موازی سازگار نیستند، امن‌تر است. تنظیم تعداد کارها روی 1 اجرای ترتیبی (سریال) را بازیابی می‌کند.

گزینهٔ parallel=jobs یا parallel را به متغیر محیطی DEB_BUILD_OPTIONS اضافه می‌کند که به فایل‌های debian/rules اجازه می‌دهد بنا به تمایل خود از این اطلاعات برای اهداف خود استفاده نمایند. مقدار jobs گزینهٔ parallel=jobs یا parallel را در متغیر محیطی DEB_BUILD_OPTIONS بازنویسی می‌کند. توجه داشته باشید که مقدار auto با تعداد واقعی پردازنده‌های در حال حاضر فعال جایگزین می‌شود، و بنابراین به هیچ فرآیند فرزندی انتشار نخواهد یافت. اگر تعداد پردازنده‌های برخط قابل تشخیص نباشد، کد به استفاده از اجرای ترتیبی پس‌گرد می‌کند (از dpkg نسخه 1.18.15)، هرچند این اتفاق تنها باید در سیستم‌های نامتعارف و پشتیبانی‌نشده رخ دهد.

این گزینه (از dpkg نسخه 1.18.2، گزینهٔ طولانی از نسخه 1.18.8) معادل -j در بالا است.

از آنجا که رفتار -j در dpkg نسخه 1.21.10 به حالت اختیاری (opt-in) تغییر یافت، در صورت نیاز به تضمین معناشناسی در سری‌های مختلف انتشار dpkg می‌توانید به جای آن از این گزینه استفاده کنید.

این گزینه (از dpkg نسخه 1.21.10) معادل گزینهٔ --jobs است با این تفاوت که با افزودن گزینهٔ make -j همراه با تعداد محاسبه‌شدهٔ کارهای موازی به متغیر محیطی MAKEFLAGS، حالت موازی تحمیلی را فعال می‌سازد.

این امر باید باعث شود تمامی فراخوانی‌های بعدی make این گزینه را به ارث ببرند، و بدین ترتیب تنظیمات موازی را بدون توجه به پشتیبانی فرآیند بسته‌بندی (و احتمالاً سیستم ساخت بالادست در صورتی که از make(1) استفاده کند) از ساخت موازی به آن تحمیل نماید، که ممکن است به شکست در ساخت بینجامد.

توجه: هر Makefile که سازگار با اجرای موازی نباشد باید دارای اشکال تلقی شود. این فایل‌ها یا باید برای ساخت موازی ایمن شوند، یا با استفاده از هدف make(1) .NOTPARALLEL به عنوان ناامن علامت‌گذاری گردند.

وابستگی‌های ساخت و تداخل‌های ساخت را بررسی می‌کند؛ در صورت برآورده نشدن فرآیند را لغو می‌نماید (گزینهٔ طولانی از dpkg نسخه 1.18.8). این رفتار پیش‌فرض است.
وابستگی‌های ساخت و تداخل‌های ساخت را بررسی نمی‌کند (گزینهٔ طولانی از dpkg نسخه 1.18.8).
وابستگی‌های ساخت و تداخل‌های ساخت توکار را بررسی نمی‌کند (از dpkg نسخه 1.18.2). این‌ها وابستگی‌های ساخت ضمنی مختص توزیع هستند که معمولاً در یک محیط ساخت الزامی می‌باشند، یعنی مجموعه بستهٔ موسوم به Build-Essential.
فیلد Rules-Requires-Root را نادیده می‌گیرد و به مقدار پیش‌فرض قدیمی آن یعنی binary-targets پس‌گرد می‌کند (از dpkg نسخه 1.19.1).
درخت منبع را قبل از ساخت پاک‌سازی نمی‌کند (گزینهٔ طولانی از dpkg نسخه 1.18.8). اگر هیچ گزینهٔ دیگری از میان -F، -g، -G، -B، -A یا -S انتخاب نشده باشد، بر -b دلالت دارد. همراه با -S بر -d دلالت دارد (از dpkg نسخه 1.18.0).
درخت منبع را قبل از ساخت پاک‌سازی می‌کند (از dpkg نسخه 1.18.8). این رفتار پیش‌فرض است.
درخت منبع را (با استفاده از gain-root-command debian/rules clean) پس از ساخته شدن بسته پاک‌سازی می‌کند (گزینهٔ طولانی از dpkg نسخه 1.18.8).
درخت منبع را پس از ساخته شدن بسته پاک‌سازی نمی‌کند (از dpkg نسخه 1.19.1). این رفتار پیش‌فرض است.
محیط ساخت را پالایش (پاک‌سازی) می‌کند (از dpkg نسخه 1.20.0). این کار متغیرهای محیطی، umask و سایر ویژگی‌های فرآیند را که ممکن است اثر نامطلوبی بر ساخت بسته‌ها بگذارند، بازنشانی یا حذف می‌کند. از آنجا که نقطهٔ ورود رسمی برای ساخت بسته‌ها debian/rules است، بسته‌ها نمی‌توانند به برقرار بودن این تنظیمات اتکا کنند و بنابراین باید حتی در صورت عدم حضور آن‌ها نیز به درستی کار کنند. این‌که چه مواردی پالایش شوند مختص توزیع (تأمین‌کننده) است.
هنگامی که dpkg-buildpackage نیاز دارد بخشی از فرآیند ساخت را به عنوان کاربر ریشه اجرا کند، اگر gain-root-command مشخص شده باشد، پیشوند دستوری را که اجرا می‌کند با آن قرار می‌دهد (گزینهٔ طولانی از dpkg نسخه 1.18.8). در غیر این صورت، چنانچه هیچ‌کدام مشخص نشده باشد، در صورت موجود بودن دستور، به‌طور پیش‌فرض از fakeroot استفاده خواهد شد. gain-root-command باید با نام برنامه‌ای در PATH آغاز شود و نام دستور واقعی برای اجرا و آرگومان‌هایی که باید بپذیرد را به عنوان آرگومان دریافت خواهد کرد. gain-root-command می‌تواند شامل پارامترها باشد (باید با فاصله از هم جدا شوند) اما نباید نویسه‌های ویژهٔ پوسته (metacharacters) داشته باشد. gain-root-command معمولاً می‌تواند fakeroot، sudo، super یا really باشد. دستور su مناسب نیست، زیرا تنها می‌تواند پوستهٔ کاربر را با -c فرابخواند به جای این‌که آرگومان‌ها را به صورت جداگانه به دستوری که باید اجرا شود ارسال کند.
ساخت یک بستهٔ دبیان معمولاً مستلزم فراخوانی debian/rules به عنوان دستوری با چندین پارامتر استاندارد است (از dpkg نسخه 1.14.17، گزینهٔ طولانی از نسخه 1.18.8). با این گزینه امکان استفاده از فراخوانی برنامه‌ای دیگر برای ساخت بسته وجود دارد (می‌تواند شامل پارامترهای جداشده با فاصله باشد). همچنین می‌توان از آن برای اجرای فایل قوانین استاندارد با یک برنامهٔ make دیگر استفاده کرد (برای نمونه با استفاده از /usr/local/bin/make -f debian/rules به عنوان rules-file).
دستور مورد استفاده برای بررسی خود فایل .changes و هر دست‌ساختهٔ ساخته‌شدهٔ ارجاع داده‌شده در آن فایل (از dpkg نسخه 1.17.6). این دستور باید مسیر فایل .changes را به عنوان یک آرگومان دریافت کند. این دستور معمولاً lintian خواهد بود.
گزینهٔ opt را به check-command مشخص‌شده با DEB_CHECK_COMMAND یا --check-command ارسال می‌کند (از dpkg نسخه 1.17.6). می‌تواند چندین بار استفاده شود.
کد پوستهٔ مشخص‌شدهٔ hook-command را به عنوان قلاب hook-name تنظیم می‌کند، که در زمان‌های مشخص‌شده در مراحل اجرا به اجرا درمی‌آید (از dpkg نسخه 1.17.6). قلاب‌ها همواره اجرا خواهند شد حتی اگر اقدام بعدی انجام نشود (به جز قلاب binary). تمام قلاب‌ها در دایرکتوری منبع استخراج‌شده اجرا خواهند شد.

برخی قلاب‌ها می‌توانند اطلاعات اضافی را از طریق متغیرهای محیطی دریافت کنند (از dpkg نسخه 1.22.0). همهٔ قلاب‌ها نام قلاب را در متغیر محیطی DPKG_BUILDPACKAGE_HOOK_NAME دریافت می‌کنند (از dpkg نسخه 1.22.0).

توجه: قلاب‌ها می‌توانند فرآیند ساخت را تحت تأثیر قرار دهند و در صورت شکست دستوراتشان باعث شکست در ساخت شوند، بنابراین مراقب پیامدهای ناخواسته باشید.

نام‌های hook-name پشتیبانی‌شده در حال حاضر عبارتند از:

متغیر DPKG_BUILDPACKAGE_HOOK_SOURCE_OPTIONS را شامل فهرستی از گزینه‌ها که با فاصله جدا شده‌اند و به فراخوانی dpkg-source ارسال خواهند شد، دریافت می‌کند.
متغیر DPKG_BUILDPACKAGE_HOOK_BUILD_TARGET را با نام هدف ساخت debian/rules فراخوانی‌شده دریافت می‌کند. پیش از dpkg نسخه 1.22.7 این متغیر تنها در صورتی تنظیم می‌شد که هدف فراخوانی شده باشد.
متغیر DPKG_BUILDPACKAGE_HOOK_BINARY_TARGET را با نام هدف باینری debian/rules فراخوانی‌شده دریافت می‌کند، اما تنها در صورتی که فراخوانی شده باشد.
متغیر DPKG_BUILDPACKAGE_HOOK_BUILDINFO_OPTIONS را شامل فهرستی از گزینه‌ها که با فاصله جدا شده‌اند و به فراخوانی dpkg-genbuildinfo ارسال خواهند شد، دریافت می‌کند.
متغیر DPKG_BUILDPACKAGE_HOOK_CHANGES_OPTIONS را شامل فهرستی از گزینه‌ها که با فاصله جدا شده‌اند و به فراخوانی dpkg-genchanges ارسال خواهند شد، دریافت می‌کند.
متغیر DPKG_BUILDPACKAGE_HOOK_CHECK_OPTIONS را شامل فهرستی از گزینه‌ها که با فاصله جدا شده‌اند و به فراخوانی دستور بررسی ارسال خواهند شد، دریافت می‌کند.

دستور hook-command از رشته‌های قالب جایگزینی زیر پشتیبانی می‌کند که پیش از اجرا بر روی آن اعمال می‌شوند:

%%
یک نویسهٔ تکی %.
%a
یک مقدار بولی (0 یا 1)، که نشان می‌دهد آیا اقدام بعدی در حال انجام است یا خیر.
%p
نام بستهٔ منبع.
%v
نسخهٔ بستهٔ منبع.
%s
نسخهٔ بستهٔ منبع (بدون دوره زمانی/epoch).
%u
نسخهٔ بالادست (upstream version).
نام فایل را برای فایل .buildinfo تولیدشده تعیین می‌کند (از dpkg نسخه 1.21.0).
گزینهٔ opt را به dpkg-genbuildinfo ارسال می‌کند (از dpkg نسخه 1.18.11). می‌تواند چندین بار استفاده شود.
رابط پشتیبان OpenPGP را برای استفاده در هنگام فراخوانی sign-command مشخص می‌کند (از dpkg نسخه 1.21.10).

حالت پیش‌فرض auto است که در آن بهترین پشتیبان موجود فعلی استفاده خواهد شد. پشتیبان‌های خاص OpenPGP پشتیبانی‌شده به ترتیب اولویت عبارتند از:

هر پیاده‌سازی منطبق بر Stateless OpenPGP (SOP)، مانند sqop، rsop، gosop یا pgpainless-cli.
از پروژهٔ Sequoia-PGP.
از پروژهٔ GnuPG.
هنگامی که dpkg-buildpackage نیاز به اجرای یک دستور پشتیبان OpenPGP برای امضای یک فایل کنترل منبع (.dsc)، یک فایل .buildinfo یا یک فایل .changes دارد، به جای دستور پیش‌فرض یا تشخیص داده‌شده به‌صورت خودکار، دستور sign-command را اجرا خواهد کرد (در صورت لزوم در PATH جستجو می‌کند) (گزینهٔ طولانی از dpkg نسخه 1.18.8). دستور sign-command تمام آرگومان‌های ویژهٔ پشتیبان را مطابق با --sign-backend انتخاب‌شده دریافت خواهد کرد. دستور sign-command نباید شامل فاصله یا هرگونه نویسهٔ کنترلی دیگر پوسته باشد.
یک شناسهٔ کلید OpenPGP (اثر انگشت یا شناسهٔ کاربری) را برای کلید مخفی جهت استفاده هنگام امضای بسته‌ها مشخص می‌کند (--sign-key از dpkg نسخه 1.18.8، --sign-keyid از dpkg نسخه 1.21.10).
یک key-file حاوی کلید مخفی OpenPGP را برای استفاده در زمان امضای بسته‌ها مشخص می‌کند (از dpkg نسخه 1.21.10).

توجه: به دلایل امنیتی بهتر است key-file با یک گذرواژه قفل نگه داشته شود.

بستهٔ منبع را امضا نمی‌کند (گزینهٔ طولانی از dpkg نسخه 1.18.8).
فایل .buildinfo را امضا نمی‌کند (از dpkg نسخه 1.18.19).
فایل‌های .buildinfo و .changes را امضا نمی‌کند (گزینهٔ طولانی از dpkg نسخه 1.18.8).
هیچ فایلی را امضا نمی‌کند، این شامل بستهٔ منبع، فایل .buildinfo و فایل .changes می‌شود (از dpkg نسخه 1.18.20).
امضای فایل‌های حاصل را بدون توجه به -us، --unsigned-source، -ui، --unsigned-buildinfo، -uc، --unsigned-changes یا سایر قواعد شهودی داخلی اجبار می‌کند (از dpkg نسخه 1.17.0).
بدون تغییر به dpkg-source ارسال می‌شود. صفحهٔ راهنمای آن را ببینید.
گزینهٔ opt را به dpkg-source ارسال می‌کند (از dpkg نسخه 1.15.6). می‌تواند چندین بار استفاده شود.
نام فایل را برای فایل .changes تولیدشده تعیین می‌کند (از dpkg نسخه 1.21.0).
گزینهٔ opt را به dpkg-genchanges ارسال می‌کند (از dpkg نسخه 1.15.6). می‌تواند چندین بار استفاده شود.
محل پایگاه‌دادهٔ dpkg را تغییر می‌دهد (از dpkg نسخه 1.14.0). محل پیش‌فرض /var/lib/dpkg است.
-?, --help
پیام راهنمای نحوهٔ استفاده را نمایش داده و خارج می‌شود.
اطلاعات نسخه را نمایش داده و خارج می‌شود.

در صورت تنظیم، به عنوان دستور بررسی فایل .changes استفاده خواهد شد (از dpkg نسخه 1.17.6). با گزینهٔ --check-command بازنویسی می‌شود.
در صورت تنظیم، برای امضای فایل‌های .changes، .buildinfo و .dsc استفاده خواهد شد (از dpkg نسخه 1.17.2). با گزینهٔ --sign-keyid بازنویسی می‌شود.
در صورت تنظیم، برای امضای فایل‌های .changes، .buildinfo و .dsc استفاده خواهد شد (از dpkg نسخه 1.21.10). با گزینهٔ --sign-keyfile بازنویسی می‌شود.
در صورت تنظیم، شامل فهرستی از گزینه‌ها خواهد بود که با فاصله از هم جدا شده‌اند و بر رفتار برخی از ابزارهای dpkg که در فرآیند ساخت بسته دخیل هستند تأثیر می‌گذارند، و در صورتی که کد موجود در debian/rules از آن‌ها تبعیت کند، ممکن است بر فرآیند ساخت بسته تأثیر بگذارند. این گزینه‌ها می‌توانند پارامترهایی داشته باشند که بلافاصله پس از علامت مساوی (‘=’) مشخص می‌شوند. برای گزینه‌هایی که از چندین پارامتر پشتیبانی می‌کنند، این پارامترها با فاصله از یکدیگر جدا نخواهند شد، زیرا فاصله برای جداسازی گزینه‌ها رزرو شده است.

موارد زیر گزینه‌های شناخته‌شده و پشتیبانی‌شده توسط ابزارهای dpkg هستند، گزینه‌های دیگر مورد قبول توسط debian/rules ممکن است بر اساس سیاست‌های ویژهٔ توزیع تعریف شوند.

فایل debian/rules در بسته‌بندی ممکن است از این گزینه برای تنظیم فرآیند ساخت جهت استفاده از N کار موازی بهره ببرد. این گزینه با گزینه‌های --jobs و --jobs-force بازنویسی می‌شود.
دستور dpkg-buildpackage متغیر DEB_CHECK_COMMAND را نادیده خواهد گرفت. انتظار نمی‌رود که debian/rules در فرآیند بسته‌بندی، آزمون‌ها را در حین ساخت اجرا کند.
اگر debian/rules دستور dpkg-buildflags را برای برپاسازی پرچم‌های ساخت فرابخواند، آن‌ها طوری تنظیم خواهند شد که هیچ بهینه‌سازی را فعال نکنند.
فایل debian/rules در بسته‌بندی باید اطمینان حاصل کند که اطلاعات دیباگ از اشیاء (objects) حذف (strip) نمی‌شوند. اگر debian/rules قطعه‌کد make موجود در mk/buildtools.mk را شامل شود، متغیر make موسوم به STRIP از این گزینه پیروی خواهد کرد.
دستور dpkg-buildpackage پرچم make(1) موسوم به --no-print-directory را به متغیر محیطی MAKEFLAGS اضافه خواهد کرد. فایل debian/rules در بسته‌بندی باید خروجی را مختصر کند، بدون آن‌که کاملاً بی‌صدا باشد.
این‌ها بخش‌های قابلیتی هستند که ویژگی‌های پرچم‌های ساخت را کنترل می‌کنند. برای جزئیات بیشتر dpkg-buildflags(1) را ببینید.
در صورت تنظیم، به عنوان نمایه(ها)ی ساخت فعال برای بستهٔ در حال ساخت استفاده خواهد شد (از dpkg نسخه 1.17.2). این متغیر فهرستی از نام‌های نمایه است که با فاصله جدا شده‌اند. با گزینهٔ -P بازنویسی می‌شود.
حالت رنگی را تعیین می‌کند (از dpkg نسخه 1.18.5). مقادیر پذیرفته‌شده در حال حاضر عبارتند از: auto (پیش‌فرض)، always و never.
در صورت تنظیم، برای تصمیم‌گیری در مورد فعال‌سازی پشتیبانی از زبان بومی (Native Language Support)، که به عنوان پشتیبانی از بین‌المللی‌سازی (یا i18n) نیز شناخته می‌شود، استفاده خواهد شد (از dpkg نسخه 1.19.0). مقادیر پذیرفته‌شده عبارتند از: 0 و 1 (پیش‌فرض).

حتی اگر dpkg-buildpackage برخی متغیرها را صادر (export) کند، debian/rules نباید به حضور آن‌ها اتکا نماید و در عوض باید از رابط‌های مربوطه برای بازیابی مقادیر مورد نیاز استفاده کند، زیرا آن فایل نقطهٔ ورود اصلی برای ساخت بسته‌ها است و اجرای مستقل آن باید پشتیبانی شود.

دستور dpkg-architecture همراه با پارامترهای -a و -t ارسال‌شده فراخوانی می‌شود. هر متغیری که توسط گزینهٔ -s آن خروجی داده شود در محیط ساخت ادغام خواهد شد.
این متغیر روی مقدار به‌دست‌آمده از فیلد Rules-Requires-Root، سطح dpkg-build-api یا از خط فرمان تنظیم می‌شود. هنگامی که تنظیم شود، مقداری معتبر برای فیلد Rules-Requires-Root خواهد بود. از این متغیر برای آگاه‌سازی debian/rules از این‌که آیا مشخصات rootless-builds.txt پشتیبانی می‌شود یا خیر استفاده می‌گردد.
این متغیر هنگامی که فیلد Rules-Requires-Root روی مقداری متفاوت از no و binary-targets تنظیم شده باشد، روی gain-root-command تنظیم می‌شود.
این متغیر بر روی برچسب زمانی یونیکس از مبدأ (epoch) برای آخرین مدخل در debian/changelog تنظیم می‌شود، در صورتی که از قبل تعریف نشده باشد.

/etc/dpkg/buildpackage.conf
فایل پیکربندی سراسری سیستم.
$XDG_CONFIG_HOME/dpkg/buildpackage.conf یا
$HOME/.config/dpkg/buildpackage.conf
فایل پیکربندی کاربر.

بین dpkg نسخه 1.14.17 و 1.16.1، دستور dpkg-buildpackage پرچم‌های کامپایلر (CFLAGS، CXXFLAGS، FFLAGS، CPPFLAGS و LDFLAGS) را با مقادیری که توسط dpkg-buildflags برگردانده می‌شد صادر (export) می‌کرد. این موضوع دیگر صادق نیست.

دستور dpkg-buildpackage از dpkg نسخه 1.16.2 به بعد از اهداف build-arch و build-indep استفاده می‌کند. پیش از dpkg نسخه 1.22.7، کدی برای تلاش جهت تشخیص اهداف ناموجود و پس‌گرد به هدف build وجود داشت. بنابراین این اهداف اجباری هستند.

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

باید امکان مشخص کردن فاصله‌ها و نویسه‌های کنترلی پوسته و آرگومان‌های اولیه برای gain-root-command و sign-command وجود داشته باشد.

/usr/share/doc/dpkg/spec/rootless-builds.txt، dpkg-source(1)، dpkg-architecture(1)، dpkg-buildflags(1)، dpkg-genbuildinfo(1)، dpkg-genchanges(1)، fakeroot(1)، lintian(1)، SOP https://datatracker.ietf.org/doc/draft-dkg-openpgp-stateless-cli، sq(1)، gpg(1).

2026-03-06 1.23.7-dirty