'\" t .TH "SYSUPDATE\&.FEATURES" "5" "" "systemd 261.2" "sysupdate.features" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "نام (NAME)" sysupdate.features \- قابلیت‌ها و ویژگی‌های ابزار به‌روزرسانی خودکار سیستم .SH "خلاصه دستور (SYNOPSIS)" .PP .RS 4 /etc/sysupdate\&.d/*\&.feature .RE .RS 4 /run/sysupdate\&.d/*\&.feature .RE .RS 4 /usr/local/lib/sysupdate\&.d/*\&.feature .RE .RS 4 /usr/lib/sysupdate\&.d/*\&.feature .RE .SH "توضیحات (DESCRIPTION)" .PP «قابلیت‌های اختیاری» (Optional Features) عملکردهایی هستند که توسط \fBsystemd-sysupdate\fR(8) ارائه می‌شوند و به یک توزیع اجازه می‌دهند مجموعه‌هایی از تعاریف انتقال \fBsysupdate.d\fR(5) را تعریف کند که قرار است توسط مدیر سیستم فعال یا غیرفعال شوند\&. .PP هنگامی که یک قابلیت فعال است، انتقال‌های متعلق به آن هنگام بررسی و بارگیری به‌روزرسانی‌ها، پاک‌سازی (vacuuming) و در تمام موقعیت‌های دیگر در نظر گرفته می‌شوند\&. در واقع، انتقال‌های متعلق به یک قابلیت همیشه همگام با بقیه بخش‌های هدف مربوطه‌شان به‌روزرسانی خواهند شد\&. این تفاوت اصلی میان یک قابلیت اختیاری و یک مؤلفه (component) در \fBsystemd-sysupdate\fR(8) است\&. هنگامی که یک قابلیت غیرفعال است، انتقال‌های آن هنگام بررسی و بارگیری به‌روزرسانی‌ها در نظر گرفته نمی‌شوند، اما \fBsystemd\-sysupdate\fR همچنان در حین پاک‌سازی و سایر شرایطی که نیاز به تعیین مالکیت منابع سیستم قبلاً بارگیری‌شده دارد، آن‌ها را در نظر می‌گیرد\&. \fBsystemd\-sysupdate\fR هر زمان که یک قابلیت غیرفعال شود، تمام نمونه‌های انتقال‌های آن را پاک‌سازی می‌کند و در عمل آن را حذف نصب می‌نماید\&. .PP قابلیت‌های اختیاری توسط فایل‌های sysupdate\&.d/*\&.feature که در زیر تعریف شده‌اند، شرح داده می‌شوند\&. انتقال‌ها می‌توانند از طریق تنظیم \fIFeatures=\fR اعلام کنند که متعلق به یک قابلیت هستند\&. تعاریف قابلیت‌ها از فایل‌های دراپ‌این (drop-in) پشتیبانی می‌کنند که بیش از همه برای بازنویسی تنظیم \fIEnabled=\fR استفاده می‌شوند\&. همچنین می‌توان آن‌ها را ماسک کرد تا در دسترس بودن قابلیت به طور کامل پنهان شود\&. .PP هر فایل *\&.feature شامل یک بخش است: [Feature]\&. .SH "گزینه‌های بخش [FEATURE] ([FEATURE] SECTION OPTIONS)" .PP این بخش ویژگی‌های عمومی این قابلیت را تعریف می‌کند\&. .PP \fIDescription=\fR .RS 4 توضیح کوتاه و خوانا برای انسان درباره این قابلیت\&. این ممکن است به عنوان برچسبی برای این قابلیت استفاده شود، بنابراین رشته باید قابلیت را به طور معناداری در میان قابلیت‌های موجود در sysupdate\&.d/ مشخص کند\&. .sp در نسخه ۲۵۷ اضافه شد\&. .RE .PP \fIDocumentation=\fR .RS 4 یک نشانی وب (URL) قابل‌نمایش به کاربر برای مستندات مربوط به این قابلیت\&. این تنظیم از بسط مشخص‌کننده‌ها پشتیبانی می‌کند؛ برای جزئیات در مورد مشخص‌کننده‌های پشتیبانی‌شده به زیر مراجعه کنید\&. .sp در نسخه ۲۵۷ اضافه شد\&. .RE .PP \fIAppStream=\fR .RS 4 نشانی وب (URL) به یک فایل XML \m[blue]\fBکاتالوگ AppStream\fR\m[]\&\s-2\u[1]\d\s+2\&. این ممکن است توسط مراکز نرم‌افزاری (مانند نرم‌افزار گنوم یا KDE Discover) برای ارائه فراداده‌های غنی در مورد این قابلیت استفاده شود\&. این شامل نام‌های نمایشی، گزارش‌های تغییرات، نمادها و موارد دیگر است\&. این تنظیم از بسط مشخص‌کننده‌ها پشتیبانی می‌کند؛ برای جزئیات در مورد مشخص‌کننده‌های پشتیبانی‌شده به زیر مراجعه کنید\&. .sp در نسخه ۲۵۷ اضافه شد\&. .RE .PP \fIEnabled=\fR .RS 4 اینکه آیا این قابلیت فعال است یا خیر\&. در صورت نامشخص بودن، این قابلیت به طور پیش‌فرض غیرفعال است\&. .sp در نسخه ۲۵۷ اضافه شد\&. .RE .SH "مشخص‌کننده‌ها (SPECIFIERS)" .PP مشخص‌کننده‌ها ممکن است در تنظیمات \fIDocumentation=\fR و \fIAppStream=\fR استفاده شوند\&. بسط‌های زیر پشتیبانی می‌شوند: .sp .it 1 an-trap .nr an-no-space-flag 1 .nr an-break-flag 1 .br .B جدول\ \&1.\ \&مشخص‌کننده‌های موجود .TS allbox tab(:); lB lB lB. T{ مشخص‌کننده T}:T{ مفهوم T}:T{ جزئیات T} .T& l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l l. T{ "%a" T}:T{ معماری T}:T{ یک رشته کوتاه که معماری سیستم محلی را مشخص می‌کند\&. رشته‌ای مانند \fBx86\fR، \fBx86\-64\fR یا \fBarm64\fR\&. برای فهرست کامل، به معماری‌های تعریف‌شده برای \fIConditionArchitecture=\fR در \fBsystemd.unit\fR(5) مراجعه کنید\&. T} T{ "%A" T}:T{ نسخه ایمیج سیستم‌عامل T}:T{ شناسه نسخه ایمیج سیستم‌عاملِ سیستم در حال اجرا، همان‌طور که از فیلد \fIIMAGE_VERSION=\fR در /etc/os\-release خوانده می‌شود\&. اگر تنظیم نشده باشد، به یک رشته خالی تبدیل می‌شود\&. برای اطلاعات بیشتر به \fBos-release\fR(5) مراجعه کنید\&. T} T{ "%b" T}:T{ شناسه بوت T}:T{ شناسه بوت سیستم در حال اجرا، قالب‌بندی‌شده به صورت رشته\&. برای اطلاعات بیشتر به \fBrandom\fR(4) مراجعه کنید\&. T} T{ "%B" T}:T{ شناسه ساخت سیستم‌عامل T}:T{ شناسه ساخت سیستم‌عاملِ سیستم در حال اجرا، همان‌طور که از فیلد \fIBUILD_ID=\fR در /etc/os\-release خوانده می‌شود\&. اگر تنظیم نشده باشد، به یک رشته خالی تبدیل می‌شود\&. برای اطلاعات بیشتر به \fBos-release\fR(5) مراجعه کنید\&. T} T{ "%H" T}:T{ نام میزبان T}:T{ نام میزبان سیستم در حال اجرا\&. T} T{ "%l" T}:T{ نام کوتاه میزبان T}:T{ نام میزبان سیستم در حال اجرا، کوتاه‌شده در اولین نقطه برای حذف هرگونه مؤلفه دامنه\&. T} T{ "%m" T}:T{ شناسه ماشین T}:T{ شناسه ماشینِ سیستم در حال اجرا، قالب‌بندی‌شده به صورت رشته\&. برای اطلاعات بیشتر به \fBmachine-id\fR(5) مراجعه کنید\&. T} T{ "%M" T}:T{ شناسه ایمیج سیستم‌عامل T}:T{ شناسه ایمیج سیستم‌عاملِ سیستم در حال اجرا، همان‌طور که از فیلد \fIIMAGE_ID=\fR در /etc/os\-release خوانده می‌شود\&. اگر تنظیم نشده باشد، به یک رشته خالی تبدیل می‌شود\&. برای اطلاعات بیشتر به \fBos-release\fR(5) مراجعه کنید\&. T} T{ "%o" T}:T{ شناسه سیستم‌عامل T}:T{ شناسه سیستم‌عاملِ سیستم در حال اجرا، همان‌طور که از فیلد \fIID=\fR در /etc/os\-release خوانده می‌شود\&. برای اطلاعات بیشتر به \fBos-release\fR(5) مراجعه کنید\&. T} T{ "%v" T}:T{ انتشار هسته T}:T{ همانند خروجی دستور \fBuname \-r\fR\&. T} T{ "%w" T}:T{ شناسه نسخه سیستم‌عامل T}:T{ شناسه نسخه سیستم‌عاملِ سیستم در حال اجرا، همان‌طور که از فیلد \fIVERSION_ID=\fR در /etc/os\-release خوانده می‌شود\&. اگر تنظیم نشده باشد، به یک رشته خالی تبدیل می‌شود\&. برای اطلاعات بیشتر به \fBos-release\fR(5) مراجعه کنید\&. T} T{ "%W" T}:T{ شناسه گونه سیستم‌عامل T}:T{ شناسه گونهٔ (واریانت) سیستم‌عاملِ سیستم در حال اجرا، همان‌طور که از فیلد \fIVARIANT_ID=\fR در /etc/os\-release خوانده می‌شود\&. اگر تنظیم نشده باشد، به یک رشته خالی تبدیل می‌شود\&. برای اطلاعات بیشتر به \fBos-release\fR(5) مراجعه کنید\&. T} T{ "%T" T}:T{ دایرکتوری فایل‌های موقت T}:T{ این یا /tmp است یا مسیری که "$TMPDIR"، "$TEMP" یا "$TMP" روی آن تنظیم شده‌اند\&. (توجه داشته باشید که دایرکتوری ممکن است بدون خط مورب انتهایی مشخص شود\&.) T} T{ "%V" T}:T{ دایرکتوری برای فایل‌های موقت بزرگ‌تر و پایدار T}:T{ این یا /var/tmp است یا مسیری که "$TMPDIR"، "$TEMP" یا "$TMP" روی آن تنظیم شده‌اند\&. (توجه داشته باشید که دایرکتوری ممکن است بدون خط مورب انتهایی مشخص شود\&.) T} T{ "%%" T}:T{ علامت تک‌درصد T}:T{ از "%%" به جای "%" برای مشخص کردن یک علامت تک‌درصد استفاده کنید\&. T} .TE .sp 1 .SH "مثال‌ها (EXAMPLES)" .PP \fBمثال\ \&1.\ \&ابزارهای توسعه برای سیستم‌عامل مبتنی بر ایمیج (Image\-Based OS)\fR .PP ما از "foobarOS" فرضی شرح داده شده در \fBsysupdate.d\fR(5) به عنوان سیستم‌عامل پایه نمونه استفاده خواهیم کرد\&. اکثریت قریب به اتفاق کاربران foobarOS نیازی به کامپایلر، سیستم ساخت، دیباگر و سایر ابزارهای توسعه به عنوان بخشی از سیستم‌عامل خود ندارند\&. با این حال، توسعه‌دهندگان خود foobarOS نیاز دارند که این ابزارهای ساخت در دسترس باشند\&. بنابراین، foobarOS باید یک ایمیج افزونه سیستم (به \fBsystemd-sysext\fR(8) مراجعه کنید) حاوی این ابزارهای توسعه ارائه دهد، و این ایمیج باید همگام با سیستم‌عامل پایه زیرین به‌روزرسانی شود\&. این یک مورد کاربرد عالی برای یک قابلیت اختیاری سیستم‌عامل است، پس بیایید یکی تعریف کنیم: .PP .if n \{\ .RS 4 .\} .nf # /usr/lib/sysupdate\&.d/devel\&.feature [Feature] Description=Development Tools Documentation=https://developer\&.example\&.com/foobarOS/getting\-started Enabled=false .fi .if n \{\ .RE .\} .PP مورد بالا قابلیت "devel" را تعریف کرده و به طور پیش‌فرض آن را غیرفعال می‌کند\&. اکنون بیایید یک انتقال مرتبط با این قابلیت تعریف کنیم: .PP .if n \{\ .RS 4 .\} .nf # /usr/lib/sysupdate\&.d/50\-devel\&.transfer [Transfer] Features=devel ProtectVersion=%A [Source] Type=url\-file Path=https://download\&.example\&.com MatchPattern=foobarOS_@v_devel\&.raw\&.xz [Target] Type=regular\-file Path=/var/lib/extensions MatchPattern=foobarOS_@v_devel\&.raw Mode=0444 InstancesMax=2 .fi .if n \{\ .RE .\} .PP با این دو فایل، ما قابلیتی به نام "devel" ایجاد کرده‌ایم که در صورت فعال بودن، نسخه مناسب "https://download\&.example\&.com/foobarOS_@v_devel\&.raw\&.xz" را در حین هر به‌روزرسانی سیستم‌عامل بارگیری و از حالت فشرده خارج کرده و در "/var/lib/extensions/foobarOS_@v_devel\&.raw" قرار می‌دهد\&. .PP توسعه‌دهندگان foobarOS می‌توانند قابلیت "devel" را در ایستگاه‌های کاری خود با ایجاد دراپ‌این زیر فعال کنند: .PP .if n \{\ .RS 4 .\} .nf # /etc/sysupdate\&.d/devel\&.feature\&.d/enable\&.conf [Feature] Enabled=true .fi .if n \{\ .RE .\} .PP \fBمثال\ \&2.\ \&راه‌اندازهای انحصاری (Proprietary Drivers)\fR .PP فرض کنید که بسیاری از کاربران foobarOS دارای پردازنده گرافیکی ساخت شرکت MVISUAL هستند\&. به دلیل فقدان مستندات و دشواری در مهندسی معکوس سخت‌افزار، راه‌اندازهای متن‌باز برای پردازنده‌های گرافیکی MVISUAL قادر به استفاده مناسب از عملکرد گرافیکی و محاسباتی موجود نیستند\&. شرکت MVISUAL یک راه‌انداز انحصاری قابل‌توزیع مجدد برای کارت‌های خود ارائه می‌دهد و توسعه‌دهندگان foobarOS برای پاسخگویی به نیازهای کاربرانشان آن‌ها را توزیع می‌کنند\&. .PP راه‌انداز MVISUAL دارای چند بخش مختلف است که برای کارکرد آن باید نصب شوند: یک افزونه UKI برای پیکربندی خط فرمان هسته، یک ایمیج افزونه سیستم initrd برای افزودن ماژول هسته MVISUAL به initrd، و یک ایمیج افزونه سیستم معمولی برای افزودن راه‌اندازهای انحصاری فضای کاربری اوپن‌جی‌ال (OpenGL) و ولکان (Vulkan)\&. همه این‌ها باید با نسخه سیستم‌عامل اصلی قفل (همگام) شوند\&. .PP بیایید با تعریف یک قابلیت اختیاری به نام "mvisual\-driver" شروع کنیم: .PP .if n \{\ .RS 4 .\} .nf # /usr/lib/sysupdate\&.d/mvisual\-driver\&.feature [Feature] Description=MVISUAL Proprietary GPU Driver Documentation=https://support\&.example\&.com/foobarOS/mvisual AppStream=https://metadata\&.example\&.com/mvisual\-driver\-%A\&.xml\&.gz .fi .if n \{\ .RE .\} .PP توجه داشته باشید که ما فراداده AppStream را برای این قابلیت تعریف می‌کنیم، زیرا می‌خواهیم مراکز نرم‌افزاری آن را به کاربران نهایی نمایش دهند\&. سپس، بیایید انتقال‌های مربوطه را تعریف کنیم: .PP .if n \{\ .RS 4 .\} .nf # /usr/lib/sysupdate\&.d/50\-mvisual\-userspace\&.transfer [Transfer] Features=mvisual\-driver ProtectVersion=%A [Source] Type=url\-file Path=https://download\&.example\&.com MatchPattern=foobarOS_@v_mvisual_userspace\&.raw\&.xz [Target] Type=regular\-file Path=/var/lib/extensions MatchPattern=foobarOS_@v_mvisual\&.raw Mode=0444 InstancesMax=2 .fi .if n \{\ .RE .\} .PP .if n \{\ .RS 4 .\} .nf # /usr/lib/sysupdate\&.d/70\-mvisual\-initrd\&.transfer [Transfer] Features=mvisual\-driver ProtectVersion=%A [Source] Type=url\-file Path=https://download\&.example\&.com MatchPattern=foobarOS_@v_mvisual_initrd\&.raw\&.xz [Target] Type=regular\-file Path=/EFI/Linux PathRelativeTo=boot MatchPattern=foobarOS_@v\&.efi\&.extra\&.d/foobarOS_mvisual\&.raw Mode=0444 InstancesMax=2 .fi .if n \{\ .RE .\} .PP .if n \{\ .RS 4 .\} .nf # /usr/lib/sysupdate\&.d/90\-mvisual\-addon\&.transfer [Transfer] Features=mvisual\-driver ProtectVersion=%A [Source] Type=url\-file Path=https://download\&.example\&.com MatchPattern=foobarOS_@v_mvisual_addon\&.efi\&.xz [Target] Type=regular\-file Path=/EFI/Linux PathRelativeTo=boot MatchPattern=foobarOS_@v\&.efi\&.extra\&.d/foobarOS_mvisual\&.addon\&.efi Mode=0444 InstancesMax=2 .fi .if n \{\ .RE .\} .PP \fBمثال\ \&3.\ \&قابلیت‌های متقاطع (Intersecting Features)\fR .PP فرض کنید که MVISUAL ابزارهای ویژه‌ای را برای کمک به توسعه‌دهنده توزیع جهت عیب‌یابی خرابی‌ها در راه‌انداز انحصاری خود منتشر می‌کند\&. بیایید یک انتقال تعریف کنیم: .PP .if n \{\ .RS 4 .\} .nf # /usr/lib/sysupdate\&.d/50\-mvisual\-debugger\&.transfer [Transfer] RequisiteFeatures=devel mvisual\-driver ProtectVersion=%A [Source] Type=url\-file Path=https://download\&.example\&.com MatchPattern=foobarOS_@v_devel\&.raw\&.xz [Target] Type=regular\-file Path=/var/lib/extensions MatchPattern=foobarOS_@v_devel\&.raw Mode=0444 InstancesMax=2 .fi .if n \{\ .RE .\} .PP این انتقال تنها در صورتی استفاده خواهد شد که هر دو قابلیت "devel" و "mvisual\-driver" فعال باشند\&. .SH "همچنین ببینید (SEE ALSO)" .PP \fBsystemd\fR(1)، \fBsystemd-sysupdate\fR(8)، \fBsysupdate.d\fR(5) .SH "نکات (NOTES)" .IP " 1." 4 کاتالوگ AppStream .RS 4 \%https://www.freedesktop.org/software/appstream/docs/chap-CatalogData.html .RE