| DNF5.CONF-VENDORPOLICY-V1_1(5) | dnf5 | DNF5.CONF-VENDORPOLICY-V1_1(5) |
نام (NAME)
dnf5.conf-vendorpolicy-v1_1 - مشخصات خطمشی توزیعکننده در پیکربندی DNF5 (نسخه ۱.۱)
توضیحات (DESCRIPTION)
این سند ساختار و نحو پروندههای پیکربندی خطمشی تغییر توزیعکننده در DNF5 را با استفاده از قالب نسخه ۱.۱ و نسخه ۱.۲ شرح میدهد.
نسخه ۱.۲ کاملاً مشابه با نسخه ۱.۱ است، با این تفاوت که پشتیبانی از مقایسهگرهای رشتهای نفیشدهٔ بیشتری را اضافه میکند (بخش مقایسهگرهای نسخه ۱.۲ را ببینید).
برای دریافت اطلاعات کلی دربارهٔ پروندههای خطمشی تغییر توزیعکننده، مرجع پروندهٔ خطمشی تغییر توزیعکننده در DNF5 را ببینید: <#dnf5-vendor-change-policy-label>.
ساختار پرونده (FILE STRUCTURE)
فیلدهای الزامی (Required Fields)
- version
- رشته (String)
نسخهٔ قالب پروندهٔ پیکربندی.
باید بر روی "1.1" یا "1.2" تنظیم شود.
این فیلد اجباری است و باید در بالاترین سطح پروندهٔ TOML مشخص شود.
مثال:
version = '1.2'
نکته:
اگر پرونده شامل هیچ فهرستی نباشد، بارگیری شده و نسخهٔ آن اعتبارسنجی میشود، اما هیچ قاعدهای تعریف نخواهد کرد و بر رفتار مدیر توزیعکننده تأثیری نخواهد داشت.
تعریف نگاشت توزیعکننده (Vendor Mapping Definition)
فهرستهای توزیعکنندهٔ زیر میتوانند برای تعریف نگاشتهای توزیعکننده استفاده شوند. تمام فهرستها اختیاری هستند و میتوانند آزادانه با یکدیگر ترکیب شوند. همهٔ شرایط بهطور همزمان ارزیابی میشوند.
- [[outgoing_vendors]]
- آرایهای
از جدولها
(Array of tables)
فهرست توزیعکنندگانی که تغییر از مبدأ آنها مجاز است (توزیعکنندگان بستههای خروجی/نصبشده).
- [[incoming_vendors]]
- آرایهای
از جدولها
(Array of tables)
فهرست توزیعکنندگانی که تغییر به مقصد آنها مجاز است (توزیعکنندگان بستههای ورودی/جدید).
- [[equivalent_vendors]]
- آرایهای
از جدولها
(Array of tables)
فهرست توزیعکنندگانی که متقابلاً همارز هستند. تغییرات در هر دو جهت بین تمام توزیعکنندگان موجود در این فهرست مجاز است.
نکته:
مهم:
- توزیعکنندهٔ بستهٔ خروجی (نصبشده) در outgoing_vendors یا equivalent_vendors ذکر شده باشد (یا هر دو فیلد outgoing_vendors و equivalent_vendors وجود نداشته باشند، که در این حالت هر توزیعکنندهای مجاز است)
- توزیعکنندهٔ بستهٔ ورودی (جدید) در incoming_vendors یا equivalent_vendors ذکر شده باشد (یا هر دو فیلد incoming_vendors و equivalent_vendors وجود نداشته باشند، که در این حالت هر توزیعکنندهای مجاز است)
فیلدهای ورودی توزیعکننده (Vendor Entry Fields)
هر ورودی در [[outgoing_vendors]]، [[incoming_vendors]] یا [[equivalent_vendors]] میتواند شامل فیلدهای زیر باشد:
- vendor
- رشته (String)
فیلد الزامی.
نام توزیعکننده یا الگوی مورد نظر برای تطبیق.
- comparator
- رشته (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" - با عبارت منظم مطابقت ندارد (غیرحساس به بزرگ و کوچکی حروف)
- exclude
- بولی (Boolean)
فیلد اختیاری.
اگر برابر با true باشد، توزیعکننده از قاعده مستثنی میشود. این قابلیت برای تعریف استثناها نسبت به قواعد کلیتر مفید است. قواعد (ورودیهای توزیعکننده) به ترتیبی که تعریف شدهاند پردازش میشوند. این بدان معناست که یک قاعدهٔ استثنا (exclude) باید پیش از قواعدی که توزیعکننده باید از آنها مستثنی شود قرار گیرد.
پیشفرض: false
فیلتر کردن بستهها (Package Filtering)
خطمشیهای تغییر توزیعکننده را میتوان با استفاده از فیلترهای بسته محدودتر کرد تا فقط بر روی بستههای مشخصی اعمال شوند. این فیلترها اختیاری هستند و امکان کنترل دقیق بر روی این موضوع را فراهم میسازند که کدام بستهها مجاز به تغییر توزیعکننده باشند.
- [[outgoing_packages]]
- آرایهای
از جدولها
(Array of tables)
فهرستی از فیلترهای بسته که مشخص میکنند کدام بستههای خروجی (نصبشده) مجاز به تغییر توزیعکننده هستند. در صورت عدم درج، همهٔ بستهها مجازند توزیعکنندهٔ فعلی خود را تغییر دهند.
- [[incoming_packages]]
- آرایهای
از جدولها
(Array of tables)
فهرستی از فیلترهای بسته که مشخص میکنند کدام بستههای ورودی (جدید) مجازند با تغییر توزیعکننده نصب شوند. در صورت عدم درج، همهٔ بستهها صرفنظر از توزیعکننده مجاز به نصب خواهند بود.
فیلدهای ورودی فیلتر بسته (Package Filter Entry Fields)
هر ورودی در [[outgoing_packages]] یا [[incoming_packages]] میتواند شامل موارد زیر باشد:
- filters
- آرایهای
از جدولها
(Array of tables)
فیلد الزامی.
فهرستی از شرایط فیلتر که همگی باید مطابقت داشته باشند تا بسته تحت تأثیر این قاعده قرار گیرد. هر فیلتر جدولی با فیلدهای زیر است:
- filter
- رشته (String)
فیلد الزامی.
ویژگی بسته که فیلتر بر اساس آن اعمال میشود.
مقادیر پشتیبانیشده:
- "name" - نام بسته
- "source_name" - نام بستهٔ مبدأ (source package)
- "evr" - رشتهٔ مبدأ-نسخه-انتشار (Epoch-Version-Release)
- "epoch" - شمارهٔ دور (epoch)
- "version" - رشتهٔ نسخه
- "release" - رشتهٔ انتشار
- "arch" - معماری بسته
- "repoid" - شناسهٔ مخزن (repository ID)
- "cmdline_repo" - نشاندهندهٔ این که آیا بسته از مخزن خط فرمان آمده است یا خیر (بولی)
- value
- رشته (String)
فیلد الزامی.
مقداری که باید با آن مطابقت داده شود.
- برای فیلتر cmdline_repo، از "true"/"1" یا "false"/"0" استفاده کنید
- برای فیلتر epoch، از یک رشتهٔ عددی استفاده کنید (مانند "0"، "1")
- برای سایر فیلترها، از مقادیر رشتهای مناسب استفاده کنید
- comparator
- رشته (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" - کوچکتر یا مساوی با
نکته:
نکته:
- exclude
- بولی (Boolean)
فیلد اختیاری.
اگر برابر با true باشد، بستههایی که با فیلترها مطابقت دارند از این قاعده مستثنی میشوند. این ویژگی برای تعریف استثناها کاربرد دارد. قواعد استثنا باید پیش از قواعدی که بستهها باید از آنها مستثنی شوند قرار گیرند.
پیشفرض: false
مثالها (EXAMPLES)
مثال ۱: مجاز کردن تغییر از "VendorA" به "VendorB"
این مثال حداقل پیکربندی مورد نیاز را نشان میدهد که تغییر از "VendorA" به "VendorB" را مجاز میکند، اما برعکس آن مجاز نیست.
version = '1.2' [[outgoing_vendors]] vendor = 'VendorA' [[incoming_vendors]] vendor = 'VendorB'
مثال ۲: مجاز کردن تغییر از هر توزیعکنندهای به "My Trusted Vendor"
این مثال مجاز کردن تغییر از هر توزیعکنندهای به "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'
همچنین ببینید (SEE ALSO)
- مرجع پروندهٔ خطمشی تغییر توزیعکننده در DNF5 <#dnf5-vendor-change-policy-label>
- مرجع پروندهٔ خطمشی تغییر توزیعکننده در DNF5 - نسخه ۱.۰ <#dnf5-vendor-change-policy-v1-0-label>
- dnf5.conf(5)، مرجع پیکربندی DNF5 <#dnf5-conf-label>
نویسنده (AUTHOR)
پروندهٔ AUTHORS.md را در توزیع منبع dnf5 ببینید.
حق نشر (COPYRIGHT)
مشارکتکنندگان در پروژهٔ dnf5.
| September 6, 2026 |