.\" Man page generated from reStructuredText .\" by the Docutils 0.23 manpage writer. . . .nr rst2man-indent-level 0 . .de1 rstReportMargin \\$1 \\n[an-margin] level \\n[rst2man-indent-level] level margin: \\n[rst2man-indent\\n[rst2man-indent-level]] - \\n[rst2man-indent0] \\n[rst2man-indent1] \\n[rst2man-indent2] .. .de1 INDENT .\" .rstReportMargin pre: . RS \\$1 . nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin] . nr rst2man-indent-level +1 .\" .rstReportMargin post: .. .de UNINDENT . RE .\" indent \\n[an-margin] .\" old: \\n[rst2man-indent\\n[rst2man-indent-level]] .nr rst2man-indent-level -1 .\" new: \\n[rst2man-indent\\n[rst2man-indent-level]] .in \\n[rst2man-indent\\n[rst2man-indent-level]]u .. .TH "LIBDNF5-ACTIONS" "8" "Sep 06, 2026" "" "dnf5" .SH "نام (NAME)" libdnf5-actions \- افزونه اقدامات libdnf5 .SH "توضیحات (DESCRIPTION)" .sp این افزونه امکان تعریف اقداماتی را فراهم می‌کند که از طریق قلاب‌های بازخوانی (callback hooks) در libdnf5 اجرا می‌شوند. هر اقدام به یک بازخوانی مشخص متصل می‌شود. اقدامات برای بازخوانی‌های \fBgoal_resolved\fP، \fBpre_transaction\fP و \fBpost_transaction\fP می‌توانند یک قاعده پالایش (مشابه glob) روی NEVRA بسته یا فایل‌های بسته و همچنین ورودی یا خروجی بودن بسته تعریف کنند. .SH "پیکربندی (CONFIGURATION)" .sp این افزونه پیکربندی استاندارد را گسترش نمی‌دهد؛ با این حال، فایل‌های اقدامات («actions») را می‌خواند. .sp فایل‌های اقدامات از دایرکتوری \fB/actions.d/\fP خوانده می‌شوند. فقط فایل‌های دارای پسوند «.actions» خوانده می‌شوند. فایل‌های اقدامات به ترتیب لغوی (مرتب‌شده بر اساس نام فایل) با مقایسه مقادیر کاراکتری، بدون در نظر گرفتن محلی‌سازی (locale)، خوانده می‌شوند. .SH "قالب فایل اقدامات (ACTIONS FILE FORMAT)" .sp خطوط خالی و خطوطی که با کاراکتر «#» آغاز می‌شوند (خطوط توضیحات) نادیده گرفته می‌شوند. .sp هر خط غیرتوضیحی یک اقدام را تعریف می‌کند و از پنج بخش تشکیل شده که با دونقطه از یکدیگر جدا می‌شوند: \fBcallback_name:package_filter:direction:options:command\fP\&. .sp \fBcallback_name\fP .INDENT 0.0 .INDENT 3.5 .INDENT 0.0 .IP \(bu 2 \fBpre_base_setup\fP .IP \(bu 2 \fBpost_base_setup\fP .IP \(bu 2 \fBrepos_configured\fP (در نسخه 1.0.0 اضافه شد) .IP \(bu 2 \fBrepos_loaded\fP (در نسخه 1.0.0 اضافه شد) .IP \(bu 2 \fBpre_add_cmdline_packages\fP (در نسخه 1.0.0 اضافه شد) .IP \(bu 2 \fBpost_add_cmdline_packages\fP (در نسخه 1.0.0 اضافه شد) .IP \(bu 2 \fBgoal_resolved\fP (در نسخه 1.3.0 اضافه شد) .IP \(bu 2 \fBpre_transaction\fP .IP \(bu 2 \fBpost_transaction\fP .UNINDENT .UNINDENT .UNINDENT .INDENT 0.0 .TP .B \fBpackage_filter\fP یک قاعده پالایش (مشابه glob) که بر روی NEVRA بسته (همچنین به شکل‌های کوتاه‌شده) یا فایل‌های بسته اعمال می‌شود. .sp یک فیلتر خالی به معنای اجرای یک‌باره دستور بدون هیچ اطلاعاتی درباره بسته است. فیلتر «*» به معنای اجرای دستور به ازای هر بسته در تراکنش است که با فیلتر \fBdirection\fP مطابقت داشته باشد. فیلتر تنها برای بازخوانی‌های \fBgoal_resolved\fP، \fBpre_transaction\fP و \fBpost_transaction\fP می‌تواند غیرخالی باشد. .TP .B \fBdirection\fP بسته‌ها را بر اساس جهت آن‌ها (ورود به سیستم/خروج از سیستم) در یک تراکنش پالایش می‌کند. اگر خالی باشد، فیلتر اعمال نمی‌شود. این فیلتر تنها زمانی می‌تواند غیرخالی باشد که با یک \fBpackage_filter\fP غیرخالی ترکیب شده باشد. .INDENT 7.0 .IP \(bu 2 \fBin\fP \- بسته‌های ورودی به سیستم (تنزل، نصب، نصب مجدد، ارتقا) .IP \(bu 2 \fBout\fP \- بسته‌های خروجی از سیستم (ارتقایافته، تنزل‌یافته، مجدداً نصب‌شده، حذف‌شده، جایگزین/منسوخ‌شده) .UNINDENT .TP .B \fBoptions\fP گزینه‌ها با فاصله از هم جدا می‌شوند. یک فاصله درون یک گزینه می‌تواند با استفاده از اسکیپ نوشته شود. .INDENT 7.0 .IP \(bu 2 \fBenabled=\fP \- مقدار \fB\fP مشخص می‌کند که اقدام چه زمانی فعال است (در نسخه 0.3.0 اضافه شد) .INDENT 2.0 .IP \(bu 2 \fB1\fP \- اقدام همیشه فعال است .IP \(bu 2 \fBhost\-only\fP \- اقدام فقط برای عملیات بر روی میزبان فعال است .IP \(bu 2 \fBinstallroot\-only\fP \- اقدام فقط برای عملیات در «installroot» جایگزین فعال است .UNINDENT .IP \(bu 2 \fBmode=\fP \- مقدار \fB\fP حالت ارتباطی افزونه اقدامات را مشخص می‌کند (در نسخه 1.2.0 اضافه شد) .INDENT 2.0 .IP \(bu 2 .INDENT 2.0 .TP .B \fBplain\fP \- حالت ارتباطی اولیه و پیش‌فرض. داده‌ها در زمان راه‌اندازی فرآیند فقط از طریق آرگومان‌ها به آن ارسال می‌شوند. فرآیند می‌تواند با نوشتن در خروجی استاندارد، داده‌ها را به افزونه اقدامات بفرستد. .UNINDENT .IP \(bu 2 .INDENT 2.0 .TP .B \fBjson\fP \- این حالت یک کانال ارتباطی دوطرفه بین افزونه اقدامات و فرآیند با استفاده از مدل درخواست-پاسخ برقرار می‌کند. فرآیند درخواست‌ها را در خروجی استاندارد می‌نویسد و پاسخ‌ها را از ورودی استاندارد می‌خواند. تمامی ارتباطات در قالب JSON انجام می‌شود (در نسخه 1.2.0 اضافه شد). .UNINDENT .UNINDENT .IP \(bu 2 \fBraise_error=\fP \- مقدار \fB\fP نحوه رسیدگی به خطاهای فرآیند اقدام را مشخص می‌کند. اینکه چه رخ می‌دهد اگر فرآیند اقدام شروع نشود، با کد خروج غیرصفر پایان یابد، به طور غیرعادی پایان یابد (سیگنال دریافت کند)، یا خطایی در حین ارتباط رخ دهد (خطای نحو، قطعی ارتباط، شکست در پردازش خط خروجی در حالت ارتباطی ساده). اگر این گزینه وجود نداشته باشد، برای سازگاری با گذشته \fBraise_error=0\fP در نظر گرفته می‌شود (در نسخه 1.4.0 اضافه شد). .INDENT 2.0 .IP \(bu 2 \fB0\fP \- خطاها در لاگ ثبت می‌شوند .IP \(bu 2 \fB1\fP \- یک استثنا ایجاد می‌شود .UNINDENT .UNINDENT .TP .B \fBcommand\fP هر فایل اجرایی به همراه آرگومان‌ها. .sp آرگومان‌ها با فاصله از هم جدا می‌شوند. یک فاصله درون یک آرگومان می‌تواند با استفاده از اسکیپ نوشته شود. اسکیپ کردن همچنین می‌تواند برای جلوگیری از جایگزینی و ارسال کاراکترهای خاص استفاده شود: \ea، \eb، \ef، \en، \er، \et، \ev. برداشتن اسکیپ آرگومان‌ها پس از جایگزینی انجام می‌شود. .sp متغیرهای زیر در دستور جایگزین خواهند شد: .INDENT 7.0 .IP \(bu 2 \fB${pid}\fP \- شناسه فرآیند .IP \(bu 2 \fB${plugin.version}\fP \- نسخه افزونه اقدامات (در نسخه 0.3.0 اضافه شد) .IP \(bu 2 \fB${conf.}\fP \- گزینه از پیکربندی پایه .IP \(bu 2 \fB${conf..[=]}\fP \- فهرستی از جفت‌های «repoid.option=value» (در نسخه 1.1.0 اضافه شد) .IP \(bu 2 \fB${var.}\fP \- متغیر .IP \(bu 2 \fB${tmp.}\fP \- متغیری که فقط در زمینه افزونه اقدامات وجود دارد .IP \(bu 2 \fB${pkg.}\fP \- مقدار صفت بسته .INDENT 2.0 .IP \(bu 2 \fB${pkg.name}\fP \- نام بسته .IP \(bu 2 \fB${pkg.arch}\fP \- معماری بسته .IP \(bu 2 \fB${pkg.version}\fP \- نسخه بسته .IP \(bu 2 \fB${pkg.release}\fP \- انتشار بسته .IP \(bu 2 \fB${pkg.epoch}\fP \- مبدا زمانی (epoch) بسته .IP \(bu 2 \fB${pkg.na}\fP \- نام.معماری بسته .IP \(bu 2 \fB${pkg.evr}\fP \- مبدا زمانی\-نسخه\-انتشار بسته .IP \(bu 2 \fB${pkg.nevra}\fP \- مقدار nevra بسته (مبدا زمانی 0 پنهان است) .IP \(bu 2 \fB${pkg.full_nevra}\fP \- مقدار کامل nevra بسته (مبدا زمانی همیشه وجود دارد) name\-epoch:version\-release.arch .IP \(bu 2 \fB${pkg.repo_id}\fP \- شناسه مخزن بسته .IP \(bu 2 \fB${pkg.license}\fP \- مجوز بسته .IP \(bu 2 \fB${pkg.location}\fP \- مسیر/موقعیت نسبی بسته از repodata .IP \(bu 2 \fB${pkg.vendor}\fP \- ارائه‌دهنده بسته .IP \(bu 2 \fB${pkg.action}\fP \- اقدام انجام‌شده بر روی بسته: .INDENT 2.0 .IP \(bu 2 \fBI\fP \- بسته تازه نصب‌شده .IP \(bu 2 \fBU\fP \- بسته نصب‌شده به عنوان ارتقا .IP \(bu 2 \fBD\fP \- بسته نصب‌شده به عنوان تنزل .IP \(bu 2 \fBR\fP \- بسته استفاده‌شده برای نصب مجدد .IP \(bu 2 \fBE\fP \- بسته پاک‌شده (حذف‌شده) از سیستم .IP \(bu 2 \fBO\fP \- بسته جایگزین‌شده (منسوخ‌شده/ارتقایافته/تنزل‌یافته/مجدداً نصب‌شده/حذف‌شده) .IP \(bu 2 \fB?\fP \- بسته با تغییر دلیل نصب .UNINDENT .UNINDENT .UNINDENT .sp دستور به ازای هر بسته‌ای که با \fBpackage_filter\fP و \fBdirection\fP مطابقت داشته باشد ارزیابی خواهد شد. با این حال، پس از جایگزینی متغیرها، هرگونه دستور تکراری حذف می‌شود و هر دستور فقط یک بار در هر تراکنش اجرا خواهد شد. دستورات به صورت متوالی اجرا می‌شوند. هیچ موازی‌سازی وجود ندارد. جایگزینی آرگومان‌ها پس از تکمیل دستور قبلی انجام می‌شود. این ویژگی به جایگزینی اجازه می‌دهد از نتایج دستورات قبلی استفاده کند. ترتیب اجرای دستورات از ترتیب موجود در فایل‌های اقدامات پیروی می‌کند، اما ممکن است با ترتیب بسته‌ها در تراکنش متفاوت باشد. به عبارت دیگر، هنگامی که چند خط اقدام برای یک \fBpackage_filter\fP و \fBdirection\fP یکسان تعریف می‌کنید، این خطوط در زمانی که \fBpackage_filter\fP و \fBdirection\fP با بسته‌ای مطابقت یابد، به ترتیبی که در فایل اقدام تعریف شده‌اند اجرا خواهند شد. با این حال، زمان فراخوانی یک \fBpackage_filter\fP مشخص به موقعیت بسته مربوطه در تراکنش بستگی دارد. .sp جفت‌های \fBrepoid.option=value\fP در فهرست با کاراکتر «,» از هم جدا می‌شوند. کاراکتر «,» درون مقدار با توالی اسکیپ \fB\(dq\ex2C\(dq\fP جایگزین می‌شود. اگر از \fBvalue_pattern\fP استفاده شود، فقط جفت‌های دارای مقدار منطبق فهرست می‌شوند. \fBrepoid_pattern\fP و \fBvalue_pattern\fP می‌توانند شامل الگوهای منطبق‌سازی (globs) باشند. .UNINDENT .SH "قالب خروجی استاندارد فرآیند اقدام در حالت ارتباطی PLAIN (ACTION PROCESS STANDARD OUTPUT FORMAT IN PLAIN COMMUNICATION MODE)" .sp خروجی استاندارد هر اقدام (دستور) اجراشده دریافت و پردازش می‌شود. هر خط خروجی می‌تواند مقدار یک گزینه پیکربندی پایه، مقدار یک گزینه پیکربندی را در مخازن منطبق، یا یک متغیر را تغییر دهد. همچنین می‌تواند یک متغیر افزونه اقدامات را تنظیم یا لغو کند. مقدار این متغیر با استفاده از جایگزینی \fB${tmp.}\fP برای دستورات بعدی در دسترس خواهد بود. .sp اقدامات باید پیکربندی مخازن را در قلاب \fBrepos_configured\fP تغییر دهند. در این مرحله، پیکربندی مخازن بارگذاری شده اما هنوز اعمال نشده است. .sp از نسخه 1.4.0، خط خروجی می‌تواند پیامی را در لاگر بنویسد، یک استثنای توقف یا یک استثنای خطا ایجاد کند. .SS "قالب خط خروجی (Output line format)" .INDENT 0.0 .IP \(bu 2 \fBtmp.=\fP \- مقدار متغیر افزونه اقدامات را تنظیم می‌کند .IP \(bu 2 \fBtmp.\fP \- در صورت وجود متغیر افزونه اقدامات، آن را حذف می‌کند .IP \(bu 2 \fBconf.=\fP \- مقدار گزینه را در پیکربندی پایه تنظیم می‌کند .IP \(bu 2 \fBconf..=\fP \- مقدار گزینه را در مخازن منطبق تنظیم می‌کند (در نسخه 1.1.0 اضافه شد) .IP \(bu 2 \fBvar.=\fP \- مقدار متغیر را تنظیم می‌کند .IP \(bu 2 \fBstop=\fP \- یک استثنای توقف همراه با ایجاد می‌کند (در نسخه 1.4.0 اضافه شد) .IP \(bu 2 \fBerror=\fP \- پیام خطای در لاگ ثبت می‌شود یا در صورت \fBraise_error=1\fP یک استثنای خطا همراه با ایجاد می‌کند (در نسخه 1.4.0 اضافه شد) .IP \(bu 2 \fBlog.=\fP \- پیام را با اولویت در لاگر می‌نویسد (در نسخه 1.4.0 اضافه شد) .INDENT 2.0 .INDENT 3.5 سطوح: \fBCRITICAL\fP، \fBERROR\fP، \fBWARNING\fP، \fBNOTICE\fP، \fBINFO\fP، \fBDEBUG\fP، \fBTRACE\fP .UNINDENT .UNINDENT .UNINDENT .SH "پیام‌ها در حالت ارتباطی JSON (MESSAGES IN JSON COMMUNICATION MODE)" .sp حالت ارتباطی «json» یک کانال ارتباطی دوطرفه بین افزونه اقدامات و فرآیند با استفاده از مدل درخواست-پاسخ برقرار می‌کند. فرآیند درخواست‌ها را در خروجی استاندارد می‌نویسد و پاسخ‌های افزونه اقدامات را از ورودی استاندارد می‌خواند. تمامی ارتباطات در قالب JSON مدیریت می‌شوند. .sp \fIقالب پیام درخواست از فرآیند:\fP .INDENT 0.0 .INDENT 3.5 .sp .EX {\(dqop\(dq:\(dq\(dq, \(dqdomain\(dq:\(dq\(dq, \(dqargs\(dq:{}} .EE .UNINDENT .UNINDENT .sp \fIقالب پاسخ:\fP .INDENT 0.0 .INDENT 3.5 .sp .EX {\(dqop\(dq:\(dqreply\(dq, \(dqrequested_op\(dq:\(dq\(dq, \(dqdomain\(dq:\(dq\(dq, \(dqstatus\(dq:\(dqOK\(dq, \(dqreturn\(dq:{}} .EE .UNINDENT .UNINDENT .sp \fIقالب پاسخ همراه با پیام خطا:\fP .INDENT 0.0 .INDENT 3.5 .sp .EX {\(dqop\(dq:\(dqreply\(dq, \(dqrequested_op\(dq:\(dq\(dq, \(dqdomain\(dq:\(dq\(dq, \(dqstatus\(dq:\(dqERROR\(dq, \(dqmessage\(dq:\(dq\(dq} .EE .UNINDENT .UNINDENT .SS "مقادیر پشتیبانی‌شده برای (Supported values)" .INDENT 0.0 .IP \(bu 2 \fBget\fP \- درخواست برای دریافت مقادیر .IP \(bu 2 \fBset\fP \- درخواست برای تنظیم یک مقدار .IP \(bu 2 \fBnew\fP \- ایجاد یک پیکربندی مخزن جدید .IP \(bu 2 \fBlog\fP \- نوشتن یک پیام در لاگر (در نسخه 1.4.0 اضافه شد) .IP \(bu 2 \fBstop\fP \- ایجاد یک استثنای توقف همراه با پیام (در نسخه 1.4.0 اضافه شد) .IP \(bu 2 \fBerror\fP \- پیام خطا در لاگ ثبت می‌شود یا در صورت \fBraise_error=1\fP یک استثنای خطا همراه با پیام ایجاد می‌کند (در نسخه 1.4.0 اضافه شد) .UNINDENT .SS "توضیحات عملیات \fBget\fP (Description of the get operation)" .sp عملیات \fBget\fP برای چند \fB\fP تعریف شده است. .INDENT 0.0 .IP \(bu 2 \fBconf\fP \- درخواست خواندن مقدار یک پیکربندی (پیکربندی سراسری یا مخزن) .IP \(bu 2 \fBvars\fP \- درخواست خواندن مقدار متغیرها .IP \(bu 2 \fBactions_vars\fP \- درخواست خواندن مقدار متغیرهای افزونه اقدامات \- این متغیرها فقط در زمینه افزونه اقدامات وجود دارند .IP \(bu 2 \fBactions_attrs\fP \- امکان دریافت شناسه فرآیند و نسخه افزونه اقدامات را فراهم می‌کند .IP \(bu 2 \fBpackages\fP \- درخواست فهرست کردن بسته‌های موجود و نصب‌شده .IP \(bu 2 \fBtrans_packages\fP \- درخواست فهرست کردن بسته‌ها در تراکنش .IP \(bu 2 \fBcmdline_packages_paths\fP \- درخواست فهرست کردن بسته‌های مشخص‌شده در خط فرمان .UNINDENT .SS "خواندن مقدار پیکربندی (Reading a configuration value)" .sp \fIقالب درخواست:\fP .INDENT 0.0 .INDENT 3.5 .sp .EX {\(dqop\(dq:\(dqget\(dq, \(dqdomain\(dq:\(dqconf\(dq, \(dqargs\(dq:{\(dqkey\(dq:\(dq\(dq}} {\(dqop\(dq:\(dqget\(dq, \(dqdomain\(dq:\(dqconf\(dq, \(dqargs\(dq:{\(dqkey\(dq:\(dq.\(dq}} .EE .UNINDENT .UNINDENT .sp \fIقالب پاسخ:\fP .INDENT 0.0 .INDENT 3.5 .sp .EX {\(dqop\(dq:\(dqreply\(dq, \(dqrequested_op\(dq:\(dqget\(dq, \(dqdomain\(dq:\(dqconf\(dq, \(dqstatus\(dq:\(dqOK\(dq, \(dqreturn\(dq:{\(dqkeys_val\(dq:[{\(dqkey\(dq:\(dq\(dq, \(dqvalue\(dq:\(dq\(dq}]}} {\(dqop\(dq:\(dqreply\(dq, \(dqrequested_op\(dq:\(dqget\(dq, \(dqdomain\(dq:\(dqconf\(dq, \(dqstatus\(dq:\(dqOK\(dq, \(dqreturn\(dq:{\(dqkeys_val\(dq:[{\(dqkey\(dq:\(dq.\(dq, \(dqvalue\(dq:\(dq\(dq}]}} {\(dqop\(dq:\(dqreply\(dq, \(dqrequested_op\(dq:\(dqget\(dq, \(dqdomain\(dq:\(dqconf\(dq, \(dqstatus\(dq:\(dqERROR\(dq, \(dqmessage\(dq:\(dq\(dq} .EE .UNINDENT .UNINDENT .sp \fIتوضیحات:\fP .INDENT 0.0 .IP \(bu 2 \fB\fP \- نام یک گزینه پیکربندی سراسری یا در صورت مشخص بودن \fB\fP، گزینه پیکربندی مخزن .IP \(bu 2 \fB\fP \- شناسه مخزن؛ در یک درخواست می‌تواند شامل الگوهای تطبیق (globs) باشد که در این صورت مقدار گزینه پیکربندی برای تمامی مخازن منطبق خوانده می‌شود .IP \(bu 2 \fB\fP \- مقدار خوانده‌شده گزینه پیکربندی .IP \(bu 2 \fB\fP \- پیام خطا .UNINDENT .sp هنگام استفاده از \fB\fP، تعداد موارد \fBkeys_val\fP در پاسخ به تعداد مخازن منطبق بستگی دارد. .sp \fIمثال:\fP .INDENT 0.0 .INDENT 3.5 .sp .EX {\(dqop\(dq:\(dqget\(dq, \(dqdomain\(dq:\(dqconf\(dq, \(dqargs\(dq:{\(dqkey\(dq:\(dqcountme\(dq}} {\(dqop\(dq:\(dqreply\(dq, \(dqrequested_op\(dq:\(dqget\(dq, \(dqdomain\(dq:\(dqconf\(dq, \(dqstatus\(dq:\(dqOK\(dq, \(dqreturn\(dq:{\(dqkeys_val\(dq:[{\(dqkey\(dq:\(dqcountme\(dq, \(dqvalue\(dq:\(dq0\(dq}]}} {\(dqop\(dq: \(dqget\(dq, \(dqdomain\(dq: \(dqconf\(dq, \(dqargs\(dq: {\(dqkey\(dq: \(dq*.enabled\(dq}} {\(dqop\(dq: \(dqreply\(dq, \(dqrequested_op\(dq: \(dqget\(dq, \(dqdomain\(dq: \(dqconf\(dq, \(dqstatus\(dq: \(dqOK\(dq, \(dqreturn\(dq: { \(dqkeys_val\(dq: [{\(dqkey\(dq: \(dqdnf\-ci\-fedora.enabled\(dq, \(dqvalue\(dq: \(dq1\(dq}, {\(dqkey\(dq: \(dqdnf\-ci\-fedora\-updates.enabled\(dq, \(dqvalue\(dq: \(dq1\(dq}, {\(dqkey\(dq: \(dqdnf\-ci\-thirdparty.enabled\(dq, \(dqvalue\(dq: \(dq0\(dq}, {\(dqkey\(dq: \(dqtest\-repo.enabled\(dq, \(dqvalue\(dq: \(dq0\(dq}]}} .EE .UNINDENT .UNINDENT .SS "خواندن مقدار یک متغیر (Reading a variable value)" .sp \fIقالب درخواست:\fP .INDENT 0.0 .INDENT 3.5 .sp .EX {\(dqop\(dq:\(dqget\(dq, \(dqdomain\(dq:\(dqvars\(dq, \(dqargs\(dq:{\(dqname\(dq:\(dq\(dq}} .EE .UNINDENT .UNINDENT .sp \fIقالب پاسخ:\fP .INDENT 0.0 .INDENT 3.5 .sp .EX {\(dqop\(dq:\(dqreply\(dq, \(dqrequested_op\(dq:\(dqget\(dq, \(dqdomain\(dq:\(dqvars\(dq, \(dqstatus\(dq:\(dqOK\(dq, \(dqreturn\(dq:{\(dqvars\(dq:[{\(dqname\(dq:\(dq\(dq, \(dqvalue\(dq:\(dq\(dq}]}} .EE .UNINDENT .UNINDENT .sp \fIتوضیحات:\fP .INDENT 0.0 .IP \(bu 2 \fB\fP \- نام متغیر؛ در یک درخواست می‌تواند شامل الگوهای تطبیق (globs) باشد که در این صورت مقدار تمامی متغیرهای منطبق خوانده خواهد شد .IP \(bu 2 \fB\fP \- مقدار خوانده‌شده متغیر .UNINDENT .sp تعداد موارد \fBvars\fP در پاسخ به تعداد متغیرهای منطبق بستگی دارد. .sp \fIمثال:\fP .INDENT 0.0 .INDENT 3.5 .sp .EX {\(dqop\(dq:\(dqget\(dq, \(dqdomain\(dq:\(dqvars\(dq, \(dqargs\(dq:{\(dqname\(dq:\(dqtest_var*\(dq}} {\(dqop\(dq:\(dqreply\(dq, \(dqrequested_op\(dq:\(dqget\(dq, \(dqdomain\(dq:\(dqvars\(dq, \(dqstatus\(dq:\(dqOK\(dq, \(dqreturn\(dq:{\(dqvars\(dq:[{\(dqname\(dq:\(dqtest_var1\(dq, \(dqvalue\(dq:\(dqvalue1\(dq}]}} {\(dqop\(dq:\(dqget\(dq, \(dqdomain\(dq:\(dqvars\(dq, \(dqargs\(dq:{\(dqname\(dq:\(dqnonexist_var\(dq}} {\(dqop\(dq:\(dqreply\(dq, \(dqrequested_op\(dq:\(dqget\(dq, \(dqdomain\(dq:\(dqvars\(dq, \(dqstatus\(dq:\(dqOK\(dq, \(dqreturn\(dq:{\(dqvars\(dq:[]}} .EE .UNINDENT .UNINDENT .SS "خواندن مقدار متغیر اقدام (Reading an action variable value)" .sp \fIقالب درخواست:\fP .INDENT 0.0 .INDENT 3.5 .sp .EX {\(dqop\(dq:\(dqget\(dq, \(dqdomain\(dq:\(dqactions_vars\(dq, \(dqargs\(dq:{\(dqname\(dq:\(dq\(dq}} .EE .UNINDENT .UNINDENT .sp \fIقالب پاسخ:\fP .INDENT 0.0 .INDENT 3.5 .sp .EX {\(dqop\(dq:\(dqreply\(dq, \(dqrequested_op\(dq:\(dqget\(dq, \(dqdomain\(dq:\(dqactions_vars\(dq, \(dqstatus\(dq:\(dqOK\(dq, \(dqreturn\(dq:{\(dqactions_vars\(dq:[{\(dqname\(dq:\(dq\(dq, \(dqvalue\(dq:\(dq\(dq}]}} .EE .UNINDENT .UNINDENT .sp \fIتوضیحات:\fP .INDENT 0.0 .IP \(bu 2 \fB\fP \- نام متغیر اقدام؛ در یک درخواست می‌تواند شامل الگوهای تطبیق (globs) باشد که در این صورت مقدار تمامی متغیرهای اقدام منطبق خوانده خواهد شد .IP \(bu 2 \fB\fP \- مقدار خوانده‌شده متغیر اقدام .UNINDENT .sp تعداد موارد \fBactions_vars\fP در پاسخ به تعداد متغیرهای اقدام منطبق بستگی دارد. .sp \fIمثال:\fP .INDENT 0.0 .INDENT 3.5 .sp .EX {\(dqop\(dq:\(dqget\(dq, \(dqdomain\(dq:\(dqactions_vars\(dq, \(dqargs\(dq:{\(dqname\(dq:\(dqtest_actions_var*\(dq}} {\(dqop\(dq:\(dqreply\(dq, \(dqrequested_op\(dq:\(dqget\(dq, \(dqdomain\(dq:\(dqactions_vars\(dq, \(dqstatus\(dq:\(dqOK\(dq, \(dqreturn\(dq:{\(dqactions_vars\(dq:[{\(dqname\(dq:\(dqtest_actions_var1\(dq, \(dqvalue\(dq:\(dqvalue1\(dq}]}} {\(dqop\(dq:\(dqget\(dq, \(dqdomain\(dq:\(dqactions_vars\(dq, \(dqargs\(dq:{\(dqname\(dq:\(dqnonexist_var\(dq}} {\(dqop\(dq:\(dqreply\(dq, \(dqrequested_op\(dq:\(dqget\(dq, \(dqdomain\(dq:\(dqactions_vars\(dq, \(dqstatus\(dq:\(dqOK\(dq, \(dqreturn\(dq:{\(dqactions_vars\(dq:[]}} .EE .UNINDENT .UNINDENT .SS "خواندن مقدار صفت اقدام (Reading an action attribute value)" .sp \fIقالب درخواست:\fP .INDENT 0.0 .INDENT 3.5 .sp .EX {\(dqop\(dq:\(dqget\(dq, \(dqdomain\(dq:\(dqactions_attrs\(dq, \(dqargs\(dq:{\(dqkey\(dq:\(dq\(dq}} .EE .UNINDENT .UNINDENT .sp \fIقالب پاسخ:\fP .INDENT 0.0 .INDENT 3.5 .sp .EX {\(dqop\(dq:\(dqreply\(dq, \(dqrequested_op\(dq:\(dqget\(dq, \(dqdomain\(dq:\(dqactions_attrs\(dq, \(dqstatus\(dq:\(dqOK\(dq, \(dqreturn\(dq:{\(dqactions_attrs\(dq:[{\(dqkey\(dq:\(dq\(dq, \(dqvalue\(dq:\(dq\(dq}]}} .EE .UNINDENT .UNINDENT .sp \fIتوضیحات:\fP .INDENT 0.0 .IP \(bu 2 \fB\fP \- نام صفت اقدام؛ در یک درخواست می‌تواند شامل الگوهای تطبیق (globs) باشد که در این صورت مقدار تمام صفت‌های منطبق افزونه اقدامات خوانده خواهد شد. در حال حاضر از دو صفت پشتیبانی می‌شود: \fBpid\fP و \fBversion\fP\&. .INDENT 2.0 .IP \(bu 2 \fBpid\fP \- شناسه فرآیند افزونه اقدامات .IP \(bu 2 \fBversion\fP \- نسخه افزونه اقدامات، رشته‌ای در قالب \fBMAJOR.MINOR.MICRO\fP .UNINDENT .IP \(bu 2 \fB\fP \- مقدار خوانده‌شده صفت اقدام .UNINDENT .sp تعداد موارد \fBactions_attrs\fP در پاسخ به تعداد صفت‌های اقدام منطبق بستگی دارد. .sp \fIمثال:\fP .INDENT 0.0 .INDENT 3.5 .sp .EX {\(dqop\(dq:\(dqget\(dq, \(dqdomain\(dq:\(dqactions_attrs\(dq, \(dqargs\(dq:{\(dqkey\(dq:\(dq*\(dq}} {\(dqop\(dq:\(dqreply\(dq, \(dqrequested_op\(dq:\(dqget\(dq, \(dqdomain\(dq:\(dqactions_attrs\(dq, \(dqstatus\(dq:\(dqOK\(dq, \(dqreturn\(dq:{ \(dqactions_attrs\(dq:[{\(dqkey\(dq:\(dqpid\(dq, \(dqvalue\(dq:\(dq523\(dq}, {\(dqkey\(dq:\(dqversion\(dq, \(dqvalue\(dq:\(dq1.4.0\(dq}]}} {\(dqop\(dq:\(dqget\(dq, \(dqdomain\(dq:\(dqactions_attrs\(dq, \(dqargs\(dq:{\(dqkey\(dq:\(dqnonexist_attribute\(dq}} {\(dqop\(dq:\(dqreply\(dq, \(dqrequested_op\(dq:\(dqget\(dq, \(dqdomain\(dq:\(dqactions_attrs\(dq, \(dqstatus\(dq:\(dqOK\(dq, \(dqreturn\(dq:{\(dqactions_attrs\(dq:[]}} .EE .UNINDENT .UNINDENT .SS "دریافت بسته‌های موجود، نصب‌شده و درون تراکنش (Getting available, installed, and transaction packages)" .sp دامنه \fBpackages\fP برای دریافت بسته‌های موجود و نصب‌شده استفاده می‌شود. دامنه \fBtrans_packages\fP برای دریافت بسته‌های درون تراکنش استفاده می‌شود. دامنه \fBtrans_packages\fP فقط در بازخوانی‌های \fBgoal_resolved\fP، \fBpre_transaction\fP و \fBpost_transaction\fP قابل استفاده است. .sp \fIقالب درخواست:\fP .INDENT 0.0 .INDENT 3.5 .sp .EX {\(dqop\(dq:\(dqget\(dq, \(dqdomain\(dq:\(dqpackages\(dq, \(dqargs\(dq:{\(dqoutput\(dq:[\(dq\(dq]}} {\(dqop\(dq:\(dqget\(dq, \(dqdomain\(dq:\(dqpackages\(dq, \(dqargs\(dq:{\(dqoutput\(dq:[\(dq\(dq], \(dqparams\(dq:[{\(dqkey\(dq:\(dq\(dq}]}} {\(dqop\(dq:\(dqget\(dq, \(dqdomain\(dq:\(dqpackages\(dq, \(dqargs\(dq:{\(dqoutput\(dq:[\(dq\(dq], \(dqfilters\(dq:[{\(dqkey\(dq:\(dq\(dq, \(dqvalue\(dq:\(dq\(dq, \(dqoperator\(dq:\(dq\(dq}]}} {\(dqop\(dq:\(dqget\(dq, \(dqdomain\(dq:\(dqpackages\(dq, \(dqargs\(dq:{\(dqoutput\(dq:[\(dq\(dq], \(dqparams\(dq:[{\(dqkey\(dq:\(dq\(dq}], \(dqfilters\(dq:[{\(dqkey\(dq:\(dq\(dq, \(dqvalue\(dq:\(dq\(dq, \(dqoperator\(dq:\(dq\(dq}]}} {\(dqop\(dq:\(dqget\(dq, \(dqdomain\(dq:\(dqtrans_packages\(dq, \(dqargs\(dq:{\(dqoutput\(dq:[\(dq\(dq]}} {\(dqop\(dq:\(dqget\(dq, \(dqdomain\(dq:\(dqtrans_packages\(dq, \(dqargs\(dq:{\(dqoutput\(dq:[\(dq\(dq], \(dqparams\(dq:[{\(dqkey\(dq:\(dq\(dq}]}} {\(dqop\(dq:\(dqget\(dq, \(dqdomain\(dq:\(dqtrans_packages\(dq, \(dqargs\(dq:{\(dqoutput\(dq:[\(dq\(dq], \(dqfilters\(dq:[{\(dqkey\(dq:\(dq\(dq, \(dqvalue\(dq:\(dq\(dq, \(dqoperator\(dq:\(dq\(dq}]}} {\(dqop\(dq:\(dqget\(dq, \(dqdomain\(dq:\(dqtrans_packages\(dq, \(dqargs\(dq:{\(dqoutput\(dq:[\(dq\(dq], \(dqparams\(dq:[{\(dqkey\(dq:\(dq\(dq}], \(dqfilters\(dq:[{\(dqkey\(dq:\(dq\(dq, \(dqvalue\(dq:\(dq\(dq, \(dqoperator\(dq:\(dq\(dq}]}} .EE .UNINDENT .UNINDENT .sp \fIقالب پاسخ:\fP .INDENT 0.0 .INDENT 3.5 .sp .EX {\(dqop\(dq:\(dqreply\(dq, \(dqrequested_op\(dq:\(dqget\(dq, \(dqdomain\(dq:\(dqpackages\(dq, \(dqstatus\(dq:\(dqOK\(dq, \(dqreturn\(dq:{\(dqpackages\(dq:[{\(dq\(dq:\(dq\(dq}]}} {\(dqop\(dq:\(dqreply\(dq, \(dqrequested_op\(dq:\(dqget\(dq, \(dqdomain\(dq:\(dqtrans_packages\(dq, \(dqstatus\(dq:\(dqOK\(dq, \(dqreturn\(dq:{\(dqtrans_packages\(dq:[{\(dq\(dq:\(dq\(dq}]}} {\(dqop\(dq:\(dqreply\(dq, \(dqrequested_op\(dq:\(dqget\(dq, \(dqdomain\(dq:\(dqpackages\(dq, \(dqstatus\(dq:\(dqERROR\(dq, \(dqmessage\(dq:\(dq\(dq} {\(dqop\(dq:\(dqreply\(dq, \(dqrequested_op\(dq:\(dqget\(dq, \(dqdomain\(dq:\(dqtrans_packages\(dq, \(dqstatus\(dq:\(dqERROR\(dq, \(dqmessage\(dq:\(dq\(dq} .EE .UNINDENT .UNINDENT .sp \fIتوضیحات:\fP .INDENT 0.0 .IP \(bu 2 \fB\fP \- صفت بسته برای بازگرداندن؛ آرایه می‌تواند شامل چند صفت باشد .sp صفات عمومی .INDENT 2.0 .IP \(bu 2 \fBname\fP \- نام بسته .IP \(bu 2 \fBarch\fP \- معماری بسته .IP \(bu 2 \fBversion\fP \- نسخه بسته .IP \(bu 2 \fBrelease\fP \- انتشار بسته .IP \(bu 2 \fBepoch\fP \- مبدا زمانی بسته .IP \(bu 2 \fBna\fP \- نام.معماری بسته .IP \(bu 2 \fBevr\fP \- مبدا زمانی\-نسخه\-انتشار بسته .IP \(bu 2 \fBnevra\fP \- مقدار nevra بسته (مبدا زمانی 0 پنهان است) .IP \(bu 2 \fBfull_nevra\fP \- مقدار کامل nevra بسته (مبدا زمانی همیشه وجود دارد) name\-epoch:version\-release.arch .IP \(bu 2 \fBdownload_size\fP \- حجم دانلود فایل بسته .IP \(bu 2 \fBinstall_size\fP \- اندازه‌ای که بسته پس از نصب بر روی دیسک اشغال می‌کند .IP \(bu 2 \fBrepo_id\fP \- شناسه مخزن بسته .IP \(bu 2 \fBlicense\fP \- مجوز بسته .IP \(bu 2 \fBlocation\fP \- مسیر/موقعیت نسبی بسته از repodata .IP \(bu 2 \fBvendor\fP \- ارائه‌دهنده بسته .UNINDENT .sp صفات قابل استفاده فقط با دامنه \fBtrans_packages\fP .INDENT 2.0 .IP \(bu 2 \fBaction\fP \- اقدام انجام‌شده بر روی بسته .INDENT 2.0 .IP \(bu 2 \fBI\fP \- بسته جدیداً نصب‌شده .IP \(bu 2 \fBU\fP \- بسته نصب‌شده به عنوان ارتقا .IP \(bu 2 \fBD\fP \- بسته نصب‌شده به عنوان تنزل .IP \(bu 2 \fBR\fP \- بسته استفاده‌شده برای نصب مجدد .IP \(bu 2 \fBE\fP \- بسته پاک‌شده (حذف‌شده) از سیستم .IP \(bu 2 \fBO\fP \- بسته جایگزین‌شده (منسوخ‌شده/ارتقایافته/تنزل‌یافته/مجدداً نصب‌شده/حذف‌شده) .IP \(bu 2 \fB?\fP \- بسته با تغییر دلیل نصب .UNINDENT .IP \(bu 2 \fBdirection\fP \- جهت بسته در تراکنش .UNINDENT .INDENT 2.0 .INDENT 3.5 .INDENT 0.0 .IP \(bu 2 \fBIN\fP \- بسته‌های ورودی به سیستم (تنزل، نصب، نصب مجدد، ارتقا) .IP \(bu 2 \fBOUT\fP \- بسته‌های خروجی از سیستم (ارتقایافته، تنزل‌یافته، مجدداً نصب‌شده، حذف‌شده، جایگزین/منسوخ‌شده) .UNINDENT .UNINDENT .UNINDENT .IP \(bu 2 \fB\fP \- یکی از موارد \fBIGNORE_EXCLUDES\fP، \fBIGNORE_MODULAR_EXCLUDES\fP، \fBIGNORE_REGULAR_EXCLUDES\fP، \fBIGNORE_REGULAR_CONFIG_EXCLUDES\fP، \fBIGNORE_REGULAR_USER_EXCLUDES\fP .IP \(bu 2 \fB\fP \- نام صفت بسته برای پالایش؛ آرایه می‌تواند شامل چند صفت باشد .sp صفات عمومی .INDENT 2.0 .IP \(bu 2 \fBname\fP \- پالایش بسته‌ها بر اساس نام، از \fB\fP و \fB\fP استفاده می‌کند .IP \(bu 2 \fBarch\fP \- پالایش بسته‌ها بر اساس معماری، از \fB\fP و \fB\fP استفاده می‌کند .IP \(bu 2 \fBversion\fP \- پالایش بسته‌ها بر اساس نسخه، از \fB\fP و \fB\fP استفاده می‌کند .IP \(bu 2 \fBrelease\fP \- پالایش بسته‌ها بر اساس انتشار، از \fB\fP و \fB\fP استفاده می‌کند .IP \(bu 2 \fBepoch\fP \- پالایش بسته‌ها بر اساس مبدا زمانی، از \fB\fP و \fB\fP استفاده می‌کند .IP \(bu 2 \fBnevra\fP \- پالایش بسته‌ها بر اساس nevra (مبدا زمانی 0 پنهان است)، از \fB\fP و \fB\fP استفاده می‌کند .IP \(bu 2 \fBrepo_id\fP \- پالایش بسته‌ها بر اساس شناسه مخزن، از \fB\fP و \fB\fP استفاده می‌کند .IP \(bu 2 \fBavailable\fP \- پالایش بسته‌های موجود .IP \(bu 2 \fBinstalled\fP \- پالایش بسته‌های نصب‌شده .IP \(bu 2 \fBuserinstalled\fP \- پالایش بسته‌های نصب‌شده توسط کاربر .IP \(bu 2 \fBinstallonly\fP \- پالایش بسته‌های فقط‌نصب (installonly) .IP \(bu 2 \fBdescription\fP \- پالایش بسته‌ها بر اساس توضیحات، از \fB\fP و \fB\fP استفاده می‌کند .IP \(bu 2 \fBfile\fP \- پالایش بسته‌ها بر اساس فایل‌های درون آن‌ها، از \fB\fP و \fB\fP استفاده می‌کند .IP \(bu 2 \fBupgradable\fP \- پالایش بسته‌های نصب‌شده‌ای که ارتقا برای آن‌ها موجود است .IP \(bu 2 \fBupgrades\fP \- پالایش بسته‌های موجودی که ارتقای بسته‌های نصب‌شده هستند .IP \(bu 2 \fBdowngradable\fP \- پالایش بسته‌های نصب‌شده‌ای که تنزل برای آن‌ها موجود است .IP \(bu 2 \fBdowngrades\fP \- پالایش بسته‌های موجودی که تنزل بسته‌های نصب‌شده هستند .UNINDENT .sp صفات قابل استفاده فقط با دامنه \fBtrans_packages\fP .INDENT 2.0 .IP \(bu 2 \fBdirection\fP \- بسته‌ها را بر اساس جهت آن‌ها در یک تراکنش پالایش می‌کند، از \fB\fP استفاده می‌کند؛ مقادیر پشتیبانی‌شده: .UNINDENT .INDENT 2.0 .INDENT 3.5 .INDENT 0.0 .IP \(bu 2 \fBIN\fP \- بسته‌های ورودی به سیستم (تنزل، نصب، نصب مجدد، ارتقا) .IP \(bu 2 \fBOUT\fP \- بسته‌های خروجی از سیستم (ارتقایافته، تنزل‌یافته، مجدداً نصب‌شده، حذف‌شده، جایگزین/منسوخ‌شده) .UNINDENT .UNINDENT .UNINDENT .IP \(bu 2 \fB\fP \- مقداری که توسط برخی فیلترها استفاده می‌شود؛ نوع مقایسه به \fB\fP بستگی دارد .IP \(bu 2 \fB\fP \- عملگر مورد استفاده توسط فیلتر برای ارزیابی تطابق با \fB\fP؛ در صورت عدم تعیین، \fBEQ\fP در نظر گرفته می‌شود .IP \(bu 2 \fB\fP \- مقدار صفت بسته .IP \(bu 2 \fB\fP \- پیام خطا .UNINDENT .sp تعداد موارد \fBpackages\fP و \fBtrans_packages\fP در پاسخ به تعداد بسته‌های منطبق بستگی دارد. .sp \fIمثال:\fP .INDENT 0.0 .INDENT 3.5 .sp .EX {\(dqop\(dq:\(dqget\(dq, \(dqdomain\(dq:\(dqpackages\(dq, \(dqargs\(dq:{ \(dqparams\(dq:[{\(dqkey\(dq:\(dqIGNORE_EXCLUDES\(dq}], \(dqfilters\(dq:[{\(dqkey\(dq:\(dqname\(dq, \(dqvalue\(dq:\(dqlame*\(dq, \(dqoperator\(dq:\(dqGLOB\(dq}], \(dqoutput\(dq:[\(dqnevra\(dq]}} {\(dqop\(dq:\(dqreply\(dq, \(dqrequested_op\(dq:\(dqget\(dq, \(dqdomain\(dq:\(dqpackages\(dq, \(dqstatus\(dq:\(dqOK\(dq, \(dqreturn\(dq:{\(dqpackages\(dq:[ { \(dqnevra\(dq:\(dqlame\-3.100\-5.fc29.src\(dq }, { \(dqnevra\(dq:\(dqlame\-3.100\-5.fc29.x86_64\(dq }, { \(dqnevra\(dq:\(dqlame\-libs\-3.100\-5.fc29.x86_64\(dq }, { \(dqnevra\(dq:\(dqlame\-3.100\-4.fc29.src\(dq }, { \(dqnevra\(dq:\(dqlame\-3.100\-4.fc29.x86_64\(dq }, { \(dqnevra\(dq:\(dqlame\-libs\-3.100\-4.fc29.x86_64\(dq}]}} {\(dqop\(dq:\(dqget\(dq, \(dqdomain\(dq:\(dqpackages\(dq, \(dqargs\(dq:{ \(dqparams\(dq:[{\(dqkey\(dq:\(dqUNKNOWN\(dq}], \(dqfilters\(dq:[{\(dqkey\(dq:\(dqname\(dq, \(dqvalue\(dq:\(dqlame*\(dq, \(dqoperator\(dq:\(dqGLOB\(dq}], \(dqoutput\(dq:[\(dqnevra\(dq]}} {\(dqop\(dq:\(dqreply\(dq, \(dqrequested_op\(dq:\(dqget\(dq, \(dqdomain\(dq:\(dqpackages\(dq, \(dqstatus\(dq:\(dqERROR\(dq, \(dqmessage\(dq:\(dqBad key \e\(dqUNKNOWN\e\(dq for params\(dq} {\(dqop\(dq:\(dqget\(dq, \(dqdomain\(dq:\(dqtrans_packages\(dq, \(dqargs\(dq:{ \(dqfilters\(dq:[{\(dqkey\(dq:\(dqdirection\(dq, \(dqvalue\(dq:\(dqIN\(dq}, {\(dqkey\(dq:\(dqarch\(dq, \(dqvalue\(dq:\(dqx86_64\(dq}], \(dqoutput\(dq:[\(dqaction\(dq, \(dqname\(dq, \(dqversion\(dq, \(dqrepo_id\(dq]}} {\(dqop\(dq:\(dqreply\(dq, \(dqrequested_op\(dq:\(dqget\(dq, \(dqdomain\(dq:\(dqtrans_packages\(dq, \(dqstatus\(dq:\(dqOK\(dq, \(dqreturn\(dq:{ \(dqtrans_packages\(dq:[ {\(dqaction\(dq:\(dqI\(dq, \(dqname\(dq:\(dqglibc\(dq, \(dqversion\(dq:\(dq2.28\(dq, \(dqrepo_id\(dq:\(dqdnf\-ci\-fedora\-updates\(dq}, {\(dqaction\(dq:\(dqI\(dq, \(dqname\(dq:\(dqglibc\-all\-langpacks\(dq, \(dqversion\(dq:\(dq2.28\(dq, \(dqrepo_id\(dq:\(dqdnf\-ci\-fedora\-updates\(dq}, {\(dqaction\(dq:\(dqI\(dq, \(dqname\(dq:\(dqglibc\-common\(dq, \(dqversion\(dq:\(dq2.28\(dq, \(dqrepo_id\(dq:\(dqdnf\-ci\-fedora\-updates\(dq}, {\(dqaction\(dq:\(dqI\(dq, \(dqname\(dq:\(dqfilesystem\(dq, \(dqversion\(dq:\(dq3.9\(dq, \(dqrepo_id\(dq:\(dqdnf\-ci\-fedora\(dq}]}} .EE .UNINDENT .UNINDENT .SS "دریافت مسیرهای بسته‌های مشخص‌شده در خط فرمان (Getting paths of command\-line specified packages)" .sp \fIقالب درخواست:\fP .INDENT 0.0 .INDENT 3.5 .sp .EX {\(dqop\(dq:\(dqget\(dq, \(dqdomain\(dq:\(dqcmdline_packages_paths\(dq, \(dqargs\(dq:{}} {\(dqop\(dq:\(dqget\(dq, \(dqdomain\(dq:\(dqcmdline_packages_paths\(dq, \(dqargs\(dq:{ \(dqfilters\(dq:[{\(dqkey\(dq:\(dqpath\(dq, \(dqvalue\(dq:\(dq\(dq}]}} {\(dqop\(dq:\(dqget\(dq, \(dqdomain\(dq:\(dqcmdline_packages_paths\(dq, \(dqargs\(dq:{ \(dqfilters\(dq:[{\(dqkey\(dq:\(dqpath\(dq, \(dqvalue\(dq:\(dq\(dq, \(dqoperator\(dq:\(dq\(dq}]}} .EE .UNINDENT .UNINDENT .sp \fIقالب پاسخ:\fP .INDENT 0.0 .INDENT 3.5 .sp .EX {\(dqop\(dq:\(dqreply\(dq, \(dqrequested_op\(dq:\(dqget\(dq, \(dqdomain\(dq:\(dqcmdline_packages_paths\(dq, \(dqstatus\(dq:\(dqOK\(dq, \(dqreturn\(dq:{\(dqcmdline_packages_paths\(dq:[\(dq\(dq]}} .EE .UNINDENT .UNINDENT .sp \fIتوضیحات:\fP .INDENT 0.0 .IP \(bu 2 \fB\fP \- در صورت تعیین، فقط مسیرهای منطبق بر الگوی ارائه‌شده را برمی‌گرداند؛ نوع مقایسه به \fB\fP بستگی دارد .IP \(bu 2 \fB\fP \- عملگر ارزیابی اینکه آیا مسیر با الگوی درون \fB\fP مطابقت دارد یا خیر؛ در صورت عدم تعیین، \fBEQ\fP در نظر گرفته می‌شود .IP \(bu 2 \fB\fP \- مسیر بسته مشخص‌شده در خط فرمان .UNINDENT .sp تعداد موارد \fBcmdline_packages_paths\fP در پاسخ به تعداد مسیرهای بسته‌های منطبق در خط فرمان بستگی دارد. .sp \fIمثال:\fP .INDENT 0.0 .INDENT 3.5 .sp .EX {\(dqop\(dq:\(dqget\(dq, \(dqdomain\(dq:\(dqcmdline_packages_paths\(dq, \(dqargs\(dq:{\(dqfilters\(dq:[{\(dqkey\(dq:\(dqpath\(dq, \(dqvalue\(dq:\(dq/local/*\(dq, \(dqoperator\(dq:\(dqGLOB\(dq}]}} {\(dqop\(dq:\(dqreply\(dq, \(dqrequested_op\(dq:\(dqget\(dq, \(dqdomain\(dq:\(dqcmdline_packages_paths\(dq, \(dqstatus\(dq:\(dqOK\(dq, \(dqreturn\(dq:{\(dqcmdline_packages_paths\(dq:[\(dq/local/packageB.rpm\(dq, \(dq/local/packageC.rpm\(dq]}} .EE .UNINDENT .UNINDENT .SS "عملگرهای مقایسه‌ای پشتیبانی‌شده (Supported compare operators)" .sp برخی از عملیات \fBget\fP از \fB\fP پشتیبانی می‌کنند. افزونه اقدامات از عملگرهای مقایسه‌ای زیر پشتیبانی می‌کند: .INDENT 0.0 .IP \(bu 2 \fBEQ\fP \- برابری دقیق آرگومان‌ها .IP \(bu 2 \fBIEQ\fP \- برابری رشته‌ای، مقایسه غیرحساس به حروف بزرگ و کوچک .IP \(bu 2 \fBGT\fP \- بزرگ‌تر از .IP \(bu 2 \fBGTE\fP \- بزرگ‌تر یا مساوی .IP \(bu 2 \fBLT\fP \- کوچک‌تر از .IP \(bu 2 \fBLTE\fP \- کوچک‌تر یا مساوی .IP \(bu 2 \fBCONTAINS\fP \- شامل یک زیررشته بودن .IP \(bu 2 \fBICONTAINS\fP \- شامل یک زیررشته بودن، جستجوی غیرحساس به حروف بزرگ و کوچک .IP \(bu 2 \fBSTARTSWITH\fP \- شروع شدن با یک زیررشته .IP \(bu 2 \fBISTARTSWITH\fP \- شروع شدن با یک زیررشته، مقایسه غیرحساس به حروف بزرگ و کوچک .IP \(bu 2 \fBENDSWITH\fP \- پایان یافتن با یک زیررشته .IP \(bu 2 \fBIENDSWITH\fP \- پایان یافتن با یک زیررشته، مقایسه غیرحساس به حروف بزرگ و کوچک .IP \(bu 2 \fBREGEX\fP \- تطابق با یک عبارت باقاعده .IP \(bu 2 \fBIREGEX\fP \- تطابق با یک عبارت باقاعده، ارزیابی غیرحساس به حروف بزرگ و کوچک .IP \(bu 2 \fBGLOB\fP \- تطابق با یک الگوی glob .IP \(bu 2 \fBIGLOB\fP \- تطابق با یک الگوی glob، ارزیابی غیرحساس به حروف بزرگ و کوچک .UNINDENT .sp مفهوم هر عملگر را می‌توان با استفاده از پیشوند \fBNOT_\fP معکوس کرد. مثال‌ها: \fBNOT_EQ\fP، \fBNOT_GT\fP\&. .SS "توضیحات عملیات \fBset\fP (Description of the set operation)" .sp عملیات \fBset\fP برای چند \fB\fP تعریف شده است. .INDENT 0.0 .IP \(bu 2 \fBconf\fP \- درخواست برای تنظیم یک مقدار پیکربندی (پیکربندی سراسری یا مخزن) .IP \(bu 2 \fBvars\fP \- درخواست برای تنظیم مقدار یک متغیر .IP \(bu 2 \fBactions_vars\fP \- درخواست برای تنظیم یک متغیر افزونه اقدامات \- این متغیرها فقط در زمینه افزونه اقدامات وجود دارند .UNINDENT .SS "تنظیم مقدار پیکربندی (Setting a configuration value)" .sp \fIقالب درخواست:\fP .INDENT 0.0 .INDENT 3.5 .sp .EX {\(dqop\(dq:\(dqset\(dq, \(dqdomain\(dq:\(dqconf\(dq, \(dqargs\(dq:{\(dqkey\(dq:\(dq\(dq, \(dqvalue\(dq:\(dq\(dq}} {\(dqop\(dq:\(dqset\(dq, \(dqdomain\(dq:\(dqconf\(dq, \(dqargs\(dq:{\(dqkey\(dq:\(dq.\(dq, \(dqvalue\(dq:\(dq\(dq}} .EE .UNINDENT .UNINDENT .sp \fIقالب پاسخ:\fP .INDENT 0.0 .INDENT 3.5 .sp .EX {\(dqop\(dq:\(dqreply\(dq, \(dqrequested_op\(dq:\(dqset\(dq, \(dqdomain\(dq:\(dqconf\(dq, \(dqstatus\(dq:\(dqOK\(dq, \(dqreturn\(dq:{\(dqkeys_val\(dq:[{\(dqkey\(dq:\(dq\(dq, \(dqvalue\(dq:\(dq\(dq}]}} {\(dqop\(dq:\(dqreply\(dq, \(dqrequested_op\(dq:\(dqset\(dq, \(dqdomain\(dq:\(dqconf\(dq, \(dqstatus\(dq:\(dqOK\(dq, \(dqreturn\(dq:{\(dqkeys_val\(dq:[{\(dqkey\(dq:\(dq.\(dq, \(dqvalue\(dq:\(dq\(dq}]}} {\(dqop\(dq:\(dqreply\(dq, \(dqrequested_op\(dq:\(dqset\(dq, \(dqdomain\(dq:\(dqconf\(dq, \(dqstatus\(dq:\(dqERROR\(dq, \(dqmessage\(dq:\(dq\(dq} .EE .UNINDENT .UNINDENT .sp \fIتوضیحات:\fP .INDENT 0.0 .IP \(bu 2 \fB\fP \- نام یک گزینه پیکربندی سراسری یا در صورت مشخص بودن \fB\fP، گزینه پیکربندی مخزن .IP \(bu 2 \fB\fP \- شناسه مخزن؛ در یک درخواست می‌تواند شامل الگوهای تطبیق (globs) باشد که در این صورت مقدار گزینه پیکربندی برای تمامی مخازن منطبق تنظیم می‌شود .IP \(bu 2 \fB\fP \- در درخواست، مقداری که باید تنظیم شود؛ در پاسخ، مقدار واقعی پس از تنظیم .IP \(bu 2 \fB\fP \- پیام خطا .UNINDENT .sp هنگام استفاده از \fB\fP، تعداد موارد \fBkeys_val\fP در پاسخ به تعداد مخازن منطبق بستگی دارد. .sp \fIمثال:\fP .INDENT 0.0 .INDENT 3.5 .sp .EX {\(dqop\(dq:\(dqset\(dq, \(dqdomain\(dq:\(dqconf\(dq, \(dqargs\(dq:{\(dqkey\(dq:\(dqcountme\(dq, \(dqvalue\(dq:\(dq1\(dq}} {\(dqop\(dq:\(dqreply\(dq, \(dqrequested_op\(dq:\(dqset\(dq, \(dqdomain\(dq:\(dqconf\(dq, \(dqstatus\(dq:\(dqOK\(dq, \(dqreturn\(dq:{\(dqkeys_val\(dq:[{\(dqkey\(dq:\(dqcountme\(dq, \(dqvalue\(dq:\(dq1\(dq}]}} {\(dqop\(dq:\(dqset\(dq, \(dqdomain\(dq:\(dqconf\(dq, \(dqargs\(dq:{\(dqkey\(dq:\(dqdnf\-ci\-fedora*.enabled\(dq, \(dqvalue\(dq:\(dq1\(dq}} {\(dqop\(dq:\(dqreply\(dq, \(dqrequested_op\(dq:\(dqset\(dq, \(dqdomain\(dq:\(dqconf\(dq, \(dqstatus\(dq:\(dqOK\(dq, \(dqreturn\(dq:{ \(dqkeys_val\(dq:[{\(dqkey\(dq:\(dqdnf\-ci\-fedora.enabled\(dq, \(dqvalue\(dq:\(dq1\(dq}, {\(dqkey\(dq:\(dqdnf\-ci\-fedora\-updates.enabled\(dq, \(dqvalue\(dq:\(dq1\(dq}]}} .EE .UNINDENT .UNINDENT .SS "تنظیم مقدار یک متغیر (Setting a variable value)" .sp \fIقالب درخواست:\fP .INDENT 0.0 .INDENT 3.5 .sp .EX {\(dqop\(dq:\(dqset\(dq, \(dqdomain\(dq:\(dqvars\(dq, \(dqargs\(dq:{\(dqname\(dq:\(dq\(dq, \(dqvalue\(dq:\(dq\(dq}} {\(dqop\(dq:\(dqset\(dq, \(dqdomain\(dq:\(dqvars\(dq, \(dqargs\(dq:{\(dqname\(dq:\(dq\(dq}} .EE .UNINDENT .UNINDENT .sp \fIقالب پاسخ:\fP .INDENT 0.0 .INDENT 3.5 .sp .EX {\(dqop\(dq:\(dqreply\(dq, \(dqrequested_op\(dq:\(dqset\(dq, \(dqdomain\(dq:\(dqvars\(dq, \(dqstatus\(dq:\(dqOK\(dq, \(dqreturn\(dq:{\(dqvars\(dq:[{\(dqname\(dq:\(dq\(dq, \(dqvalue\(dq:\(dq\(dq}]}} {\(dqop\(dq:\(dqreply\(dq, \(dqrequested_op\(dq:\(dqset\(dq, \(dqdomain\(dq:\(dqvars\(dq, \(dqstatus\(dq:\(dqOK\(dq, \(dqreturn\(dq:{\(dqvars\(dq:[{\(dqname\(dq:\(dq\(dq}]}} {\(dqop\(dq:\(dqreply\(dq, \(dqrequested_op\(dq:\(dqset\(dq, \(dqdomain\(dq:\(dqvars\(dq, \(dqstatus\(dq:\(dqERROR\(dq, \(dqmessage\(dq:\(dq\(dq} .EE .UNINDENT .UNINDENT .sp \fIتوضیحات:\fP .INDENT 0.0 .IP \(bu 2 \fB\fP \- نام متغیر .IP \(bu 2 \fB\fP \- در درخواست، مقداری که باید تنظیم شود؛ در صورت عدم تعیین، به این معنی است که متغیر باید حذف شود. در پاسخ، مقدار واقعی پس از تنظیم؛ در صورت عدم تعیین، متغیر وجود نداشته یا حذف شده است .IP \(bu 2 \fB\fP \- پیام خطا .UNINDENT .sp \fIمثال:\fP .INDENT 0.0 .INDENT 3.5 .sp .EX {\(dqop\(dq:\(dqset\(dq, \(dqdomain\(dq:\(dqvars\(dq, \(dqargs\(dq:{\(dqname\(dq:\(dqtest_var1\(dq, \(dqvalue\(dq:\(dqvalue1\(dq}} {\(dqop\(dq:\(dqreply\(dq, \(dqrequested_op\(dq:\(dqset\(dq, \(dqdomain\(dq:\(dqvars\(dq, \(dqstatus\(dq:\(dqOK\(dq, \(dqreturn\(dq:{\(dqvars\(dq:[{\(dqname\(dq:\(dqtest_var1\(dq, \(dqvalue\(dq:\(dqvalue1\(dq}]}} .EE .UNINDENT .UNINDENT .SS "تنظیم مقدار متغیر اقدام (Setting an action variable value)" .sp \fIقالب درخواست:\fP .INDENT 0.0 .INDENT 3.5 .sp .EX {\(dqop\(dq:\(dqset\(dq, \(dqdomain\(dq:\(dqactions_vars\(dq, \(dqargs\(dq:{\(dqname\(dq:\(dq\(dq, \(dqvalue\(dq:\(dq\(dq}} {\(dqop\(dq:\(dqset\(dq, \(dqdomain\(dq:\(dqactions_vars\(dq, \(dqargs\(dq:{\(dqname\(dq:\(dq\(dq}} .EE .UNINDENT .UNINDENT .sp \fIقالب پاسخ:\fP .INDENT 0.0 .INDENT 3.5 .sp .EX {\(dqop\(dq:\(dqreply\(dq, \(dqrequested_op\(dq:\(dqset\(dq, \(dqdomain\(dq:\(dqactions_vars\(dq, \(dqstatus\(dq:\(dqOK\(dq, \(dqreturn\(dq:{\(dqvars\(dq:[{\(dqname\(dq:\(dq\(dq, \(dqvalue\(dq:\(dq\(dq}]}} {\(dqop\(dq:\(dqreply\(dq, \(dqrequested_op\(dq:\(dqset\(dq, \(dqdomain\(dq:\(dqactions_vars\(dq, \(dqstatus\(dq:\(dqOK\(dq, \(dqreturn\(dq:{\(dqvars\(dq:[{\(dqname\(dq:\(dq\(dq}]}} {\(dqop\(dq:\(dqreply\(dq, \(dqrequested_op\(dq:\(dqset\(dq, \(dqdomain\(dq:\(dqactions_vars\(dq, \(dqstatus\(dq:\(dqERROR\(dq, \(dqmessage\(dq:\(dq\(dq} .EE .UNINDENT .UNINDENT .sp \fIتوضیحات:\fP .INDENT 0.0 .IP \(bu 2 \fB\fP \- نام متغیر اقدام .IP \(bu 2 \fB\fP \- در درخواست، مقداری که باید تنظیم شود؛ در صورت عدم تعیین، به این معنی است که متغیر باید حذف شود. در پاسخ، مقدار واقعی پس از تنظیم؛ در صورت عدم تعیین، متغیر وجود نداشته یا حذف شده است .IP \(bu 2 \fB\fP \- پیام خطا .UNINDENT .sp \fIمثال:\fP .INDENT 0.0 .INDENT 3.5 .sp .EX {\(dqop\(dq:\(dqset\(dq, \(dqdomain\(dq:\(dqactions_vars\(dq, \(dqargs\(dq:{\(dqname\(dq:\(dqtest_actions_var1\(dq, \(dqvalue\(dq:\(dqvalue1\(dq}} {\(dqop\(dq:\(dqreply\(dq, \(dqrequested_op\(dq:\(dqset\(dq, \(dqdomain\(dq:\(dqactions_vars\(dq, \(dqstatus\(dq:\(dqOK\(dq, \(dqreturn\(dq:{\(dqactions_vars\(dq:[{\(dqname\(dq:\(dqtest_actions_var1\(dq, \(dqvalue\(dq:\(dqvalue1\(dq}]}} .EE .UNINDENT .UNINDENT .SS "توضیحات عملیات \fBnew\fP (Description of the new operation)" .sp عملیات \fBnew\fP یک پیکربندی مخزن جدید ایجاد می‌کند. این عملیات فقط در بازخوانی \fBrepos_configured\fP قابل استفاده است. .sp \fIقالب درخواست:\fP .INDENT 0.0 .INDENT 3.5 .sp .EX {\(dqop\(dq:\(dqnew\(dq, \(dqdomain\(dq:\(dqrepoconf\(dq, \(dqargs\(dq:{\(dqkeys_val\(dq:[{\(dqkey\(dq:\(dqrepo_id\(dq, \(dqvalue\(dq:\(dq\(dq}, {\(dqkey\(dq:\(dq\(dq, \(dqvalue\(dq:\(dq\(dq}]} .EE .UNINDENT .UNINDENT .sp \fIقالب پاسخ:\fP .INDENT 0.0 .INDENT 3.5 .sp .EX {\(dqop\(dq:\(dqreply\(dq, \(dqrequested_op\(dq:\(dqnew\(dq, \(dqdomain\(dq:\(dqrepoconf\(dq, \(dqstatus\(dq:\(dqOK\(dq, \(dqreturn\(dq:{\(dqkeys_val\(dq:[{\(dqkey\(dq:\(dqrepo_id\(dq, \(dqvalue\(dq:\(dq\(dq}, {\(dqkey\(dq:\(dq\(dq, \(dqvalue\(dq:\(dq\(dq}]}} {\(dqop\(dq:\(dqreply\(dq, \(dqrequested_op\(dq:\(dqnew\(dq, \(dqdomain\(dq:\(dqrepoconf\(dq, \(dqstatus\(dq:\(dqERROR\(dq, \(dqmessage\(dq:\(dq\(dq} .EE .UNINDENT .UNINDENT .sp \fIتوضیحات:\fP .INDENT 0.0 .IP \(bu 2 \fB\fP \- شناسه مخزن .IP \(bu 2 \fB\fP \- هر گزینه پیکربندی موجود برای مخزن .IP \(bu 2 \fB\fP \- مقداری که باید برای گزینه پیکربندی تنظیم شود .UNINDENT .sp فیلد \fBkeys_val\fP باید حداقل شامل یک عنصر باشد \- تعیین \fBrepo_id\fP الزامی است. تنظیم سایر گزینه‌های پیکربندی مخزن اختیاری است. اگر گزینه \fBenabled\fP وجود نداشته باشد، مخزن به صورت پیش‌فرض غیرفعال است. پاسخ شامل همان کلیدهای درخواست و مقادیر واقعی آن‌ها خواهد بود. .sp \fIمثال:\fP .INDENT 0.0 .INDENT 3.5 .sp .EX {\(dqop\(dq:\(dqnew\(dq, \(dqdomain\(dq:\(dqrepoconf\(dq, \(dqargs\(dq:{ \(dqkeys_val\(dq:[{\(dqkey\(dq:\(dqrepo_id\(dq, \(dqvalue\(dq:\(dqtest\-repo\(dq}, {\(dqkey\(dq:\(dqname\(dq, \(dqvalue\(dq:\(dqTest repository\(dq}, {\(dqkey\(dq:\(dqenabled\(dq, \(dqvalue\(dq:\(dqfalse\(dq}, {\(dqkey\(dq:\(dqbaseurl\(dq, \(dqvalue\(dq:\(dqhttps://xyz.com/rpm\(dq}]}} {\(dqop\(dq:\(dqreply\(dq, \(dqrequested_op\(dq:\(dqnew\(dq, \(dqdomain\(dq:\(dqrepoconf\(dq, \(dqstatus\(dq:\(dqOK\(dq, \(dqreturn\(dq:{ \(dqkeys_val\(dq:[{\(dqkey\(dq:\(dqrepo_id\(dq, \(dqvalue\(dq:\(dqtest\-repo\(dq}, {\(dqkey\(dq:\(dqname\(dq, \(dqvalue\(dq:\(dqTest repository\(dq}, {\(dqkey\(dq:\(dqenabled\(dq, \(dqvalue\(dq:\(dq0\(dq}, {\(dqkey\(dq:\(dqbaseurl\(dq, \(dqvalue\(dq:\(dqhttps://xyz.com/rpm\(dq}]}} .EE .UNINDENT .UNINDENT .SS "توضیحات عملیات \fBlog\fP (Description of the log operation)" .sp عملیات \fBlog\fP پیامی را در لاگر می‌نویسد. .sp \fIقالب درخواست:\fP .INDENT 0.0 .INDENT 3.5 .sp .EX {\(dqop\(dq:\(dqlog\(dq, \(dqargs\(dq:{\(dqlevel\(dq:\(dq\(dq, \(dqmessage\(dq:\(dq\(dq}} .EE .UNINDENT .UNINDENT .sp \fIقالب پاسخ:\fP .INDENT 0.0 .INDENT 3.5 .sp .EX {\(dqop\(dq:\(dqreply\(dq, \(dqrequested_op\(dq:\(dqlog\(dq, \(dqdomain\(dq:\(dqlog\(dq, \(dqstatus\(dq:\(dqOK\(dq} {\(dqop\(dq:\(dqreply\(dq, \(dqrequested_op\(dq:\(dqlog\(dq, \(dqdomain\(dq:\(dqlog\(dq, \(dqstatus\(dq:\(dqERROR\(dq, \(dqmessage\(dq:\(dqUnknown log level \(aq\(aq\(dq} .EE .UNINDENT .UNINDENT .sp \fIتوضیحات:\fP .INDENT 0.0 .IP \(bu 2 \fB\fP \- مقادیر \fBCRITICAL\fP، \fBERROR\fP، \fBWARNING\fP، \fBNOTICE\fP، \fBINFO\fP، \fBDEBUG\fP، \fBTRACE\fP .IP \(bu 2 \fB\fP \- متنی که باید در لاگ نوشته شود .IP \(bu 2 \fB\fP \- سطح ارائه‌شده در درخواست، در صورتی که حاوی مقداری پشتیبانی‌نشده باشد .UNINDENT .sp \fIمثال:\fP .INDENT 0.0 .INDENT 3.5 .sp .EX {\(dqop\(dq:\(dqlog\(dq, \(dqargs\(dq:{\(dqlevel\(dq:\(dqWARNING\(dq, \(dqmessage\(dq:\(dqMy warning message\(dq}} {\(dqop\(dq:\(dqreply\(dq, \(dqrequested_op\(dq:\(dqlog\(dq, \(dqdomain\(dq:\(dqlog\(dq, \(dqstatus\(dq:\(dqOK\(dq} .EE .UNINDENT .UNINDENT .SS "توضیحات عملیات \fBstop\fP (Description of the stop operation)" .sp عملیات \fBstop\fP یک استثنای توقف همراه با یک پیام ایجاد می‌کند. .sp \fIقالب درخواست:\fP .INDENT 0.0 .INDENT 3.5 .sp .EX {\(dqop\(dq:\(dqstop\(dq, \(dqargs\(dq:{\(dqmessage\(dq:\(dq\(dq}} .EE .UNINDENT .UNINDENT .sp \fIتوضیحات:\fP .INDENT 0.0 .IP \(bu 2 \fB\fP \- متنی که باید در استثنای توقف گنجانده شود .UNINDENT .sp پس از این درخواست، انتظار می‌رود که برنامه خاتمه یابد. افزونه اقدامات پاسخی ارسال نمی‌کند بلکه کانال ارتباطی را می‌بندد \- لوله‌های متصل به خروجی و ورودی استاندارد فرآیند. .sp \fIمثال:\fP .INDENT 0.0 .INDENT 3.5 .sp .EX {\(dqop\(dq:\(dqstop\(dq, \(dqargs\(dq:{\(dqmessage\(dq:\(dqI want to stop the task\(dq}} .EE .UNINDENT .UNINDENT .SS "توضیحات عملیات \fBerror\fP (Description of the error operation)" .sp عملیات \fBerror\fP پیام خطا را در لاگ ثبت می‌کند یا در صورت \fBraise_error=1\fP یک استثنای خطا همراه با پیام ایجاد می‌نماید. .sp \fIقالب درخواست:\fP .INDENT 0.0 .INDENT 3.5 .sp .EX {\(dqop\(dq:\(dqerror\(dq, \(dqargs\(dq:{\(dqmessage\(dq:\(dq\(dq}} .EE .UNINDENT .UNINDENT .sp \fIقالب پاسخ:\fP .INDENT 0.0 .INDENT 3.5 .sp .EX {\(dqop\(dq:\(dqreply\(dq, \(dqrequested_op\(dq:\(dqerror\(dq, \(dqdomain\(dq:\(dqerror\(dq, \(dqstatus\(dq:\(dqOK\(dq} .EE .UNINDENT .UNINDENT .sp \fIتوضیحات:\fP .INDENT 0.0 .IP \(bu 2 \fB\fP \- متنی که در لاگ نوشته می‌شود یا در صورت \fBraise_error=1\fP در استثنای خطا گنجانده می‌شود .UNINDENT .sp اگر \fBraise_error=1\fP باشد، انتظار می‌رود که برنامه خاتمه یابد. افزونه اقدامات پاسخی ارسال نمی‌کند بلکه کانال ارتباطی را می‌بندد \- لوله‌های متصل به خروجی و ورودی استاندارد فرآیند. .sp \fIمثال:\fP .INDENT 0.0 .INDENT 3.5 .sp .EX {\(dqop\(dq:\(dqerror\(dq, \(dqargs\(dq:{\(dqmessage\(dq:\(dqError in action process 1\(dq}} {\(dqop\(dq:\(dqreply\(dq, \(dqrequested_op\(dq:\(dqerror\(dq, \(dqdomain\(dq:\(dqerror\(dq, \(dqstatus\(dq:\(dqOK\(dq} .EE .UNINDENT .UNINDENT .SH "یک نمونه فایل اقدامات (AN EXAMPLE ACTIONS FILE)" .INDENT 0.0 .INDENT 3.5 .sp .EX # سربرگ را با شناسه فرآیند چاپ می‌کند pre_base_setup::::/usr/bin/sh \-c echo\e \-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\e >>/tmp/actions\-trans.log pre_base_setup::::/usr/bin/sh \-c date\e >>/tmp/actions\-trans.log pre_base_setup::::/usr/bin/sh \-c echo\e libdnf5\e pre_base_setup\e was\e called.\e Process\e ID\e =\e \(aq${pid}\(aq.\e >>/tmp/actions\-trans.log pre_base_setup:::enabled=installroot\-only:/usr/bin/sh \-c echo\e run\e in\e alternative\e \(dqinstallroot\(dq:\e installroot\e =\e \(aq${conf.installroot}\(aq\e >>/tmp/actions\-trans.log # مقدار گزینه پیکربندی «defaultyes» را چاپ می‌کند. pre_base_setup::::/usr/bin/sh \-c echo\e pre_base_setup:\e conf.defaultyes=${conf.defaultyes}\e >>/tmp/actions.log # پیامی مبنی بر فراخوانی بازخوانی «post_base_setup» چاپ می‌کند. post_base_setup::::/usr/bin/sh \-c echo\e libdnf5\e post_base_setup\e was\e called.\e >>/tmp/actions\-trans.log # برنامه «add_new_repo» را با ارتباط json اجرا می‌کند. # این برنامه برای مثال می‌تواند پیکربندی‌های جدیدی برای مخازن اضافه کند. repos_configured:::mode=json:/usr/local/bin/add_new_repo # فهرستی از مخازن پیکربندی‌شده را به همراه وضعیت فعال بودن آن‌ها چاپ می‌کند. repos_configured::::/usr/bin/sh \-c echo\e Repositories:\e ${conf.*.enabled}\e >>/tmp/repos.log # فهرستی از مخازنی که از پروتکل http در baseurl استفاده می‌کنند را چاپ می‌کند. repos_configured::::/usr/bin/sh \-c echo\e \(dq${conf.*.baseurl=*http://*}\(dq\e >>/tmp/baseurl_http.log # تمام مخازنی که شناسه آن‌ها با «rpmfusion» شروع می‌شود را غیرفعال می‌کند. repos_configured::::/usr/bin/sh \-c echo\e conf.rpmfusion*.enabled=0 # برنامه «check_transaction» را با ارتباط json اجرا می‌کند و در صورت بروز خطا در برنامه خاتمه می‌یابد. # این برنامه برای مثال می‌تواند بسته‌های ممنوعه را در یک تراکنش بررسی کرده و یک پیام توقف ارسال کند. pre_transaction:::mode=json raise_error=1:/usr/local/bin/check_transaction # اطلاعات مربوط به شروع تراکنش را چاپ می‌کند. # از آنجا که package_filter خالی است، دستورات را یک بار اجرا می‌کند. pre_transaction::::/usr/bin/sh \-c echo\e Transaction\e start.\e Packages\e in\e transaction:\e >>/tmp/actions\-trans.log # تمامی بسته‌ها (اقدام بسته، full_nevra، شناسه مخزن) در تراکنش را درون یک فایل لاگ می‌کند. # از دستور پوسته «echo» و هدایت خروجی به فایل استفاده می‌کند. pre_transaction:*:::/usr/bin/sh \-c echo\e \(aq${pkg.action}\(aq\e \(aq${pkg.full_nevra}\(aq\e \(aq${pkg.repo_id}\(aq\e >>/tmp/actions\-trans.log # تاریخ و زمان و اطلاعات پایان تراکنش را چاپ می‌کند. # از آنجا که package_filter خالی است، دستورات را یک بار اجرا می‌کند. post_transaction::::/usr/bin/sh \-c date\e >>/tmp/actions\-trans.log post_transaction::::/usr/bin/sh \-c echo\e Transaction\e end.\e Repositories\e used\e in\e the\e transaction:\e >>/tmp/actions\-trans.log # تمامی مخازنی که بسته‌های آن‌ها در تراکنش برای نصب روی سیستم استفاده شده‌اند را در فایل لاگ ثبت می‌کند. # هر مخزن فقط یک بار فهرست می‌شود، حتی اگر چندین بسته از همان مخزن استفاده شده باشد. # همان دستور (پس از جایگزینی متغیرها) تنها یک بار در هر تراکنش اجرا می‌شود. post_transaction:*:in::/usr/bin/sh \-c echo\e \(aq${pkg.repo_id}\(aq\e >>/tmp/actions\-trans.log # ============================================================================================== # دو اقدام بعدی افزونه snapper در DNF4 را شبیه‌سازی می‌کنند. این اقدامات از برنامه خط فرمان «snapper» استفاده می‌کنند. # توضیحات اسنپ‌شات را ایجاد کرده و آن را در متغیر «tmp.snapper_descr» ذخیره می‌کند. pre_transaction::::/usr/bin/sh \-c echo\e \(dqtmp.snapper_descr=$(ps\e \-o\e command\e \-\-no\-headers\e \-p\e \(aq${pid}\(aq)\(dq # یک اسنپ‌شات pre قبل از تراکنش ایجاد کرده و شماره اسنپ‌شات را در متغیر «tmp.snapper_pre_number» ذخیره می‌کند. pre_transaction::::/usr/bin/sh \-c echo\e \(dqtmp.snapper_pre_number=$(snapper\e create\e \-t\e pre\e \-p\e \-d\e \(aq${tmp.snapper_descr}\(aq)\(dq # اگر متغیر «tmp.snapper_pre_number» وجود داشته باشد، یک اسنپ‌شات post بعد از تراکنش ایجاد کرده و متغیرهای استفاده‌شده را حذف می‌کند. post_transaction::::/usr/bin/sh \-c [\e \-n\e \(dq${tmp.snapper_pre_number}\(dq\e ]\e &&\e snapper\e create\e \-t\e post\e \-\-pre\-number\e \(dq${tmp.snapper_pre_number}\(dq\e \-d\e \(dq${tmp.snapper_descr}\(dq\e ;\e echo\e tmp.snapper_pre_number\e ;\e echo\e tmp.snapper_descr .EE .UNINDENT .UNINDENT .SH "نویسنده (AUTHOR)" فایل AUTHORS.md را در توزیع منبع dnf5 ببینید. .SH "حق نشر (COPYRIGHT)" مشارکت‌کنندگان در پروژه dnf5. .\" End of generated man page.