deb-substvars(5) dpkg suite deb-substvars(5)

deb-substvars - متغیرهای جایگزینی مبدا دبیان

debian/substvars, debian/binary-package.substvars, variables

پیش از آنکه dpkg-source، dpkg-gencontrol و dpkg-genchanges اطلاعات کنترلی خود را بنویسند (در پرونده کنترل مبدا .dsc برای dpkg-source و در خروجی استاندارد برای dpkg-gencontrol و dpkg-genchanges)، برخی جایگزینی‌های متغیر را روی پرونده خروجی اعمال می‌کنند.

یک جایگزینی متغیر به شکل ${variable-name} است. نام متغیرها شامل نویسه‌های الفبایی-عددی (a-zA-Z0-9)، خط پیوند (-) و دو نقطه (:) بوده و با یک نویسه الفبایی-عددی آغاز می‌شوند و به بزرگی و کوچکی حروف حساس هستند، حتی اگر به موجودیت‌های دیگری اشاره کنند که حالت حروف را حفظ می‌کنند. جایگزینی متغیرها به صورت مکرر انجام می‌شود تا زمانی که هیچ متغیری باقی نماند؛ کل متن فیلد پس از جایگزینی مجدداً برای یافتن متغیرهای بیشتر بررسی می‌شود.

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

عملگرهای زیر پشتیبانی می‌شوند:

=
یک متغیر جایگزینی عادی را انتساب می‌دهد.
?=
یک متغیر جایگزینی اختیاری را انتساب می‌دهد که حتی در صورت استفاده نشدن نیز هیچ هشداری ایجاد نمی‌کند.

پشتیبانی شده از dpkg 1.21.8.

!=
یک متغیر جایگزینی الزامی را انتساب می‌دهد که اگر استفاده نشود با خطا متوقف خواهد شد.

پشتیبانی شده از dpkg 1.22.7.

$=
یک متغیر جایگزینی ضمنی را انتساب می‌دهد که اگر فیلد مربوطه در پرونده‌های کنترل .dsc و .deb تعریف نشده باشد، به طور خودکار به عنوان یک فیلد نمونه‌سازی می‌شود.

نام متغیر باید به عنوان یک فضای نام که به دنبال آن یک دونقطه (‘:’) و سپس نام فیلد می‌آید تشکیل شود، مانند tool:Depends. تمام متغیرهای ضمنی برای هر فضای نامی که با همان فیلد مطابقت دارند، با استفاده از یک جداکننده فیلد شناخته‌شده یا در صورت ناشناخته بودن جداکننده با فاصله به هم متصل می‌شوند.

پشتیبانی شده از dpkg 1.23.0.

برای نمونه: "some-package:Depends?=other-package (= 1.0), the-package".

متغیرها را می‌توان با استفاده از گزینه عمومی -V تنظیم کرد. همچنین می‌توان آن‌ها را در پرونده debian/substvars (یا هر پرونده دیگری که با گزینه عمومی -T مشخص شده باشد) تعیین کرد.

پس از انجام تمام جایگزینی‌ها، هر بار تکرار رشته ${} (که یک متغیر جایگزینی واقعی نیست) با علامت $ جایگزین می‌شود. این می‌تواند به عنوان یک توالی گریز (escape sequence) مانند ${}{VARIABLE} استفاده شود که در خروجی نهایی به صورت ${VARIABLE} ظاهر خواهد شد.

اگر به متغیری ارجاع داده شود اما تعریف نشده باشد، هشداری صادر شده و مقدار خالی برای آن در نظر گرفته می‌شود.

اگرچه جایگزینی متغیر در تمام فیلدهای کنترلی انجام می‌شود، اما برخی از این فیلدها در طول فرآیند ساخت مورد استفاده قرار می‌گیرند، زمانی که جایگزینی هنوز رخ نداده است. به همین دلیل است که نمی‌توانید از متغیرها در فیلدهای Package، Source و Architecture استفاده کنید.

جایگزینی متغیر روی محتوای فیلدها پس از تجزیه آن‌ها انجام می‌شود، بنابراین اگر می‌خواهید متغیری در چندین خط گسترش یابد، نیازی نیست بعد از خط جدید فاصله بگذارید. این کار هنگام خروجی فیلد به طور ضمنی انجام می‌شود. برای مثال، اگر متغیر ${Description} روی "foo is bar.${Newline}foo is great." تنظیم شده باشد و فیلد زیر را داشته باشید:

Description: foo application
 ${Description}
 .
 More text.

نتیجه به این شکل خواهد بود:

Description: foo application
 foo is bar.
 foo is great.
 .
 More text.

علاوه بر این، متغیرهای استاندارد زیر همیشه در دسترس هستند:

معماری میزبان فعلی (یعنی معماری‌ای که بسته برای آن ساخته می‌شود، معادل DEB_HOST_ARCH).
نام توزیع‌کننده فعلی (از dpkg 1.20.0). این مقدار از فیلد Vendor برای پرونده مبدا توزیع‌کننده فعلی، به شکلی که dpkg-vendor(1) آن را بازیابی می‌کند، به دست می‌آید.
شناسه توزیع‌کننده فعلی (از dpkg 1.20.0). این حالت حروف کوچک vendor:Name است.
نگارش بسته مبدا (از dpkg 1.13.19).
نگارش بالادستی بسته مبدا، شامل epoch نگارش دبیان در صورت وجود (از dpkg 1.13.19).
نگارش بسته دودویی (که ممکن است برای مثال در یک binNMU با source:Version تفاوت داشته باشد؛ از dpkg 1.13.19).
نگارش بسته مبدا (از پرونده changelog). این متغیر اکنون منسوخ شده (obsolete) است و در صورت استفاده خطا تولید می‌کند زیرا معنای آن با عملکردش متفاوت است؛ لطفاً بر حسب نیاز از source:Version یا binary:Version استفاده کنید.
شرح مختصر بسته مبدا، استخراج‌شده از فیلد Description در بند مبدا، در صورت وجود (از dpkg 1.19.0).
توضیحات تفصیلی بسته مبدا، استخراج‌شده از فیلد Description در بند مبدا، در صورت وجود (از dpkg 1.19.0).
اندازه تقریبی کل پرونده‌های نصب‌شده بسته. این مقدار در فیلد متناظر پرونده کنترل کپی می‌شود؛ تنظیم آن مقدار آن فیلد را تغییر می‌دهد. اگر این متغیر تنظیم نشود، dpkg-gencontrol مقدار پیش‌فرض را با جمع اندازه هر پرونده عادی و پیوند نمادین (گرد شده به واحدهای ۱ کیلوبایتی) و مبنای ۱ کیلوبایت برای هر نوع شیء دیگر سیستم پرونده محاسبه می‌کند، که پیوندهای سخت فقط یک بار به عنوان پرونده عادی شمارش می‌شوند.

توجه: در نظر داشته باشید که این همیشه می‌تواند تنها یک تخمین باشد، زیرا اندازه واقعی مورد استفاده در سیستم نصب‌شده بستگی زیادی به سیستم پرونده مورد استفاده و پارامترهای آن دارد که ممکن است فضای بیشتر یا کمتری نسبت به مقدار تعیین‌شده در این فیلد مصرف کند.

فضای دیسک اضافی مورد استفاده هنگام نصب بسته. اگر این متغیر تنظیم شود، مقدار آن به متغیر Installed-Size (چه به طور صریح تنظیم شده باشد یا مقدار پیش‌فرض باشد) پیش از کپی شدن در فیلد کنترل Installed-Size اضافه می‌شود.
مقدار فیلد بند مبدا field-name (که باید با حروف‌چینی رسمی و بزرگ و کوچک استاندارد وارد شود؛ از dpkg 1.18.11). تنظیم این متغیرها هیچ اثری به جز در مکان‌هایی که به صراحت گسترش یافته‌اند ندارد. این متغیرها تنها هنگام تولید پرونده‌های کنترل دودویی در دسترس هستند.
مقدار فیلد خروجی field-name (که باید با حروف‌چینی استاندارد وارد شود). تنظیم این متغیرها هیچ اثری به جز در مکان‌هایی که به صراحت گسترش یافته‌اند ندارد.
نگارش قالب پرونده .changes تولید شده توسط این نگارش از اسکریپت‌های بسته‌بندی مبدا. اگر این متغیر را تنظیم کنید، محتوای فیلد Format در پرونده .changes نیز تغییر خواهد کرد.
هر یک از این متغیرها نویسه متناظر با نام خود را نگه می‌دارند.
تنظیمات متغیر با نام‌هایی با این قالب توسط dpkg-shlibdeps ایجاد می‌شوند.
نگارش بالادستی dpkg (از dpkg 1.13.19).
نگارش کامل dpkg (از dpkg 1.13.19).

فهرست متغیرها و مقادیر جایگزینی.

dpkg(1), dpkg-vendor(1), dpkg-genchanges(1), dpkg-gencontrol(1), dpkg-shlibdeps(1), dpkg-source(1).

2026-03-06 1.23.7-dirty