DNF5.CONF-VENDORPOLICY-V1_1(5) dnf5 DNF5.CONF-VENDORPOLICY-V1_1(5)

dnf5.conf-vendorpolicy-v1_1 - مشخصات خط‌مشی توزیع‌کننده در پیکربندی DNF5 (نسخه ۱.۱)

این سند ساختار و نحو پرونده‌های پیکربندی خط‌مشی تغییر توزیع‌کننده در DNF5 را با استفاده از قالب نسخه ۱.۱ و نسخه ۱.۲ شرح می‌دهد.

نسخه ۱.۲ کاملاً مشابه با نسخه ۱.۱ است، با این تفاوت که پشتیبانی از مقایسه‌گرهای رشته‌ای نفی‌شدهٔ بیشتری را اضافه می‌کند (بخش مقایسه‌گرهای نسخه ۱.۲ را ببینید).

برای دریافت اطلاعات کلی دربارهٔ پرونده‌های خط‌مشی تغییر توزیع‌کننده، مرجع پروندهٔ خط‌مشی تغییر توزیع‌کننده در DNF5 را ببینید: <#dnf5-vendor-change-policy-label>.

رشته (String)

نسخهٔ قالب پروندهٔ پیکربندی.

باید بر روی "1.1" یا "1.2" تنظیم شود.

این فیلد اجباری است و باید در بالاترین سطح پروندهٔ TOML مشخص شود.

مثال:

version = '1.2'

نکته:

برای اینکه پروندهٔ پیکربندی اثری بر خط‌مشی تغییر توزیع‌کننده داشته باشد، باید حداقل شامل یکی از فهرست‌های پشتیبانی‌شده باشد (به شرح زیر): outgoing_vendors، incoming_vendors، equivalent_vendors، outgoing_packages یا incoming_packages.

اگر پرونده شامل هیچ فهرستی نباشد، بارگیری شده و نسخهٔ آن اعتبارسنجی می‌شود، اما هیچ قاعده‌ای تعریف نخواهد کرد و بر رفتار مدیر توزیع‌کننده تأثیری نخواهد داشت.

فهرست‌های توزیع‌کنندهٔ زیر می‌توانند برای تعریف نگاشت‌های توزیع‌کننده استفاده شوند. تمام فهرست‌ها اختیاری هستند و می‌توانند آزادانه با یکدیگر ترکیب شوند. همهٔ شرایط به‌طور هم‌زمان ارزیابی می‌شوند.

[[outgoing_vendors]]
آرایه‌ای از جدول‌ها (Array of tables)

فهرست توزیع‌کنندگانی که تغییر از مبدأ آن‌ها مجاز است (توزیع‌کنندگان بسته‌های خروجی/نصب‌شده).

[[incoming_vendors]]
آرایه‌ای از جدول‌ها (Array of tables)

فهرست توزیع‌کنندگانی که تغییر به مقصد آن‌ها مجاز است (توزیع‌کنندگان بسته‌های ورودی/جدید).

[[equivalent_vendors]]
آرایه‌ای از جدول‌ها (Array of tables)

فهرست توزیع‌کنندگانی که متقابلاً هم‌ارز هستند. تغییرات در هر دو جهت بین تمام توزیع‌کنندگان موجود در این فهرست مجاز است.

نکته:

equivalent_vendors در واقع یک روش خلاصه‌نویسی است. این فیلد معادل درج همان توزیع‌کنندگان در هر دو بخش outgoing_vendors و incoming_vendors است.

مهم:

تغییر توزیع‌کننده در هنگام جایگزینی بسته تنها در صورتی مجاز است که هر دو شرط به‌طور هم‌زمان برقرار باشند:
  • توزیع‌کنندهٔ بستهٔ خروجی (نصب‌شده) در outgoing_vendors یا equivalent_vendors ذکر شده باشد (یا هر دو فیلد outgoing_vendors و equivalent_vendors وجود نداشته باشند، که در این حالت هر توزیع‌کننده‌ای مجاز است)
  • توزیع‌کنندهٔ بستهٔ ورودی (جدید) در incoming_vendors یا equivalent_vendors ذکر شده باشد (یا هر دو فیلد incoming_vendors و equivalent_vendors وجود نداشته باشند، که در این حالت هر توزیع‌کننده‌ای مجاز است)

