deb-control(5) dpkg suite deb-control(5)

deb-control - فایل کنترل اصلی بسته‌های باینری دبیان

DEBIAN/control

هر بسته باینری دبیان حاوی یک فایل control در بخش control خود است و قالب deb822(5) آن زیرمجموعه‌ای از فایل کنترل منبع الگوی debian/control در بسته‌های منبع دبیان می‌باشد؛ به deb-src-control(5) مراجعه کنید.

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

مقدار این فیلد نام بسته را تعیین می‌کند و توسط اکثر ابزارهای نصب برای ایجاد نام فایل‌ها استفاده می‌شود.
این فیلد نوع بسته را مشخص می‌کند. udeb برای بسته‌های دارای محدودیت اندازه است که توسط نصاب دبیان (debian installer) استفاده می‌شوند. deb مقدار پیش‌فرض است؛ اگر این فیلد وجود نداشته باشد این مقدار در نظر گرفته می‌شود. ممکن است در آینده انواع بیشتری اضافه شود.
معمولاً این مقدار شماره نسخه بسته اصلی به هر شکلی است که نویسنده برنامه استفاده می‌کند. همچنین ممکن است شامل یک شماره بازبینی دبیان باشد (برای بسته‌های غیربومی). قالب دقیق و الگوریتم مرتب‌سازی در deb-version(7) شرح داده شده است.

نکته: در برخی توزیع‌ها، dpkg طوری ساخته شده است که منابع بومی با نسخه‌های غیربومی را مجاز می‌داند، که این امر ناسازگار بوده و بر سردرگمی در درک این مفهوم می‌افزاید و علاوه بر این معمولاً دامی برای خطاهای تصادفی است.

باید در قالب “Joe Bloggs <jbloggs@foo.com>” باشد، و معمولاً شخصی است که بسته را ایجاد کرده است، برخلاف نویسنده نرم‌افزاری که بسته‌بندی شده است.
 long-description
قالب توصیف بسته به صورت یک خلاصه کوتاه در خط اول (پس از فیلد Description) است. خطوط بعدی باید برای توصیف طولانی‌تر و با جزئیات بیشتر به کار روند. هر خط از توصیف تفصیلی باید با یک فاصله شروع شود، و خطوط خالی در توصیف تفصیلی باید شامل یک ‘.’ تنها پس از فاصله آغازین باشند.
این یک فیلد عمومی است که بر اساس نرم‌افزاری که این بسته نصب می‌کند، به آن یک دسته‌بندی اختصاص می‌دهد. برخی از بخش‌های متداول عبارتند از utils، net، mail، text، x11 و غیره.

مقادیر پذیرفته‌شده بر اساس سیاست توزیع خاص تعیین می‌شوند.

اهمیت این بسته را در ارتباط با کل سیستم تعیین می‌کند. اولویت‌های شناخته‌شده عبارتند از required، important، standard، optional، extra و unknown، اما مقادیر دیگر نیز می‌توانند استفاده شوند.

نحوه اعمال این مقادیر به سیاست توزیع خاص بستگی دارد.

اندازه تقریبی کل فایل‌های نصب‌شده بسته، به واحد کیبی‌بایت (KiB). الگوریتم محاسبه اندازه در deb-substvars(5) توصیف شده است.
این فیلد معمولاً تنها زمانی نیاز است که پاسخ yes باشد. این فیلد بسته‌ای را مشخص می‌کند که عمدتاً برای راه‌اندازی صحیح سیستم لازم است یا برای متایسته‌های سفارشی محلی سیستم به کار می‌رود. dpkg(1) یا هر ابزار نصب دیگری اجازه حذف یک بسته Protected را نخواهد داد (حداقل بدون استفاده از یکی از گزینه‌های اجباری).

از نسخه dpkg 1.20.1 پشتیبانی می‌شود.

