dpkg-buildpackage(1) dpkg suite dpkg-buildpackage(1) نام (NAME) dpkg-buildpackage - ساخت بسته‌های دودویی یا منبع از روی سورس‌ها خلاصه دستور (SYNOPSIS) dpkg-buildpackage [گزینه...] [--] [filename.dsc|directory] توضیحات (DESCRIPTION) دستور 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 به نوع ساخت بستگی دارد و تا حد لزوم مشخص خواهد بود اما نه بیشتر؛ نام به این صورت خواهد بود: source-name_binary-version_arch.changes برای ساختی که شامل any باشد source-name_binary-version_all.changes در غیر این صورت، برای ساختی که شامل all باشد source-name_source-version_source.changes. در غیر این صورت، برای ساختی که شامل 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 را اجرا می‌کند. گزینه‌ها (OPTIONS) تمام گزینه‌های طولانی را می‌توان هم در خط فرمان و هم در فایل‌های پیکربندی سیستمی و کاربری dpkg-buildpackage مشخص کرد. هر خط در فایل پیکربندی یا یک گزینه است (دقیقاً همانند گزینهٔ خط فرمان اما بدون خط تیره‌های ابتدایی) یا یک یادداشت (اگر با ‘#’ شروع شود). --build=type نوع ساخت (type) را از میان فهرستی از مؤلفه‌ها که با کاما جدا شده‌اند، مشخص می‌کند (از dpkg نسخه 1.18.5). همهٔ مؤلفه‌های مشخص‌شده با هم ترکیب می‌شوند تا نوع ساخت واحد برای استفاده انتخاب شود، که متضمن یک اجرای ساخت واحد با تولید یک فایل .changes واحد است. به dpkg-genchanges ارسال می‌شود. مقادیر مجاز عبارتند از: source بستهٔ منبع را می‌سازد. توجه: هنگام استفاده از این مقدار به صورت مستقل، و اگر آنچه می‌خواهید صرفاً ساخت (مجدد) بستهٔ منبع از یک درخت منبع تمیز است، استفادهٔ مستقیم از dpkg-source همواره گزینهٔ بهتری است زیرا نیازی به نصب هیچ‌گونه وابستگی ساختی ندارد، در حالی که در غیر این صورت برای فراخوانی هدف clean به آن‌ها نیاز خواهد بود. any بسته‌های دودویی وابسته به معماری را می‌سازد. all بسته‌های دودویی مستقل از معماری را می‌سازد. binary بسته‌های دودویی وابسته و مستقل از معماری را می‌سازد. این نام مستعاری برای any,all است. full همه‌چیز را می‌سازد. این نام مستعاری برای source,any,all بوده و با حالت پیش‌فرض در زمانی که هیچ گزینهٔ ساختی مشخص نشده باشد، یکسان است. -g معادل با --build=source,all (از dpkg نسخه 1.17.11). -G معادل با --build=source,any (از dpkg نسخه 1.17.11). -b معادل با --build=binary یا --build=any,all. -B معادل با --build=any. -A معادل با --build=all. -S معادل با --build=source. -F معادل با --build=full، --build=source,binary یا --build=source,any,all (از dpkg نسخه 1.15.8). --target=target[,...] --target target[,...] -T, --rules-target=target[,...] دستور 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). --as-root تنها همراه با --target معنادار است (از dpkg نسخه 1.15.0). الزام می‌کند که هدف با اختیارات کاربر ریشه اجرا شود. -si -sa -sd -vversion -Cchanges-description -mmaintainer-address -emaintainer-address بدون تغییر به dpkg-genchanges منتقل می‌شود. صفحهٔ راهنمای آن را ببینید. --build-by=maintainer-address --source-by=maintainer-address (since dpkg 1.21.10) به عنوان -m به dpkg-genchanges ارسال می‌شود (از dpkg نسخه 1.21.10). صفحهٔ راهنمای آن را ببینید. --release-by=maintainer-address --changed-by=maintainer-address (since dpkg 1.21.10) به عنوان -e به dpkg-genchanges ارسال می‌شود (از dpkg نسخه 1.21.10). صفحهٔ راهنمای آن را ببینید. -a, --host-arch architecture معماری دبیانی را که برای آن بسته می‌سازیم مشخص می‌کند (گزینهٔ طولانی از dpkg نسخه 1.17.17). معماری دستگاهی که روی آن بسته را می‌سازیم به‌طور خودکار تعیین می‌شود و برای دستگاه میزبان نیز پیش‌فرض است. -t, --host-type gnu-system-type نوع سیستم گنو را که برای آن بسته می‌سازیم مشخص می‌کند (گزینهٔ طولانی از dpkg نسخه 1.17.17). می‌توان از آن به جای --host-arch یا به عنوان مکمل برای بازنویسی نوع پیش‌فرض سیستم گنو معماری دبیانِ میزبان استفاده کرد. --target-arch architecture معماری دبیانی را که باینری‌های ساخته‌شده برای آن هدف‌گذاری می‌شوند مشخص می‌کند (از dpkg نسخه 1.17.17). مقدار پیش‌فرض، دستگاه میزبان است. --target-type gnu-system-type نوع سیستم گنو را که باینری‌های ساخته‌شده برای آن هدف‌گذاری می‌شوند مشخص می‌کند (از dpkg نسخه 1.17.17). می‌توان از آن به جای --target-arch یا به عنوان مکمل برای بازنویسی نوع پیش‌فرض سیستم گنو معماری دبیانِ هدف استفاده کرد. -P, --build-profiles=profile[,...] نمایه(ها)ی ساختی که می‌سازیم را به صورت یک فهرست جداشده با کاما مشخص می‌کند (از dpkg نسخه 1.17.2، گزینهٔ طولانی از نسخه 1.18.8). رفتار پیش‌فرض، ساخت بدون هیچ نمایهٔ خاصی است. همچنین آن‌ها را (به صورت فهرستی جداشده با فاصله) در متغیر محیطی DEB_BUILD_PROFILES تنظیم می‌کند که به عنوان مثال به فایل‌های debian/rules اجازه می‌دهد از این اطلاعات برای ساخت‌های مشروط استفاده کنند. -j, --jobs[=jobs|auto] تعداد کارهایی که مجازند هم‌زمان اجرا شوند را مشخص می‌کند (از 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)، هرچند این اتفاق تنها باید در سیستم‌های نامتعارف و پشتیبانی‌نشده رخ دهد. -J, --jobs-try[=jobs|auto] این گزینه (از dpkg نسخه 1.18.2، گزینهٔ طولانی از نسخه 1.18.8) معادل -j در بالا است. از آنجا که رفتار -j در dpkg نسخه 1.21.10 به حالت اختیاری (opt-in) تغییر یافت، در صورت نیاز به تضمین معناشناسی در سری‌های مختلف انتشار dpkg می‌توانید به جای آن از این گزینه استفاده کنید. --jobs-force[=jobs|auto] این گزینه (از dpkg نسخه 1.21.10) معادل گزینهٔ --jobs است با این تفاوت که با افزودن گزینهٔ make -j همراه با تعداد محاسبه‌شدهٔ کارهای موازی به متغیر محیطی MAKEFLAGS، حالت موازی تحمیلی را فعال می‌سازد. این امر باید باعث شود تمامی فراخوانی‌های بعدی make این گزینه را به ارث ببرند، و بدین ترتیب تنظیمات موازی را بدون توجه به پشتیبانی فرآیند بسته‌بندی (و احتمالاً سیستم ساخت بالادست در صورتی که از make(1) استفاده کند) از ساخت موازی به آن تحمیل نماید، که ممکن است به شکست در ساخت بینجامد. توجه: هر Makefile که سازگار با اجرای موازی نباشد باید دارای اشکال تلقی شود. این فایل‌ها یا باید برای ساخت موازی ایمن شوند، یا با استفاده از هدف make(1) .NOTPARALLEL به عنوان ناامن علامت‌گذاری گردند. -D, --check-builddeps وابستگی‌های ساخت و تداخل‌های ساخت را بررسی می‌کند؛ در صورت برآورده نشدن فرآیند را لغو می‌نماید (گزینهٔ طولانی از dpkg نسخه 1.18.8). این رفتار پیش‌فرض است. -d, --no-check-builddeps وابستگی‌های ساخت و تداخل‌های ساخت را بررسی نمی‌کند (گزینهٔ طولانی از dpkg نسخه 1.18.8). --ignore-builtin-builddeps وابستگی‌های ساخت و تداخل‌های ساخت توکار را بررسی نمی‌کند (از dpkg نسخه 1.18.2). این‌ها وابستگی‌های ساخت ضمنی مختص توزیع هستند که معمولاً در یک محیط ساخت الزامی می‌باشند، یعنی مجموعه بستهٔ موسوم به Build- Essential. --rules-requires-root فیلد Rules-Requires-Root را نادیده می‌گیرد و به مقدار پیش‌فرض قدیمی آن یعنی binary-targets پس‌گرد می‌کند (از dpkg نسخه 1.19.1). -nc, --no-pre-clean درخت منبع را قبل از ساخت پاک‌سازی نمی‌کند (گزینهٔ طولانی از dpkg نسخه 1.18.8). اگر هیچ گزینهٔ دیگری از میان -F، -g، -G، -B، -A یا -S انتخاب نشده باشد، بر -b دلالت دارد. همراه با -S بر -d دلالت دارد (از dpkg نسخه 1.18.0). --pre-clean درخت منبع را قبل از ساخت پاک‌سازی می‌کند (از dpkg نسخه 1.18.8). این رفتار پیش‌فرض است. -tc, --post-clean درخت منبع را (با استفاده از gain-root-command debian/rules clean) پس از ساخته شدن بسته پاک‌سازی می‌کند (گزینهٔ طولانی از dpkg نسخه 1.18.8). --no-post-clean درخت منبع را پس از ساخته شدن بسته پاک‌سازی نمی‌کند (از dpkg نسخه 1.19.1). این رفتار پیش‌فرض است. --sanitize-env محیط ساخت را پالایش (پاک‌سازی) می‌کند (از dpkg نسخه 1.20.0). این کار متغیرهای محیطی، umask و سایر ویژگی‌های فرآیند را که ممکن است اثر نامطلوبی بر ساخت بسته‌ها بگذارند، بازنشانی یا حذف می‌کند. از آنجا که نقطهٔ ورود رسمی برای ساخت بسته‌ها debian/rules است، بسته‌ها نمی‌توانند به برقرار بودن این تنظیمات اتکا کنند و بنابراین باید حتی در صورت عدم حضور آن‌ها نیز به درستی کار کنند. این‌که چه مواردی پالایش شوند مختص توزیع (تأمین‌کننده) است. -r, --root-command=gain-root-command هنگامی که 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 فرابخواند به جای این‌که آرگومان‌ها را به صورت جداگانه به دستوری که باید اجرا شود ارسال کند. -R, --rules-file=rules-file ساخت یک بستهٔ دبیان معمولاً مستلزم فراخوانی debian/rules به عنوان دستوری با چندین پارامتر استاندارد است (از dpkg نسخه 1.14.17، گزینهٔ طولانی از نسخه 1.18.8). با این گزینه امکان استفاده از فراخوانی برنامه‌ای دیگر برای ساخت بسته وجود دارد (می‌تواند شامل پارامترهای جداشده با فاصله باشد). همچنین می‌توان از آن برای اجرای فایل قوانین استاندارد با یک برنامهٔ make دیگر استفاده کرد (برای نمونه با استفاده از /usr/local/bin/make -f debian/rules به عنوان rules-file). --check-command=check-command دستور مورد استفاده برای بررسی خود فایل .changes و هر دست‌ساختهٔ ساخته‌شدهٔ ارجاع داده‌شده در آن فایل (از dpkg نسخه 1.17.6). این دستور باید مسیر فایل .changes را به عنوان یک آرگومان دریافت کند. این دستور معمولاً lintian خواهد بود. --check-option=opt گزینهٔ opt را به check-command مشخص‌شده با DEB_CHECK_COMMAND یا --check-command ارسال می‌کند (از dpkg نسخه 1.17.6). می‌تواند چندین بار استفاده شود. --hook-hook-name=hook-command کد پوستهٔ مشخص‌شدهٔ hook-command را به عنوان قلاب hook-name تنظیم می‌کند، که در زمان‌های مشخص‌شده در مراحل اجرا به اجرا درمی‌آید (از dpkg نسخه 1.17.6). قلاب‌ها همواره اجرا خواهند شد حتی اگر اقدام بعدی انجام نشود (به جز قلاب binary). تمام قلاب‌ها در دایرکتوری منبع استخراج‌شده اجرا خواهند شد. برخی قلاب‌ها می‌توانند اطلاعات اضافی را از طریق متغیرهای محیطی دریافت کنند (از dpkg نسخه 1.22.0). همهٔ قلاب‌ها نام قلاب را در متغیر محیطی DPKG_BUILDPACKAGE_HOOK_NAME دریافت می‌کنند (از dpkg نسخه 1.22.0). توجه: قلاب‌ها می‌توانند فرآیند ساخت را تحت تأثیر قرار دهند و در صورت شکست دستوراتشان باعث شکست در ساخت شوند، بنابراین مراقب پیامدهای ناخواسته باشید. نام‌های hook-name پشتیبانی‌شده در حال حاضر عبارتند از: preinit init preclean source متغیر DPKG_BUILDPACKAGE_HOOK_SOURCE_OPTIONS را شامل فهرستی از گزینه‌ها که با فاصله جدا شده‌اند و به فراخوانی dpkg-source ارسال خواهند شد، دریافت می‌کند. build متغیر DPKG_BUILDPACKAGE_HOOK_BUILD_TARGET را با نام هدف ساخت debian/rules فراخوانی‌شده دریافت می‌کند. پیش از dpkg نسخه 1.22.7 این متغیر تنها در صورتی تنظیم می‌شد که هدف فراخوانی شده باشد. binary متغیر DPKG_BUILDPACKAGE_HOOK_BINARY_TARGET را با نام هدف باینری debian/rules فراخوانی‌شده دریافت می‌کند، اما تنها در صورتی که فراخوانی شده باشد. buildinfo متغیر DPKG_BUILDPACKAGE_HOOK_BUILDINFO_OPTIONS را شامل فهرستی از گزینه‌ها که با فاصله جدا شده‌اند و به فراخوانی dpkg-genbuildinfo ارسال خواهند شد، دریافت می‌کند. changes متغیر DPKG_BUILDPACKAGE_HOOK_CHANGES_OPTIONS را شامل فهرستی از گزینه‌ها که با فاصله جدا شده‌اند و به فراخوانی dpkg-genchanges ارسال خواهند شد، دریافت می‌کند. postclean check متغیر DPKG_BUILDPACKAGE_HOOK_CHECK_OPTIONS را شامل فهرستی از گزینه‌ها که با فاصله جدا شده‌اند و به فراخوانی دستور بررسی ارسال خواهند شد، دریافت می‌کند. sign done دستور hook-command از رشته‌های قالب جایگزینی زیر پشتیبانی می‌کند که پیش از اجرا بر روی آن اعمال می‌شوند: %% یک نویسهٔ تکی %. %a یک مقدار بولی (0 یا 1)، که نشان می‌دهد آیا اقدام بعدی در حال انجام است یا خیر. %p نام بستهٔ منبع. %v نسخهٔ بستهٔ منبع. %s نسخهٔ بستهٔ منبع (بدون دوره زمانی/epoch). %u نسخهٔ بالادست (upstream version). --buildinfo-file=filename نام فایل را برای فایل .buildinfo تولیدشده تعیین می‌کند (از dpkg نسخه 1.21.0). --buildinfo-option=opt گزینهٔ opt را به dpkg-genbuildinfo ارسال می‌کند (از dpkg نسخه 1.18.11). می‌تواند چندین بار استفاده شود. --sign-backend=sign-backend رابط پشتیبان OpenPGP را برای استفاده در هنگام فراخوانی sign-command مشخص می‌کند (از dpkg نسخه 1.21.10). حالت پیش‌فرض auto است که در آن بهترین پشتیبان موجود فعلی استفاده خواهد شد. پشتیبان‌های خاص OpenPGP پشتیبانی‌شده به ترتیب اولویت عبارتند از: sop هر پیاده‌سازی منطبق بر Stateless OpenPGP (SOP)، مانند sqop، rsop، gosop یا pgpainless-cli. sq از پروژهٔ Sequoia-PGP. gpg از پروژهٔ GnuPG. -p, --sign-command=sign-command هنگامی که dpkg-buildpackage نیاز به اجرای یک دستور پشتیبان OpenPGP برای امضای یک فایل کنترل منبع (.dsc)، یک فایل .buildinfo یا یک فایل .changes دارد، به جای دستور پیش‌فرض یا تشخیص داده‌شده به‌صورت خودکار، دستور sign-command را اجرا خواهد کرد (در صورت لزوم در PATH جستجو می‌کند) (گزینهٔ طولانی از dpkg نسخه 1.18.8). دستور sign-command تمام آرگومان‌های ویژهٔ پشتیبان را مطابق با --sign-backend انتخاب‌شده دریافت خواهد کرد. دستور sign-command نباید شامل فاصله یا هرگونه نویسهٔ کنترلی دیگر پوسته باشد. -k, --sign-keyid=key-id --sign-key=key-id یک شناسهٔ کلید OpenPGP (اثر انگشت یا شناسهٔ کاربری) را برای کلید مخفی جهت استفاده هنگام امضای بسته‌ها مشخص می‌کند (--sign-key از dpkg نسخه 1.18.8، --sign-keyid از dpkg نسخه 1.21.10). --sign-keyfile=key-file یک key-file حاوی کلید مخفی OpenPGP را برای استفاده در زمان امضای بسته‌ها مشخص می‌کند (از dpkg نسخه 1.21.10). توجه: به دلایل امنیتی بهتر است key-file با یک گذرواژه قفل نگه داشته شود. -us, --unsigned-source بستهٔ منبع را امضا نمی‌کند (گزینهٔ طولانی از dpkg نسخه 1.18.8). -ui, --unsigned-buildinfo فایل .buildinfo را امضا نمی‌کند (از dpkg نسخه 1.18.19). -uc, --unsigned-changes فایل‌های .buildinfo و .changes را امضا نمی‌کند (گزینهٔ طولانی از dpkg نسخه 1.18.8). --no-sign هیچ فایلی را امضا نمی‌کند، این شامل بستهٔ منبع، فایل .buildinfo و فایل .changes می‌شود (از dpkg نسخه 1.18.20). --force-sign امضای فایل‌های حاصل را بدون توجه به -us، --unsigned-source، -ui، --unsigned-buildinfo، -uc، --unsigned-changes یا سایر قواعد شهودی داخلی اجبار می‌کند (از dpkg نسخه 1.17.0). -sn -ss -sA -sk -su -sr -sK -sU -sR -i, --diff-ignore[=regex] -I, --tar-ignore[=pattern] -z, --compression-level=level -Z, --compression=compressor بدون تغییر به dpkg-source ارسال می‌شود. صفحهٔ راهنمای آن را ببینید. --source-option=opt گزینهٔ opt را به dpkg-source ارسال می‌کند (از dpkg نسخه 1.15.6). می‌تواند چندین بار استفاده شود. --changes-file=filename نام فایل را برای فایل .changes تولیدشده تعیین می‌کند (از dpkg نسخه 1.21.0). --changes-option=opt گزینهٔ opt را به dpkg-genchanges ارسال می‌کند (از dpkg نسخه 1.15.6). می‌تواند چندین بار استفاده شود. --admindir=dir --admindir dir محل پایگاه‌دادهٔ dpkg را تغییر می‌دهد (از dpkg نسخه 1.14.0). محل پیش‌فرض /var/lib/dpkg است. -?, --help پیام راهنمای نحوهٔ استفاده را نمایش داده و خارج می‌شود. --version اطلاعات نسخه را نمایش داده و خارج می‌شود. محیط (ENVIRONMENT) محیط خارجی (External environment) DEB_CHECK_COMMAND در صورت تنظیم، به عنوان دستور بررسی فایل .changes استفاده خواهد شد (از dpkg نسخه 1.17.6). با گزینهٔ --check-command بازنویسی می‌شود. DEB_SIGN_KEYID در صورت تنظیم، برای امضای فایل‌های .changes، .buildinfo و .dsc استفاده خواهد شد (از dpkg نسخه 1.17.2). با گزینهٔ --sign-keyid بازنویسی می‌شود. DEB_SIGN_KEYFILE در صورت تنظیم، برای امضای فایل‌های .changes، .buildinfo و .dsc استفاده خواهد شد (از dpkg نسخه 1.21.10). با گزینهٔ --sign-keyfile بازنویسی می‌شود. DEB_BUILD_OPTIONS در صورت تنظیم، شامل فهرستی از گزینه‌ها خواهد بود که با فاصله از هم جدا شده‌اند و بر رفتار برخی از ابزارهای dpkg که در فرآیند ساخت بسته دخیل هستند تأثیر می‌گذارند، و در صورتی که کد موجود در debian/rules از آن‌ها تبعیت کند، ممکن است بر فرآیند ساخت بسته تأثیر بگذارند. این گزینه‌ها می‌توانند پارامترهایی داشته باشند که بلافاصله پس از علامت مساوی (‘=’) مشخص می‌شوند. برای گزینه‌هایی که از چندین پارامتر پشتیبانی می‌کنند، این پارامترها با فاصله از یکدیگر جدا نخواهند شد، زیرا فاصله برای جداسازی گزینه‌ها رزرو شده است. موارد زیر گزینه‌های شناخته‌شده و پشتیبانی‌شده توسط ابزارهای dpkg هستند، گزینه‌های دیگر مورد قبول توسط debian/rules ممکن است بر اساس سیاست‌های ویژهٔ توزیع تعریف شوند. parallel=N فایل debian/rules در بسته‌بندی ممکن است از این گزینه برای تنظیم فرآیند ساخت جهت استفاده از N کار موازی بهره ببرد. این گزینه با گزینه‌های --jobs و --jobs-force بازنویسی می‌شود. nocheck دستور dpkg-buildpackage متغیر DEB_CHECK_COMMAND را نادیده خواهد گرفت. انتظار نمی‌رود که debian/rules در فرآیند بسته‌بندی، آزمون‌ها را در حین ساخت اجرا کند. noopt اگر debian/rules دستور dpkg-buildflags را برای برپاسازی پرچم‌های ساخت فرابخواند، آن‌ها طوری تنظیم خواهند شد که هیچ بهینه‌سازی را فعال نکنند. nostrip فایل debian/rules در بسته‌بندی باید اطمینان حاصل کند که اطلاعات دیباگ از اشیاء (objects) حذف (strip) نمی‌شوند. اگر debian/rules قطعه‌کد make موجود در mk/buildtools.mk را شامل شود، متغیر make موسوم به STRIP از این گزینه پیروی خواهد کرد. terse دستور dpkg-buildpackage پرچم make(1) موسوم به --no-print-directory را به متغیر محیطی MAKEFLAGS اضافه خواهد کرد. فایل debian/rules در بسته‌بندی باید خروجی را مختصر کند، بدون آن‌که کاملاً بی‌صدا باشد. hardening=feature-spec reproducible=feature-spec abi=feature-spec future=feature-spec qa=feature-spec optimize=feature-spec sanitize=feature-spec این‌ها بخش‌های قابلیتی هستند که ویژگی‌های پرچم‌های ساخت را کنترل می‌کنند. برای جزئیات بیشتر dpkg-buildflags(1) را ببینید. DEB_BUILD_PROFILES در صورت تنظیم، به عنوان نمایه(ها)ی ساخت فعال برای بستهٔ در حال ساخت استفاده خواهد شد (از dpkg نسخه 1.17.2). این متغیر فهرستی از نام‌های نمایه است که با فاصله جدا شده‌اند. با گزینهٔ -P بازنویسی می‌شود. DPKG_COLORS حالت رنگی را تعیین می‌کند (از dpkg نسخه 1.18.5). مقادیر پذیرفته‌شده در حال حاضر عبارتند از: auto (پیش‌فرض)، always و never. DPKG_NLS در صورت تنظیم، برای تصمیم‌گیری در مورد فعال‌سازی پشتیبانی از زبان بومی (Native Language Support)، که به عنوان پشتیبانی از بین‌المللی‌سازی (یا i18n) نیز شناخته می‌شود، استفاده خواهد شد (از dpkg نسخه 1.19.0). مقادیر پذیرفته‌شده عبارتند از: 0 و 1 (پیش‌فرض). محیط داخلی (Internal environment) حتی اگر dpkg-buildpackage برخی متغیرها را صادر (export) کند، debian/rules نباید به حضور آن‌ها اتکا نماید و در عوض باید از رابط‌های مربوطه برای بازیابی مقادیر مورد نیاز استفاده کند، زیرا آن فایل نقطهٔ ورود اصلی برای ساخت بسته‌ها است و اجرای مستقل آن باید پشتیبانی شود. DEB_BUILD_* DEB_HOST_* DEB_TARGET_* دستور dpkg-architecture همراه با پارامترهای -a و -t ارسال‌شده فراخوانی می‌شود. هر متغیری که توسط گزینهٔ -s آن خروجی داده شود در محیط ساخت ادغام خواهد شد. DEB_RULES_REQUIRES_ROOT این متغیر روی مقدار به‌دست‌آمده از فیلد Rules-Requires-Root، سطح dpkg-build-api یا از خط فرمان تنظیم می‌شود. هنگامی که تنظیم شود، مقداری معتبر برای فیلد Rules-Requires-Root خواهد بود. از این متغیر برای آگاه‌سازی debian/rules از این‌که آیا مشخصات rootless-builds.txt پشتیبانی می‌شود یا خیر استفاده می‌گردد. DEB_GAIN_ROOT_CMD این متغیر هنگامی که فیلد Rules-Requires-Root روی مقداری متفاوت از no و binary-targets تنظیم شده باشد، روی gain-root-command تنظیم می‌شود. SOURCE_DATE_EPOCH این متغیر بر روی برچسب زمانی یونیکس از مبدأ (epoch) برای آخرین مدخل در debian/changelog تنظیم می‌شود، در صورتی که از قبل تعریف نشده باشد. فایل‌ها (FILES) /etc/dpkg/buildpackage.conf فایل پیکربندی سراسری سیستم. $XDG_CONFIG_HOME/dpkg/buildpackage.conf یا $HOME/.config/dpkg/buildpackage.conf فایل پیکربندی کاربر. نکات (NOTES) پرچم‌های کامپایلر دیگر صادر نمی‌شوند (Compiler flags are no longer exported) بین dpkg نسخه 1.14.17 و 1.16.1، دستور dpkg-buildpackage پرچم‌های کامپایلر (CFLAGS، CXXFLAGS، FFLAGS، CPPFLAGS و LDFLAGS) را با مقادیری که توسط dpkg-buildflags برگردانده می‌شد صادر (export) می‌کرد. این موضوع دیگر صادق نیست. هدف‌های ساخت پیش‌فرض (Default build targets) دستور dpkg-buildpackage از dpkg نسخه 1.16.2 به بعد از اهداف build-arch و build-indep استفاده می‌کند. پیش از dpkg نسخه 1.22.7، کدی برای تلاش جهت تشخیص اهداف ناموجود و پس‌گرد به هدف build وجود داشت. بنابراین این اهداف اجباری هستند. امنیت (SECURITY) ساخت بسته‌های دودویی یا منبع تنها باید بر روی داده‌های منبع قابل اعتماد انجام شود. اشکالات (BUGS) باید امکان مشخص کردن فاصله‌ها و نویسه‌های کنترلی پوسته و آرگومان‌های اولیه برای gain-root-command و sign-command وجود داشته باشد. همچنین ببینید (SEE ALSO) /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 ، sq(1)، gpg(1). 1.23.7-dirty 2026-03-06 dpkg-buildpackage(1)