هر ورودی در [[outgoing_vendors]]، [[incoming_vendors]] یا [[equivalent_vendors]] می‌تواند شامل فیلدهای زیر باشد:

رشته (String)

فیلد الزامی.

نام توزیع‌کننده یا الگوی مورد نظر برای تطبیق.

رشته (String)

فیلد اختیاری.

روش تطبیق مورد استفاده هنگام مقایسهٔ رشته‌های توزیع‌کننده.

پیش‌فرض: "EXACT"

مقادیر پشتیبانی‌شده:

  • "EXACT" - تطبیق دقیق (حساس به بزرگ و کوچکی حروف)
  • "IEXACT" - تطبیق دقیق (غیرحساس به بزرگ و کوچکی حروف)
  • "GLOB" - الگوی گلوب (حساس به بزرگ و کوچکی حروف)
  • "IGLOB" - الگوی گلوب (غیرحساس به بزرگ و کوچکی حروف)
  • "REGEX" - عبارت منظم (حساس به بزرگ و کوچکی حروف)
  • "IREGEX" - عبارت منظم (غیرحساس به بزرگ و کوچکی حروف)
  • "CONTAINS" - شامل رشته (حساس به بزرگ و کوچکی حروف)
  • "ICONTAINS" - شامل رشته (غیرحساس به بزرگ و کوچکی حروف)
  • "STARTSWITH" - شروع با (حساس به بزرگ و کوچکی حروف)
  • "ISTARTSWITH" - شروع با (غیرحساس به بزرگ و کوچکی حروف)
  • "ENDSWITH" - پایان با (حساس به بزرگ و کوچکی حروف)
  • "IENDSWITH" - پایان با (غیرحساس به بزرگ و کوچکی حروف)
  • "NOT_EXACT"، "NOT_IEXACT"، "NOT_GLOB"، "NOT_IGLOB"، "NOT_CONTAINS"، "NOT_ICONTAINS" - حالت‌های نفی‌شده

مقایسه‌گرهای نفی‌شدهٔ اضافی موجود در نسخه ۱.۲:

  • "NOT_STARTSWITH" - با آن شروع نمی‌شود (حساس به بزرگ و کوچکی حروف)
  • "NOT_ISTARTSWITH" - با آن شروع نمی‌شود (غیرحساس به بزرگ و کوچکی حروف)
  • "NOT_ENDSWITH" - با آن پایان نمی‌یابد (حساس به بزرگ و کوچکی حروف)
  • "NOT_IENDSWITH" - با آن پایان نمی‌یابد (غیرحساس به بزرگ و کوچکی حروف)
  • "NOT_REGEX" - با عبارت منظم مطابقت ندارد (حساس به بزرگ و کوچکی حروف)
  • "NOT_IREGEX" - با عبارت منظم مطابقت ندارد (غیرحساس به بزرگ و کوچکی حروف)
بولی (Boolean)

فیلد اختیاری.

اگر برابر با true باشد، توزیع‌کننده از قاعده مستثنی می‌شود. این قابلیت برای تعریف استثناها نسبت به قواعد کلی‌تر مفید است. قواعد (ورودی‌های توزیع‌کننده) به ترتیبی که تعریف شده‌اند پردازش می‌شوند. این بدان معناست که یک قاعدهٔ استثنا (exclude) باید پیش از قواعدی که توزیع‌کننده باید از آن‌ها مستثنی شود قرار گیرد.

پیش‌فرض: false

خط‌مشی‌های تغییر توزیع‌کننده را می‌توان با استفاده از فیلترهای بسته محدودتر کرد تا فقط بر روی بسته‌های مشخصی اعمال شوند. این فیلترها اختیاری هستند و امکان کنترل دقیق بر روی این موضوع را فراهم می‌سازند که کدام بسته‌ها مجاز به تغییر توزیع‌کننده باشند.

[[outgoing_packages]]
آرایه‌ای از جدول‌ها (Array of tables)

فهرستی از فیلترهای بسته که مشخص می‌کنند کدام بسته‌های خروجی (نصب‌شده) مجاز به تغییر توزیع‌کننده هستند. در صورت عدم درج، همهٔ بسته‌ها مجازند توزیع‌کنندهٔ فعلی خود را تغییر دهند.