این فیلد معمولاً فقط هنگامی که پاسخ yes است نیاز می‌باشد. این فیلد بسته‌ای را مشخص می‌کند که برای سیستم بسته‌بندی، برای عملکرد صحیح کلی سیستم یا در طول راه‌اندازی مورد نیاز است (هرچند مورد اخیر باید به فیلد Protected تبدیل شود). dpkg(1) یا هر ابزار نصب دیگری اجازه حذف یک بسته Essential را نخواهد داد (حداقل بدون استفاده از یکی از گزینه‌های اجباری).
این فیلد معمولاً تنها زمانی نیاز است که مقدار yes باشد، و معمولاً توسط نرم‌افزار بایگانی تزریق می‌شود. این فیلد بسته‌ای را مشخص می‌کند که هنگام ساخت سایر بسته‌ها مورد نیاز است.
معماری مشخص می‌کند که این بسته روی چه نوع دستگاهی اجرا می‌شود.

معماری‌های رایج عبارتند از amd64، armel، i386، powerpc و غیره. توجه داشته باشید که مقدار ویژه all برای بسته‌هایی است که مستقل از معماری هستند (مانند اسکریپت‌های شل و پرل یا مستندات).

نکته: کاراکترهای عام (wildcards) معماری در این زمینه مجاز نیستند.

نام معماری باید با یک نویسه الفبایی-عددی (“0-9a-zA-Z”) شروع شود و سپس نویسه‌های الفبایی-عددی و خط تیره (‘-’) به دنبال آن بیایند.

نام توزیعی که این بسته از آن سرچشمه می‌گیرد.
نشانی url سیستم پیگیری اشکالات برای این بسته. قالب مورد استفاده کنونی به صورت bts-type://bts-address است، مانند debbugs://bugs.debian.org.
نشانی url صفحه اصلی پروژه بالادستی.
فهرستی از برچسب‌ها که ویژگی‌های بسته را توصیف می‌کنند. شرح و فهرست برچسب‌های پشتیبانی‌شده را می‌توان در بسته debtags یافت.
این فیلد برای نشان دادن نحوه رفتار این بسته در نصب‌های چندمعماری (multi-arch) استفاده می‌شود.
اگر فیلد حذف شود، این مقدار پیش‌فرض است، که در این صورت افزودن فیلد با مقدار صریح no به طور کلی لازم نیست.
این بسته می‌تواند همراه با نسخه هم‌نام خود از معماری‌های دیگر نصب شود (co-installable)، اما نباید برای برآورده کردن وابستگی بسته‌ای با معماری متفاوت از خود استفاده شود.
این بسته نمی‌تواند همزمان با نسخه‌ای از خود نصب شود، اما باید مجاز باشد که وابستگی بدون قید معماری یک بسته با معماری متفاوت از خود را برآورده کند (اگر یک وابستگی قید صریح معماری داشته باشد، مقدار foreign نادیده گرفته می‌شود).
این گزینه به وابستگی‌های معکوس اجازه می‌دهد در فیلد Depends خود نشان دهند که این بسته را از یک معماری بیگانه (foreign) با افزودن :any به انتهای نام بسته می‌پذیرند، اما در غیر این صورت هیچ اثری ندارد.
نام بسته منبعی که این بسته باینری از آن به دست آمده است، در صورتی که با نام خود بسته متفاوت باشد. اگر نسخه منبع با نسخه باینری متفاوت باشد، نام منبع source-name توسط یک نسخه منبع source-version در پرانتز دنبال خواهد شد. این امر می‌تواند به عنوان مثال در یک بارگذاری صرفاً باینری توسط غیر نگه‌دارنده (non-maintainer upload یا NMU)، یا هنگام تعیین یک نسخه باینری متفاوت از طریق «dpkg-gencontrol -v» رخ دهد.
این فیلدها توسط نصاب دبیان (debian-installer) استفاده می‌شوند و معمولاً نیازی به آن‌ها نیست. برای جزئیات بیشتر درباره آنها، پیوند زیر را ببینید: https://salsa.debian.org/installer-team/debian-installer/-/raw/master/doc/devel/modules.txt.
فهرستی از بسته‌ها که برای ارائه سطح قابل توجهی از کارایی توسط این بسته، مورد نیاز هستند. نرم‌افزار نگهداری بسته اجازه نصب یک بسته را در صورتی که بسته‌های فهرست‌شده در فیلد Depends آن نصب نشده باشند، نخواهد داد (حداقل بدون استفاده از گزینه‌های اجباری). در فرآیند نصب، اسکریپت‌های postinst بسته‌های فهرست‌شده در فیلدهای Depends پیش از اسکریپت‌های بسته‌هایی که به آنها وابسته هستند اجرا می‌شوند. برعکس، در هنگام حذف، اسکریپت prerm یک بسته قبل از اسکریپت‌های بسته‌های ذکرشده در فیلد Depends آن اجرا می‌گردد.
فهرستی از بسته‌ها که باید قبل از نصب این بسته، نصب و پیکربندی شده باشند. این فیلد معمولاً در مواردی استفاده می‌شود که این بسته برای اجرای اسکریپت preinst خود به بسته دیگری نیاز دارد.
بسته‌هایی را فهرست می‌کند که در همه حالت‌ها به جز نصب‌های غیرمعمول، به همراه این بسته یافت می‌شوند. نرم‌افزار نگهداری بسته در صورتی که کاربر بسته‌ای را بدون بسته‌های ذکرشده در فیلد Recommends نصب کند، به او هشدار خواهد داد.
بسته‌هایی را فهرست می‌کند که با این بسته مرتبط هستند و شاید کارایی آن را بهبود بخشند، اما بدون آنها نیز نصب این بسته کاملاً منطقی و قابل قبول است.

نحو فیلدهای Depends، Pre-Depends، Recommends و Suggests شامل فهرستی از گروه‌های بسته‌های جایگزین است. هر گروه فهرستی از بسته‌ها است که با نماد خط عمودی (یا “پایپ”)، ‘|’ از هم جدا شده‌اند. گروه‌ها با کاما از یکدیگر جدا می‌شوند. کاماها باید به عنوان “و (AND)” و پایپ‌ها به عنوان “یا (OR)” خوانده شوند، که اتصال پایپ‌ها اولویت بالاتری دارد. نام هر بسته می‌تواند اختیاری با یک قید معماری پس از دونقطه ‘:’ و به دنبال آن مشخصات اختیاری شماره نسخه در داخل پرانتز همراه باشد.

نام قید معماری می‌تواند یک نام معماری واقعی دبیان (از dpkg 1.16.5 به بعد) یا any (از dpkg 1.16.2 به بعد) باشد. در صورت عدم درج، پیش‌فرض معماری بسته باینری فعلی است. یک نام معماری واقعی دبیان دقیقاً با آن معماری برای نام آن بسته مطابقت خواهد داشت؛ any در صورتی که بسته با Multi-Arch: allowed علامت‌گذاری شده باشد با هر معماری برای آن نام بسته مطابقت خواهد داشت.

شماره نسخه ممکن است با یک ‘>>’ شروع شود که در این صورت هر نسخه بعدی مطابقت خواهد داشت، و ممکن است شماره بازبینی بسته‌بندی دبیان را مشخص کرده یا نادیده بگیرد (که با یک خط تیره جدا می‌شود). روابط نسخه پذیرفته‌شده عبارتند از ‘>>’ برای بزرگتر از، ‘<<’ برای کوچکتر از، ‘>=’ برای بزرگتر یا مساوی، ‘<=’ برای کوچکتر یا مساوی، و ‘=’ برای مساوی.