[[incoming_packages]]
آرایه‌ای از جدول‌ها (Array of tables)

فهرستی از فیلترهای بسته که مشخص می‌کنند کدام بسته‌های ورودی (جدید) مجازند با تغییر توزیع‌کننده نصب شوند. در صورت عدم درج، همهٔ بسته‌ها صرف‌نظر از توزیع‌کننده مجاز به نصب خواهند بود.

هر ورودی در [[outgoing_packages]] یا [[incoming_packages]] می‌تواند شامل موارد زیر باشد:

آرایه‌ای از جدول‌ها (Array of tables)

فیلد الزامی.

فهرستی از شرایط فیلتر که همگی باید مطابقت داشته باشند تا بسته تحت تأثیر این قاعده قرار گیرد. هر فیلتر جدولی با فیلدهای زیر است:

رشته (String)

فیلد الزامی.

ویژگی بسته که فیلتر بر اساس آن اعمال می‌شود.

مقادیر پشتیبانی‌شده:

  • "name" - نام بسته
  • "source_name" - نام بستهٔ مبدأ (source package)
  • "evr" - رشتهٔ مبدأ-نسخه-انتشار (Epoch-Version-Release)
  • "epoch" - شمارهٔ دور (epoch)
  • "version" - رشتهٔ نسخه
  • "release" - رشتهٔ انتشار
  • "arch" - معماری بسته
  • "repoid" - شناسهٔ مخزن (repository ID)
  • "cmdline_repo" - نشان‌دهندهٔ این که آیا بسته از مخزن خط فرمان آمده است یا خیر (بولی)
رشته (String)

فیلد الزامی.

مقداری که باید با آن مطابقت داده شود.

  • برای فیلتر cmdline_repo، از "true"/"1" یا "false"/"0" استفاده کنید
  • برای فیلتر epoch، از یک رشتهٔ عددی استفاده کنید (مانند "0"، "1")
  • برای سایر فیلترها، از مقادیر رشته‌ای مناسب استفاده کنید
رشته (String)

فیلد اختیاری.

روش تطبیق مورد استفاده.

پیش‌فرض: "EXACT"

برای فیلترهای مبتنی بر رشته (name، source_name، arch، repoid):

همان مقادیر مربوط به مقایسه‌گر توزیع‌کننده: EXACT، NOT_EXACT، IEXACT، NOT_IEXACT، CONTAINS، NOT_CONTAINS، ICONTAINS، NOT_ICONTAINS، STARTSWITH، ISTARTSWITH، ENDSWITH، IENDSWITH، REGEX، IREGEX، GLOB، NOT_GLOB، IGLOB، NOT_IGLOB

نسخه ۱.۲ علاوه بر این از مقادیر زیر پشتیبانی می‌کند: NOT_STARTSWITH، NOT_ISTARTSWITH، NOT_ENDSWITH، NOT_IENDSWITH، NOT_REGEX، NOT_IREGEX

برای فیلترهای مبتنی بر نسخه (evr، epoch، version، release):

  • "EXACT" - برابر با
  • "NOT_EXACT" - نابرابر با
  • "GT" - بزرگ‌تر از
  • "GTE" - بزرگ‌تر یا مساوی با
  • "LT" - کوچک‌تر از
  • "LTE" - کوچک‌تر یا مساوی با

نکته:

فیلترهای مبتنی بر نسخه به‌جای مقایسهٔ لغوی رشته‌ها، از قواعد صحیح مقایسهٔ نسخه در RPM استفاده می‌کنند. این امر ترتیب صحیح نسخه‌ها را تضمین می‌کند (به عنوان مثال، "1.10" > "1.9").

نکته:

فیلتر cmdline_repo فقط از مقایسه‌گر "EXACT" پشتیبانی می‌کند.
بولی (Boolean)

فیلد اختیاری.

اگر برابر با true باشد، بسته‌هایی که با فیلترها مطابقت دارند از این قاعده مستثنی می‌شوند. این ویژگی برای تعریف استثناها کاربرد دارد. قواعد استثنا باید پیش از قواعدی که بسته‌ها باید از آن‌ها مستثنی شوند قرار گیرند.

پیش‌فرض: false

این مثال حداقل پیکربندی مورد نیاز را نشان می‌دهد که تغییر از "VendorA" به "VendorB" را مجاز می‌کند، اما برعکس آن مجاز نیست.