بسته‌هایی را فهرست می‌کند که این بسته آنها را دچار شکستگی یا ناسازگاری می‌کند؛ به عنوان مثال با نمایان ساختن باگ‌ها در زمانی که بسته‌های نام‌برده به این بسته وابسته هستند. نرم‌افزار نگهداری بسته اجازه نخواهد داد بسته‌های شکسته پیکربندی شوند؛ معمولاً راه‌حل، ارتقای بسته‌های ذکرشده در فیلد Breaks است.
بسته‌هایی را فهرست می‌کند که با این بسته تداخل دارند، به عنوان مثال با داشتن فایل‌هایی با نام‌های یکسان. نرم‌افزار نگهداری بسته اجازه نخواهد داد بسته‌های متداخل به طور همزمان نصب شوند. دو بسته دارای تداخل هر یک باید شامل یک خط Conflicts باشند که به دیگری اشاره می‌کند.
فهرستی از بسته‌ها که این بسته فایل‌های آنها را جایگزین می‌کند. این مورد برای اجازه دادن به این بسته جهت رونویسی فایل‌های بسته دیگر استفاده می‌شود و معمولاً همراه با فیلد Conflicts به کار می‌رود تا در صورتی که این بسته نیز فایل‌های مشابه با بسته متداخل داشته باشد، حذف بسته دیگر اجباری شود.

نحو فیلدهای Breaks، Conflicts و Replaces شامل فهرستی از نام‌های بسته‌ها است که با کاما (و فاصله‌های اختیاری) از هم جدا شده‌اند. در فیلدهای Breaks و Conflicts، کاما باید به عنوان “یا (OR)” خوانده شود. یک قید معماری اختیاری نیز می‌تواند با همان نحوی که در بالا ذکر شد به نام بسته اضافه شود، اما پیش‌فرض به جای معماری بسته باینری، any است. یک نسخه اختیاری نیز می‌تواند با همان نحوی که در بالا ذکر شد برای فیلدهای Breaks، Conflicts و Replaces مشخص گردد.

این فهرستی از بسته‌ها است که این بسته عملکرد آنها را بهبود می‌بخشد. این فیلد مشابه Suggests است اما در جهت عکس آن عمل می‌کند.
این فهرستی از بسته‌های مجازی است که این بسته ارائه می‌دهد. معمولاً این فیلد در مواردی به کار می‌رود که چندین بسته همگی یک سرویس یکسان را ارائه می‌دهند. برای مثال، sendmail و exim می‌توانند به عنوان سرور ایمیل عمل کنند، بنابراین هر دو یک بسته مشترک (“mail-transport-agent”) را ارائه می‌دهند که بسته‌های دیگر می‌توانند به آن وابسته باشند. این امر به sendmail یا exim اجازه می‌دهد تا به عنوان یک گزینه معتبر برای برآورده کردن وابستگی عمل کنند. این کار از لزوم آگاهی بسته‌های وابسته به سرور ایمیل از نام تمامی آنها و استفاده از ‘|’ برای جداسازی فهرست جلوگیری می‌کند.

نحو Provides فهرستی از نام‌های بسته‌ها است که با کاما (و فاصله‌های اختیاری) از هم جدا شده‌اند. یک قید معماری اختیاری نیز می‌تواند با همان نحو بالا به نام بسته اضافه شود. در صورت عدم درج، پیش‌فرض، معماری بسته باینری فعلی است. یک نسخه دقیق (مساوی) اختیاری نیز می‌تواند با همان نحو فوق مشخص شود (از نسخه dpkg 1.17.11 به بعد اعمال می‌شود).