version = '1.2'
[[outgoing_vendors]]
vendor = 'VendorA'
[[incoming_vendors]]
vendor = 'VendorB'

این مثال مجاز کردن تغییر از هر توزیع‌کننده‌ای به "My Trusted Vendor" را نشان می‌دهد، اما برعکس آن مجاز نیست. عدم وجود outgoing_vendors به معنای مجاز بودن هر توزیع‌کننده‌ای است.

version = '1.2'
[[incoming_vendors]]
vendor = 'My Trusted Vendor'

این مثال توزیع‌کنندگانی را نشان می‌دهد که متقابلاً هم‌ارز هستند و امکان تغییر در هر دو جهت را فراهم می‌کنند.

version = '1.2'
# All following vendors are mutually equivalent
[[equivalent_vendors]]
vendor = 'Fedora Project'
[[equivalent_vendors]]
vendor = 'Red Hat'
comparator = 'ISTARTSWITH'
[[equivalent_vendors]]
vendor = 'CentOS'
comparator = 'ISTARTSWITH'

این مثال یک خط‌مشی توزیع‌کننده را برای توزیع‌کنندگان مرتبط با SUSE همراه با یک استثنا برای openSUSE Build Service نشان می‌دهد.

version = '1.2'
# All following vendors are mutually equivalent except excluded ones
[[equivalent_vendors]]
vendor = 'openSUSE Build Service'
comparator = 'ISTARTSWITH'
exclude = true
[[equivalent_vendors]]
vendor = 'SUSE'
comparator = 'ISTARTSWITH'
[[equivalent_vendors]]
vendor = 'openSUSE'
comparator = 'ISTARTSWITH'

این مثال ترکیب equivalent_vendors با incoming_vendors را نمایش می‌دهد؛ قابلیتی که در نسخهٔ "1.1" معرفی شد. در اینجا "First Vendor" و "Second Vendor" متقابلاً هم‌ارز هستند و هر دو می‌توانند به "Third Vendor" تغییر کنند.

version = '1.2'
[[equivalent_vendors]]
vendor = 'First Vendor'
[[equivalent_vendors]]
vendor = 'Second Vendor'
[[incoming_vendors]]
vendor = 'Third Vendor'

این مثال امکان نصب بسته‌ها از مخزن خط فرمان را از هر توزیع‌کننده‌ای فراهم کرده و محدودیت‌های توزیع‌کننده را دور می‌زند.

version = '1.2'
[[incoming_packages]]
filters = [
  { filter = 'cmdline_repo', value = 'true' }
]

این مثال امکان نصب بسته‌ها از مخزن خط فرمان را از هر توزیع‌کننده‌ای مجاز می‌سازد، به‌جز بسته‌هایی که نام آن‌ها با "mypackage" شروع می‌شود.

version = '1.2'
[[incoming_packages]]
filters = [
  { filter = 'name', value = 'mypackage', comparator = 'STARTSWITH' }
]
exclude = true
[[incoming_packages]]
filters = [
  { filter = 'cmdline_repo', value = 'true' }
]

این مثال امکان تغییر از هر توزیع‌کننده‌ای به "My Vendor" را فراهم می‌کند، اما فقط برای بسته‌های ورودی که نام بستهٔ مبدأ آن‌ها "mypackage" بوده و نسخهٔ آن‌ها بزرگ‌تر یا مساوی با "2.0" باشد.

version = '1.2'
[[incoming_packages]]
filters = [
  { filter = 'source_name', value = 'mypackage' },
  { filter = 'version', value = '2.0', comparator = 'GTE' }
]
[[incoming_vendors]]
vendor = 'My Vendor'

  • مرجع پروندهٔ خط‌مشی تغییر توزیع‌کننده در DNF5 <#dnf5-vendor-change-policy-label>
  • مرجع پروندهٔ خط‌مشی تغییر توزیع‌کننده در DNF5 - نسخه ۱.۰ <#dnf5-vendor-change-policy-v1-0-label>
  • dnf5.conf(5)، مرجع پیکربندی DNF5 <#dnf5-conf-label>

پروندهٔ AUTHORS.md را در توزیع منبع dnf5 ببینید.

مشارکت‌کنندگان در پروژهٔ dnf5.

September 6, 2026