این فیلد وابستگی، بسته‌های منبع اضافی را که در طول ساخت این بسته باینری استفاده شده‌اند، به منظور رعایت الزامات مجوزها فهرست می‌کند. این یک نشانگر برای نرم‌افزار نگهداری بایگانی است مبنی بر اینکه این بسته‌های منبع اضافی باید تا زمانی که این بسته باینری نگهداری می‌شود، حفظ شوند. این فیلد باید فهرستی جدا شده با کاما از نام‌های بسته‌های منبع باشد که روابط نسخه دقیق ‘=’ درون پرانتز در آن قرار گرفته است. توجه داشته باشید که نرم‌افزار نگهداری بایگانی به احتمال زیاد از پذیرش بارگذاری بسته‌ای که رابطه Built-Using آن در بایگانی قابل برآورده شدن نیست، خودداری خواهد کرد.
این فیلد وابستگی، بسته‌های منبع اضافی را که در طول ساخت این بسته باینری برای اهداف ساخت ایستا (مانند پیوند با کتابخانه‌های ایستا، ساخت برای زبان‌های متمرکز بر منبع مانند Go یا Rust، استفاده از کتابخانه‌های C/C++ فقط سرآیند (header-only)، تزریق بلوک‌های داده به کد، و غیره) استفاده شده‌اند، فهرست می‌کند. این فیلد برای ردیابی این موضوع مفید است که آیا در هنگام به‌روزرسانی بسته‌های منبع ذکرشده در اینجا (مثلاً به دلیل به‌روزرسانی‌های امنیتی)، این بسته نیاز به بازسازی دارد یا خیر. این فیلد باید فهرستی جدا شده با کاما از نام‌های بسته‌های منبع با روابط نسخه دقیق ‘=’ درون پرانتز باشد.

از نسخه dpkg 1.21.3 پشتیبانی می‌شود.

این فیلد قبلاً برای تعیین فهرستی جدا شده با فاصله از پروفایل‌های ساختی که این بسته باینری با آنها ساخته شده بود استفاده می‌شد (از dpkg 1.17.2 تا 1.18.18). اطلاعاتی که قبلاً در این فیلد قرار داشت اکنون در فایل .buildinfo که جایگزین آن شده است، یافت می‌شود.
این فیلد فهرستی جدا شده با فاصله از دلایلی را مشخص می‌کند که چرا این بسته به طور خودکار تولید شده است. بسته‌های باینری مشخص‌شده با این فیلد در فایل کنترل منبع الگوی debian/control ظاهر نخواهند شد. تنها دلیلی که در حال حاضر استفاده می‌شود debug-symbols است.
این فیلد فهرستی جدا شده با فاصله از شناسه‌های ساخت ELF (ELF build-ids) را مشخص می‌کند. این شناسه‌ها، شناسه‌های منحصربه‌فردی برای اشیاء ELF از نظر معنایی یکسان، برای هر یک از آنها در بسته هستند.

قالب یا روش محاسبه هر شناسه ساخت بر اساس طراحی تعریف نشده است.

Package: grep
Version: 3.11-3
Essential: yes
Priority: required
Section: utils
Maintainer: Anibal Monsalve Salazar <anibal@debian.org>
Architecture: sparc
Multi-Arch: foreign
Pre-Depends: libc6 (>= 2.34), libpcre2-8-0 (>= 10.32)
Provides: rgrep
Conflicts: rgrep
Installed-Size. 1267
Homepage: https://www.gnu.org/software/grep
Description: GNU grep, egrep and fgrep
 The GNU family of grep utilities may be the "fastest grep in the west".
 GNU grep is based on a fast lazy-state deterministic matcher (about
 twice as fast as stock Unix egrep) hybridized with a Boyer-Moore-Gosper
 search for a fixed string that eliminates impossible text from being
 considered by the full regexp matcher without necessarily having to
 look at every character. The result is typically many times faster
 than Unix grep or egrep. (Regular expressions containing backreferencing
 will run more slowly, however).

فیلد Build-Ids از یک نام نسبتاً عمومی خارج از زمینه اصلی خود در یک شیء ELF استفاده می‌کند، که هدفی بسیار خاص و قالبی اجرایی را دنبال می‌کند.

deb822(5), deb-src-control(5), deb(5), deb-version(7), debtags(1), dpkg(1), dpkg-deb(1).

2026-03-06 1.23.7-dirty