OS-RELEASE(5) os-release OS-RELEASE(5)

os-release, initrd-release, extension-release - فایل اطلاعات شناسایی سیستم‌عامل

/etc/os-release
/usr/lib/os-release
/etc/initrd-release
/usr/lib/extension-release.d/extension-release.IMAGE

فایل‌های /etc/os-release و /usr/lib/os-release حاوی داده‌های شناسایی سیستم‌عامل هستند.

قالب فایل os-release یک فهرست جداشده با خط جدید (newline) از انتساب متغیرهای سازگار با شل و شبیه به متغیرهای محیطی است. امکان سورس کردن (source) این پیکربندی از اسکریپت‌های Bourne shell وجود دارد؛ با این حال، فراتر از انتساب‌های متغیر صرف، هیچ‌یک از ویژگی‌های شل پشتیبانی نمی‌شوند (این بدان معناست که بسط متغیرها صراحتاً پشتیبانی نمی‌شود)، که به برنامه‌ها اجازه می‌دهد این فایل را بدون پیاده‌سازی یک موتور اجرایی سازگار با شل بخوانند. مقادیر انتساب متغیرها در صورتی که شامل فاصله‌ها، نقطه‌ویرگول‌ها یا سایر نویسه‌های خاص خارج از A–Z، a–z، 0–9 باشند باید در نقل‌قول دوگانه (double quotes) یا تکی (single quotes) محصور شوند. (انتساب‌هایی که شامل این نویسه‌های خاص نیستند نیز می‌توانند درون نقل‌قول قرار گیرند، اما این کار اختیاری است.) نویسه‌های خاص شل ("$"، نقل‌قول‌ها، بک‌اسلش، بک‌تیک) باید مطابق با سبک شل با بک‌اسلش اسکیپ شوند. تمام رشته‌ها باید دارای کدگذاری UTF-8 باشند و نباید از نویسه‌های غیرقابل‌چاپ استفاده شود. پیوند زدن (الحاق) چندین رشته که به‌طور جداگانه درون نقل‌قول قرار گرفته‌اند پشتیبانی نمی‌شود. خطوطی که با "#" شروع می‌شوند به‌عنوان توضیح (کامنت) تلقی می‌گردند. خطوط خالی مجاز بوده و نادیده گرفته می‌شوند.

فایل /etc/os-release بر /usr/lib/os-release اولویت دارد. برنامه‌ها باید وجود فایل اول را بررسی کنند و در صورت وجود، منحصراً از داده‌های آن استفاده نمایند و تنها در صورت عدم وجود آن به /usr/lib/os-release رجوع کنند. برنامه‌ها نباید داده‌های هر دو فایل را با یکدیگر ترکیب کنند. مسیر /usr/lib/os-release محل توصیه‌شده برای ذخیره اطلاعات انتشار سیستم‌عامل به‌عنوان بخشی از درخت توزیع‌کننده (vendor) است. فایل /etc/os-release باید یک پیوند نمادین (symlink) نسبی به /usr/lib/os-release باشد تا با برنامه‌هایی که فقط مسیر /etc/ را بررسی می‌کنند سازگاری داشته باشد. استفاده از یک پیوند نمادین نسبی به جای پیوند نمادین مطلق برای جلوگیری از شکستن پیوند در محیط‌های chroot یا initrd ضروری است.

فایل os-release حاوی داده‌هایی است که توسط توزیع‌کننده سیستم‌عامل تعریف شده و معمولاً نباید توسط مدیر سیستم تغییر یابد.

از آنجا که این فایل صرفاً نام‌ها و شناسه‌ها را کدگذاری می‌کند، نباید محلی‌سازی (ترجمه به زبان‌های دیگر) شود.

فایل‌های /etc/os-release و /usr/lib/os-release ممکن است پیوندهای نمادین به فایل‌های دیگر باشند، اما مهم است که این فایل از همان مراحل اولیه بوت در دسترس باشد و بنابراین باید روی سیستم‌فایل ریشه قرار گیرد.

فایل os-release نباید شامل کلیدهای تکراری باشد. با این وجود، در صورت بروز تکرار، برنامه‌های خواننده باید ورودی‌های بعدی در فایل را انتخاب کنند؛ مشابه رفتاری که یک شل هنگام سورس کردن فایل انجام می‌دهد. یک خواننده ممکن است درباره ورودی‌های تکراری هشدار دهد.

برای مطالعه دلایل مفصل‌تر پیرامون os-release لطفاً به اعلامیه /etc/os-release[1] مراجعه کنید.

در initrd[2] و exitrd، فایل /etc/initrd-release نقشی مشابه os-release در سیستم اصلی ایفا می‌کند. علاوه بر این، وجود این فایل نشان می‌دهد که سیستم در فاز initrd/exitrd قرار دارد. /etc/os-release باید به /etc/initrd-release پیوند نمادین داده شود (یا برعکس)، تا برنامه‌هایی که فقط به دنبال /etc/os-release می‌گردند (همان‌طور که در بالا شرح داده شد) به‌درستی کار کنند.

باقی این سند که درباره os-release صحبت می‌کند باید به‌گونه‌ای درک شود که برای initrd-release نیز اعمال‌پذیر است.

فایل /usr/lib/extension-release.d/extension-release.IMAGE نقشی مشابه os-release در سیستم اصلی برای ایمیج‌های افزونه (extension images) ایفا می‌کند و از قواعد و نحو شرح‌داده‌شده در صفحه سرویس‌های پرتابل (Portable Services)[3] پیروی می‌کند. هدف این فایل شناسایی افزونه و امکان‌پذیر ساختن راستی‌آزمایی این نکته توسط سیستم‌عامل است که آیا ایمیج افزونه با سیستم‌عامل پایه مطابقت دارد یا خیر. این امر معمولاً با بررسی اینکه آیا گزینه ID= افزونه با گزینه ID= میزبان مطابقت دارد یا در گزینه ID_LIKE= میزبان گنجانده شده است، و اینکه یا SYSEXT_LEVEL= وجود داشته و مطابقت دارد، یا اگر وجود ندارد، VERSION_ID= وجود داشته و مطابقت دارد، پیاده‌سازی می‌شود. این امر سازگاری ABI/API بین لایه‌ها را تضمین می‌کند و از ادغام یک ایمیج ناسازگار در یک overlay جلوگیری می‌نماید.

به منظور شناسایی خود ایمیج افزونه، می‌توان همان فیلدهای تعریف‌شده در زیر را با پیشوند SYSEXT_ به فایل extension-release اضافه کرد (تا از فیلدهای استفاده‌شده برای تطبیق با ایمیج پایه ابهام‌زدایی شود). برای مثال: SYSEXT_ID=myext، SYSEXT_VERSION_ID=1.2.3.

در نام فایل extension-release.IMAGE، بخش IMAGE باید دقیقاً با نام فایل ایمیج حاوی آن پس از حذف پسوند مطابقت داشته باشد. در صورتی که تضمین ثبات نام فایل ایمیج و عدم تغییر آن بین مراحل ساخت (build) و استقرار (deployment) ممکن نباشد، می‌توان این بررسی را منعطف‌تر کرد: اگر دقیقاً یک فایل که نام آن با "extension-release.*" مطابقت دارد در این دایرکتوری وجود داشته باشد، و فایل با یک xattr(7) به صورت user.extension-release.strict تنظیم‌شده روی رشته "0" نشانه‌گذاری شده باشد، به جای آن استفاده خواهد شد.

باقی این سند که درباره os-release صحبت می‌کند باید به‌گونه‌ای درک شود که برای extension-release نیز اعمال‌پذیر است.

پارامترهای شناسایی سیستم‌عامل زیر را می‌توان با استفاده از os-release تنظیم کرد:

NAME=

رشته‌ای که سیستم‌عامل را بدون مولفه نسخه مشخص می‌کند و برای نمایش به کاربر مناسب است. در صورت عدم تنظیم، مقدار پیش‌فرض "NAME=Linux" ممکن است استفاده شود.

مثال‌ها: "NAME=Fedora"، "NAME="Debian GNU/Linux"".

ID=

یک رشته با حروف کوچک (بدون فاصله یا سایر نویسه‌های خارج از 0–9، a–z، "."، "_" و "-") که سیستم‌عامل را بدون هرگونه اطلاعات نسخه مشخص می‌کند و برای پردازش توسط اسکریپت‌ها یا استفاده در نام فایل‌های تولیدشده مناسب است. در صورت عدم تنظیم، مقدار پیش‌فرض "ID=linux" ممکن است استفاده شود. توجه داشته باشید که حتی اگر این رشته حاوی نویسه‌هایی نباشد که نیاز به نقل‌قول شل دارند، همچنان می‌توان از نقل‌قول استفاده کرد.

مثال‌ها: "ID=fedora"، "ID=debian".

ID_LIKE=

فهرستی از شناسه‌های سیستم‌عامل جداشده با فاصله با همان نحو تنظیمات ID=. این فیلد باید شناسه‌های سیستم‌عامل‌هایی را فهرست کند که از نظر بسته‌بندی و رابط‌های برنامه‌نویسی ارتباط نزدیکی با سیستم‌عامل محلی دارند؛ به عنوان مثال فهرست کردن یک یا چند شناسه سیستم‌عامل که سیستم‌عامل محلی مشتقی از آن‌هاست. یک سیستم‌عامل معمولاً فقط باید شناسه‌های سیستم‌عامل‌های دیگری را فهرست کند که خودش مشتقی از آن‌هاست، نه سیستم‌عامل‌هایی که از آن مشتق شده‌اند؛ هرچند روابط متقارن نیز امکان‌پذیر است. اسکریپت‌های ساخت و موارد مشابه، در صورتی که نیاز به شناسایی سیستم‌عامل محلی داشته باشند و مقدار ID= شناخته‌شده نباشد، باید این متغیر را بررسی کنند. سیستم‌عامل‌ها باید به ترتیب میزان نزدیکی ارتباط سیستم‌عامل محلی با آن‌ها، از نزدیک‌ترین مورد، فهرست شوند. این فیلد اختیاری است.

مثال‌ها: برای یک سیستم‌عامل با "ID=centos"، انتساب "ID_LIKE="rhel fedora"" مناسب خواهد بود. برای یک سیستم‌عامل با "ID=ubuntu"، انتساب "ID_LIKE=debian" مناسب است.

PRETTY_NAME=

نامی زیبا و مناسب از سیستم‌عامل در قالبی مناسب برای نمایش به کاربر. ممکن است بسته به نیاز شامل نام رمزی انتشار (codename) یا نسخه سیستم‌عامل باشد یا نباشد. در صورت عدم تنظیم، مقدار پیش‌فرض "PRETTY_NAME="Linux"" ممکن است استفاده شود.

مثال: "PRETTY_NAME="Fedora 17 (Beefy Miracle)""

FANCY_NAME=

مشابه PRETTY_NAME=، اما ممکن است شامل دنباله‌های ANSI و نویسه‌های جالب UTF-8 مانند ایموجی‌ها باشد. در صورت تعریف، ترجیحاً باید هنگام نمایش نام سیستم‌عامل در شبیه‌سازهای ترمینال مدرن استفاده شود. اگر شبیه‌ساز ترمینال از ایموجی‌ها پشتیبانی نمی‌کند، PRETTY_NAME= باید به جای آن، احتمالاً همراه با رنگ‌آمیزی ANSI_COLOR= نمایش داده شود. از "\033" برای کدگذاری نویسه ESC و از "\\" برای کدگذاری نویسه بک‌اسلش استفاده کنید.

برخلاف PRETTY_NAME= این فیلد نباید شامل اطلاعاتی باشد که در سایر فیلدها وجود دارد، به‌ویژه نسخه (که پیش‌تر در VERSION= مشخص شده) یا نام رمزی (که پیش‌تر در VERSION_CODENAME= مشخص شده است).

مثال: "FANCY_NAME="🍅 \033[31mTomato\033[0;1mOS\033[0m""

اضافه‌شده در نسخه 260.

CPE_NAME=

نام CPE برای سیستم‌عامل، با نحو پیوند URI، مطابق با مشخصات Common Platform Enumeration[4] همان‌طور که توسط NIST پیشنهاد شده است. این فیلد اختیاری است.

مثال: "CPE_NAME="cpe:/o:fedoraproject:fedora:17""

VARIANT=

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

مثال‌ها: "VARIANT="Server Edition""، "VARIANT="Smart Refrigerator Edition"".

نکته: این فیلد فقط برای اهداف نمایشی است. برای تصمیم‌گیری‌های برنامه‌نویسی باید از فیلد VARIANT_ID استفاده شود.

اضافه‌شده در نسخه 220.

VARIANT_ID=

یک رشته با حروف کوچک (بدون فاصله یا سایر نویسه‌های خارج از 0–9، a–z، "."، "_" و "-") که گونه یا نسخه خاصی از سیستم‌عامل را مشخص می‌کند. این فیلد ممکن است توسط سایر بسته‌ها به منظور تعیین یک پیکربندی پیش‌فرض متفاوت تفسیر شود. این فیلد اختیاری است و ممکن است در همه سیستم‌ها پیاده‌سازی نشده باشد.

مثال‌ها: "VARIANT_ID=server"، "VARIANT_ID=embedded".

اضافه‌شده در نسخه 220.

VERSION=

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

مثال‌ها: "VERSION=17"، "VERSION="17 (Beefy Miracle)"".

VERSION_ID=

یک رشته با حروف کوچک (عمدتاً عددی، بدون فاصله یا سایر نویسه‌های خارج از 0–9، a–z، "."، "_" و "-") که نسخه سیستم‌عامل را بدون هرگونه اطلاعات نام سیستم‌عامل یا نام رمزی انتشار مشخص می‌کند، و برای پردازش توسط اسکریپت‌ها یا استفاده در نام فایل‌های تولیدشده مناسب است. این فیلد اختیاری است.

مثال‌ها: "VERSION_ID=17"، "VERSION_ID=11.04".

VERSION_CODENAME=

یک رشته با حروف کوچک (بدون فاصله یا سایر نویسه‌های خارج از 0–9، a–z، "."، "_" و "-") که نام رمزی انتشار سیستم‌عامل را بدون هرگونه اطلاعات نام سیستم‌عامل یا نسخه انتشار مشخص می‌کند، و برای پردازش توسط اسکریپت‌ها یا استفاده در نام فایل‌های تولیدشده مناسب است. این فیلد اختیاری است و ممکن است در همه سیستم‌ها پیاده‌سازی نشده باشد.

مثال‌ها: "VERSION_CODENAME=buster"، "VERSION_CODENAME=xenial".

اضافه‌شده در نسخه 231.

BUILD_ID=

رشته‌ای که به‌طور یکتا ایمیج سیستمی را که در اصل به عنوان پایه نصب استفاده شده است، مشخص می‌کند. در بیشتر موارد، هنگامی که کل ایمیج سیستم طی یک به‌روزرسانی جایگزین می‌شود، VERSION_ID یا IMAGE_ID+IMAGE_VERSION به‌روزرسانی می‌شوند. فیلد BUILD_ID ممکن است در توزیع‌هایی استفاده شود که نسخه اولیه ایمیج نصب در آن‌ها اهمیت دارد: VERSION_ID طی به‌روزرسانی‌های تدریجی سیستم تغییر می‌کند، اما BUILD_ID تغییر نخواهد کرد. این فیلد اختیاری است.

مثال‌ها: "BUILD_ID="2013-03-20.3""، "BUILD_ID=201303203".

اضافه‌شده در نسخه 200.

IMAGE_ID=

یک رشته با حروف کوچک (بدون فاصله یا سایر نویسه‌های خارج از 0–9، a–z، "."، "_" و "-") که یک ایمیج مشخص از سیستم‌عامل را مشخص می‌کند. این فیلد برای محیط‌هایی در نظر گرفته شده است که ایمیج‌های سیستم‌عامل به‌صورت ایمیج‌های جامع و یکپارچه آماده، ساخته، توزیع و به‌روزرسانی می‌شوند. این فیلد اختیاری است و ممکن است در همه سیستم‌ها پیاده‌سازی نشده باشد، به‌ویژه در سیستم‌هایی که از طریق ایمیج مدیریت نمی‌شوند بلکه از بسته‌های جداگانه و روی سیستم محلی گردآوری و به‌روزرسانی می‌گردند.

مثال‌ها: "IMAGE_ID=vendorx-cashier-system"، "IMAGE_ID=netbook-image".

اضافه‌شده در نسخه 249.

IMAGE_VERSION=

یک رشته با حروف کوچک (عمدتاً عددی، بدون فاصله یا سایر نویسه‌های خارج از 0–9، a–z، "."، "_" و "-") که نسخه ایمیج سیستم‌عامل را مشخص می‌کند. این فیلد قرار است همراه با IMAGE_ID شرح داده‌شده در بالا، برای تشخیص نسخه‌های مختلف یک ایمیج یکسان استفاده شود.

مثال‌ها: "IMAGE_VERSION=33"، "IMAGE_VERSION=47.1rc1".

اضافه‌شده در نسخه 249.

RELEASE_TYPE=

یک رشته با حروف کوچک (بدون فاصله یا سایر نویسه‌های خارج از 0-9، a-z، "."، "_" و "-") که نوع انتشار این نسخه از سیستم‌عامل را توصیف می‌کند. مقادیر شناخته‌شده به شرح زیر است:
•"stable" برای انتشار‌های معمولی سیستم است که برای استفاده در محیط‌های عملیاتی مناسب هستند. عموماً انتشارهای پایدار مدت کوتاهی پس از عرضه نسخه پایدار عمده بعدی به پایان عمر خود (end-of-life) می‌رسند، هرچند اگر برای مثال توزیعی مدل انتشار غلطان (rolling release) را اتخاذ کرده و همچنان آماده استفاده در محیط عملیاتی باشد، ممکن است این‌گونه نباشد. مثال‌ها شامل Fedora 40، Ubuntu 23.10، OpenSUSE Tumbleweed و Arch Linux هستند.
•"lts" برای انتشارهای با پشتیبانی طولانی‌مدت (LTS) سیستم است که برای استفاده در محیط عملیاتی مناسب بوده و برای مدت زمان طولانی پشتیبانی می‌شوند. معمولاً انتشارهای LTS حتی در صورت در دسترس بودن نسخه‌های عمده جدیدتر توزیع، همچنان پشتیبانی دریافت می‌کنند. مثال‌ها شامل Ubuntu 24.04، Debian 12 Bookworm و RHEL 9.4 هستند.
•"development" برای نسخه‌های ناپایدار سیستم است که برای استفاده در محیط عملیاتی نامناسب هستند، مانند انتشارهای آلفا، بتا یا غلطان ناپایدار. مثال‌ها شامل Fedora Rawhide، Debian Testing، Fedora 40 Beta و GNOME OS Nightly هستند.
•"experiment" برای ساخت‌های آزمایشی سیستم است که مشخصاً برای آزمایش برخی قابلیت‌های در حال توسعه ایجاد شده‌اند. این مقدار برای استفاده در ترکیب با EXPERIMENT= در نظر گرفته شده است.

در صورت تنظیم نشدن یا وجود مقدار ناشناخته، فرض بر این است که انتشار "stable" است.

مثال‌ها: "RELEASE_TYPE=development"، "RELEASE_TYPE=lts".

اضافه‌شده در نسخه 257.

به‌طور خلاصه: اگر به‌روزرسانی‌های ایمیج به‌عنوان واحدهای جامع ساخته و عرضه می‌شوند، IMAGE_ID+IMAGE_VERSION بهترین گزینه است. در غیر این صورت، اگر به‌روزرسانی‌ها در نهایت محتویات قبلاً نصب‌شده را کاملاً جایگزین کنند، همانند یک توزیع باینری معمول، VERSION_ID باید برای شناسایی نسخه‌های عمده سیستم‌عامل استفاده شود. BUILD_ID می‌تواند در مواردی که نسخه اولیه ایمیج سیستم اهمیت دارد، به جای یا علاوه بر VERSION_ID استفاده شود.

HOME_URL=، DOCUMENTATION_URL=، SUPPORT_URL=، BUG_REPORT_URL=، PRIVACY_POLICY_URL=

پیوندهایی به منابع اینترنتی مرتبط با سیستم‌عامل. HOME_URL= باید به صفحه اصلی سیستم‌عامل، یا به عنوان گزینه‌ای دیگر، به صفحه‌ای اختصاصی از نسخه خاص سیستم‌عامل اشاره کند. DOCUMENTATION_URL= باید به صفحه اصلی مستندات این سیستم‌عامل ارجاع دهد. SUPPORT_URL= باید به صفحه اصلی پشتیبانی سیستم‌عامل، در صورت وجود، ارجاع دهد. این گزینه در درجه اول برای سیستم‌عامل‌هایی است که ارائه‌دهندگان آن‌ها پشتیبانی رسمی عرضه می‌کنند. BUG_REPORT_URL= باید به صفحه اصلی گزارش اشکال (باگ) سیستم‌عامل، در صورت وجود، ارجاع دهد. این گزینه در درجه اول برای سیستم‌عامل‌هایی است که به کنترل کیفیت جامعه متکی هستند. PRIVACY_POLICY_URL= باید به صفحه اصلی سیاست حفظ حریم خصوصی سیستم‌عامل، در صورت وجود، ارجاع دهد. این تنظیمات اختیاری هستند و ارائه تنها برخی از آن‌ها معمول است. این نشانی‌ها برای نمایش در رابط‌های کاربری "درباره این سیستم" پشت پیوندهایی با عناوینی نظیر "درباره این سیستم‌عامل"، "دریافت پشتیبانی"، "گزارش اشکال" یا "سیاست حفظ حریم خصوصی" در نظر گرفته شده‌اند. مقادیر باید در قالب RFC3986[5] بوده و نشانی‌های "http:" یا "https:" باشند، و احتمالاً "mailto:" یا "tel:". در هر تنظیم باید تنها یک نشانی اینترنتی فهرست شود. اگر لازم است به چندین منبع ارجاع داده شود، توصیه می‌شود یک صفحه فرود (landing page) برخط ارائه شود که به تمام منابع در دسترس پیوند می‌دهد.

مثال‌ها: "HOME_URL="https://fedoraproject.org""، "BUG_REPORT_URL="https://bugzilla.redhat.com"".

SUPPORT_END=

تاریخ پایان پشتیبانی از این نسخه سیستم‌عامل. (اینکه "عدم پشتیبانی" دقیقاً به چه معناست بین ارائه‌دهندگان مختلف متفاوت است، اما معمولاً کاربران باید فرض کنند که به‌روزرسانی‌ها، از جمله وصله‌های امنیتی، دیگر ارائه نخواهند شد.) این مقدار تاریخی در قالب ISO 8601 به صورت "YYYY-MM-DD" است و اولین روزی را مشخص می‌کند که در آن پشتیبانی ارائه نمی‌شود.

برای مثال، "SUPPORT_END=2001-01-01" بدین معناست که سیستم تا پایان آخرین روز هزاره قبلی پشتیبانی می‌شد.

اضافه‌شده در نسخه 252.

LOGO=

رشته‌ای که نام یک آیکون را مطابق با تعریف مشخصات تم آیکون freedesktop.org[6] مشخص می‌کند. این فیلد می‌تواند توسط برنامه‌های گرافیکی برای نمایش نشان‌واره (لوگو) سیستم‌عامل یا توزیع‌کننده استفاده شود. این فیلد اختیاری است و لزوماً در همه سیستم‌ها پیاده‌سازی نشده است.

مثال‌ها: "LOGO=fedora-logo"، "LOGO=distributor-logo-opensuse"

اضافه‌شده در نسخه 240.

ANSI_COLOR=

رنگ پیشنهادی متن (پیش‌زمینه) نمایشی هنگام نمایش نام سیستم‌عامل در کنسول. این فیلد باید به‌صورت رشته‌ای مناسب برای درج در کد اسکیپ ESC [ m ANSI/ECMA-48 جهت تنظیم بازنمایی گرافیکی مشخص شود. این فیلد اختیاری است.

مثال‌ها: "ANSI_COLOR="0;31"" برای قرمز، "ANSI_COLOR="1;34"" برای آبی روشن، یا "ANSI_COLOR="0;38;2;60;110;180"" برای آبی فدورا.

ANSI_COLOR_REVERSE=

مشابه ANSI_COLOR=، اما باید رنگ نمایشی مورد نظر را به‌عنوان رنگ پس‌زمینه همراه با رنگ پیش‌زمینه مناسب کدگذاری کند. این فیلد ممکن است توسط برنامه‌های کنسولی برای متمایز ساختن عناصر پوسته واسط کاربری ("chrome") از محتوای اصلی ترمینال استفاده شود. این فیلد اختیاری است.

اضافه‌شده در نسخه 259.

VENDOR_NAME=

نام توزیع‌کننده سیستم‌عامل. این نام سازمان یا شرکتی است که سیستم‌عامل را تولید می‌کند. این فیلد اختیاری است.

این نام برای نمایش در رابط‌های کاربری "درباره این سیستم" یا رابط‌های کاربری به‌روزرسانی نرم‌افزار در مواقعی در نظر گرفته شده است که تمایز توزیع‌کننده سیستم‌عامل از خود سیستم‌عامل مورد نیاز است. این نام به‌صورت خوانا برای انسان در نظر گرفته شده است.

مثال‌ها: "VENDOR_NAME="Fedora Project"" برای Fedora Linux، "VENDOR_NAME="Canonical"" برای Ubuntu.

اضافه‌شده در نسخه 254.

VENDOR_URL=

صفحه اصلی توزیع‌کننده سیستم‌عامل. این فیلد اختیاری است. فیلد VENDOR_NAME= در صورت تنظیم بودن این فیلد باید تنظیم شود، هرچند کلاینت‌ها باید در برابر تنظیم نشدن هر یک از این دو فیلد مقاوم و انعطاف‌پذیر باشند.

مقدار باید در قالب RFC3986[5] بوده و نشانی‌های "http:" یا "https:" باشد. در این تنظیم باید تنها یک نشانی فهرست شود.

مثال‌ها: "VENDOR_URL="https://fedoraproject.org""، "VENDOR_URL="https://canonical.com"".

اضافه‌شده در نسخه 254.

EXPERIMENT=

توضیحی خوانا برای انسان درباره اینکه چه چیزی این بیلد از سیستم‌عامل را آزمایشی می‌کند. این فیلد اختیاری است. در صورت تنظیم بودن این فیلد، فیلد RELEASE_TYPE باید روی "experiment" تنظیم شود، در غیر این صورت کلاینت‌ها باید این فیلد را نادیده بگیرند.

این توضیح برای نمایش در زمان نصب سیستم یا در رابط‌های کاربری "درباره این سیستم" در نظر گرفته شده است تا به کاربر هشدار دهد که در حال نصب یا اجرای یک بیلد آزمایشی از سیستم‌عامل است. اگر RELEASE_TYPE برابر با "experiment" باشد اما این فیلد تنظیم نشده باشد، رابط کاربری همچنان باید به کاربر هشدار دهد، اما قادر نخواهد بود دقیقاً توضیح دهد که چه چیزی در مورد بیلد فعلی سیستم‌عامل آزمایشی است.

مثال‌ها: "EXPERIMENT="Switch to DNF5"" برای یک ساخت آزمایشی از Fedora Linux که برای آزمایش DNF5 ایجاد شده است، "EXPERIMENT="Port to Apple M3 chip"" برای ساخت‌های آزمایشی Asahi Linux پورت‌شده به تراشه Apple M3 SoC، "EXPERIMENT="Mutter !1441: Dynamic triple/double buffering (v4)"" برای ساخت‌های GNOME OS ایجادشده توسط CI ماتر برای درخواست ادغام !1441.

اضافه‌شده در نسخه 257.

EXPERIMENT_URL=

صفحه اطلاعاتی اصلی درباره علت آزمایشی بودن بیلد فعلی سیستم‌عامل، جایی که کاربران می‌توانند درباره وضعیت این آزمایش اطلاعات بیشتری کسب کرده و احتمالاً بازخورد ثبت نمایند. این فیلد اختیاری است. فیلد EXPERIMENT= در صورت تنظیم بودن این فیلد باید تنظیم شود، هرچند کلاینت‌ها باید در برابر تنظیم نشدن هر یک از این دو فیلد مقاوم و پایدار باشند.

مقدار باید در قالب RFC3986[5] بوده و نشانی‌های "http:" یا "https:" باشد. در این تنظیم باید تنها یک نشانی فهرست شود.

مثال‌ها، متناظر با مثال‌های بالا در EXPERIMENT=: "EXPERIMENT_URL="https://fedoraproject.org/wiki/Changes/SwitchToDnf5""، "EXPERIMENT_URL="https://github.com/AsahiLinux/docs/wiki/M3-Series-Feature-Support""، "EXPERIMENT_URL="https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1441"".

اضافه‌شده در نسخه 257.

DEFAULT_HOSTNAME=

رشته‌ای که نام میزبان (hostname) را در صورتی که hostname(5) موجود نباشد و هیچ منبع پیکربندی دیگری نام میزبان را مشخص نکرده باشد، تعیین می‌کند. باید یا یک برچسب DNS واحد باشد (رشته‌ای متشکل از نویسه‌های 7 بیتی اسکی با حروف کوچک و بدون فاصله یا نقطه، محدود به قالب مجاز برای برچسب‌های نام دامنه DNS)، یا توالی‌ای از چنین برچسب‌هایی که با تک‌نقطه از هم جدا شده و یک FQDN معتبر DNS را تشکیل می‌دهند. نام میزبان باید حداکثر ۶۴ نویسه باشد که این محدودیت لینوکس است (DNS نام‌های طولانی‌تری را مجاز می‌داند).

اگر نویسه علامت سؤال "?" در نام میزبان ظاهر شود، هنگام اعمال، به‌طور خودکار و به روشی امن و قطعی از طریق هش رمزنگاری، با یک نویسه هگزادسیمال مشتق‌شده از machine-id(5) جایگزین می‌شود. مثال: "foobar-????-????" بسته به شناسه ماشین محلی، به‌طور خودکار به "foobar-92a9-061c" یا مشابه آن بسط می‌یابد.

برای شرح چگونگی تعیین نام میزبان جایگزین توسط systemd-hostnamed.service(8)، به org.freedesktop.hostname1(5) مراجعه کنید.

اضافه‌شده در نسخه 248.

ARCHITECTURE=

رشته‌ای که مشخص می‌کند باینری‌های فضای کاربری (userspace) به کدام معماری CPU نیاز دارند. شناسه‌های معماری همان شناسه‌هایی هستند که برای ConditionArchitecture= شرح‌داده‌شده در systemd.unit(5) به کار می‌روند. این فیلد اختیاری است و فقط زمانی باید استفاده شود که تنها از یک معماری پشتیبانی می‌شود. هنگامی که در یک پارتیشن GPT با نوع GUID استفاده می‌شود که قبلاً معماری را کدگذاری کرده است، ممکن است اطلاعات زائدی ارائه دهد. اگر این‌گونه نیست، معماری باید مثلاً در یک ایمیج افزونه مشخص شود تا از بارگذاری آن توسط یک میزبان ناسازگار جلوگیری به عمل آید.

اضافه‌شده در نسخه 252.

SYSEXT_LEVEL=

یک رشته با حروف کوچک (عمدتاً عددی، بدون فاصله یا سایر نویسه‌های خارج از 0–9، a–z، "."، "_" و "-") که سطح پشتیبانی از افزونه‌های سیستم‌عامل را برای نشان دادن اینکه کدام ایمیج‌های افزونه پشتیبانی می‌شوند مشخص می‌کند. برای اطلاعات بیشتر به /usr/lib/extension-release.d/extension-release.IMAGE، initrd[2] و systemd-sysext(8) مراجعه کنید.

مثال‌ها: "SYSEXT_LEVEL=2"، "SYSEXT_LEVEL=15.14".

اضافه‌شده در نسخه 248.

CONFEXT_LEVEL=

از نظر معنایی همانند SYSEXT_LEVEL= است اما برای ایمیج‌های confext کاربرد دارد. برای اطلاعات بیشتر به /etc/extension-release.d/extension-release.IMAGE مراجعه کنید.

مثال‌ها: "CONFEXT_LEVEL=2"، "CONFEXT_LEVEL=15.14".

اضافه‌شده در نسخه 254.

SYSEXT_SCOPE=

فهرستی از یک یا چند رشته از میان "system"، "initrd" و "portable" که با فاصله از هم جدا شده‌اند دریافت می‌کند. این فیلد تنها در فایل‌های extension-release.d/ پشتیبانی می‌شود و نشان می‌دهد افزونه سیستم برای چه محیط‌هایی قابل اعمال است: یعنی برای سیستم‌های معمولی، برای initrdها و exitrdها، یا برای ایمیج‌های سرویس پرتابل. در صورت عدم تعیین، "SYSEXT_SCOPE=system portable" ضمنی تلقی می‌شود؛ یعنی هر افزونه سیستمی فاقد این فیلد برای سیستم‌های معمولی و محیط‌های سرویس پرتابل قابل اعمال است، اما برای محیط‌های initrd/exitrd اعمال‌پذیر نیست.

اضافه‌شده در نسخه 250.

CONFEXT_SCOPE=

از نظر معنایی همانند SYSEXT_SCOPE= است اما برای ایمیج‌های confext کاربرد دارد.

اضافه‌شده در نسخه 254.

PORTABLE_PREFIXES=

فهرستی از یک یا چند رشته تطبیق پیشوند معتبر برای منطق سرویس‌های پرتابل (Portable Services)[3] که با فاصله از هم جدا شده‌اند دریافت می‌کند. این فیلد دو هدف را برآورده می‌سازد: این فیلد جنبه اطلاعاتی دارد و ایمیج‌های سرویس پرتابل را به‌عنوان چنین ایمیج‌هایی شناسایی می‌کند (و بدین ترتیب امکان تمایز آن‌ها را از سایر ایمیج‌های سیستم‌عامل، مانند ایمیج‌های سیستم با قابلیت بوت، فراهم می‌سازد). همچنین هنگام اتصال (attach) یک ایمیج سرویس پرتابل استفاده می‌شود: پیشوند سرویس پرتابلِ مشخص‌شده یا ضمنی با فهرست مشخص‌شده در اینجا مطابقت داده می‌شود تا محدودیت‌های نحوه اتصال ایمیج‌ها به یک سیستم اعمال گردد.

اضافه‌شده در نسخه 250.

PORTABLE_SCOPE=

دامنه (اسکوپ) سرویس پرتابل را مشخص می‌کند. یکی از مقادیر "system"، "user" یا "any" را می‌پذیرد. هنگامی که روی "system" تنظیم شود، سرویس پرتابل تنها می‌تواند به نمونه سیستمی systemd-portabled متصل شود. هنگامی که روی "user" تنظیم شود، سرویس پرتابل تنها می‌تواند به نمونه کاربری systemd-portabled متصل شود. هنگامی که روی "any" تنظیم شود، سرویس پرتابل می‌تواند به هر دو نمونه کاربری و سیستمی systemd-portabled متصل گردد. در صورت عدم تنظیم، "PORTABLE_SCOPE=system" ضمنی است.

اضافه‌شده در نسخه 259.

اگر از این فایل برای تعیین سیستم‌عامل یا نسخه خاصی از آن استفاده می‌کنید، از فیلدهای ID و VERSION_ID، و در صورت لزوم با ID_LIKE به‌عنوان جایگزین برای ID استفاده نمایید. هنگام جستجو برای یک رشته شناسایی سیستم‌عامل به منظور ارائه به کاربر، از فیلد PRETTY_NAME استفاده کنید.

توجه داشته باشید که ارائه‌دهندگان سیستم‌عامل ممکن است تصمیم بگیرند اطلاعات نسخه را ارائه ندهند، برای مثال به منظور هماهنگی با انتشارهای غلطان (rolling releases). در این حالت، VERSION و VERSION_ID ممکن است تنظیم‌نشده باقی بمانند. برنامه‌ها نباید به تنظیم بودن این فیلدها اتکا کنند.

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

مثال: "DEBIAN_BTS="debbugs://bugs.debian.org"".

مدیران محیط‌های اجرایی کانتینر و سندباکس می‌توانند داده‌های شناسایی میزبان را با ارائه /etc/os-release میزبان (در صورت وجود، و در غیر این صورت /usr/lib/os-release به عنوان جایگزین) در مسیر /run/host/os-release در دسترس برنامه‌ها قرار دهند.

مثال ۱. فایل os-release برای Fedora Workstation

NAME=Fedora
VERSION="32 (Workstation Edition)"
ID=fedora
VERSION_ID=32
PRETTY_NAME="Fedora 32 (Workstation Edition)"
ANSI_COLOR="0;38;2;60;110;180"
LOGO=fedora-logo-icon
CPE_NAME="cpe:/o:fedoraproject:fedora:32"
HOME_URL="https://fedoraproject.org"
DOCUMENTATION_URL="https://docs.fedoraproject.org/en-US/fedora/f32/system-administrators-guide"
SUPPORT_URL="https://fedoraproject.org/wiki/Communicating_and_getting_help"
BUG_REPORT_URL="https://bugzilla.redhat.com"
REDHAT_BUGZILLA_PRODUCT="Fedora"
REDHAT_BUGZILLA_PRODUCT_VERSION=32
REDHAT_SUPPORT_PRODUCT="Fedora"
REDHAT_SUPPORT_PRODUCT_VERSION=32
PRIVACY_POLICY_URL="https://fedoraproject.org/wiki/Legal:PrivacyPolicy"
VARIANT="Workstation Edition"
VARIANT_ID=workstation

مثال ۲. فایل extension-release برای یک افزونه برای Fedora Workstation 32

ID=fedora
VERSION_ID=32

مثال ۳. خواندن os-release در sh(1)

#!/bin/sh -eu
# SPDX-License-Identifier: MIT-0
test -e /etc/os-release && os_release='/etc/os-release' || os_release='/usr/lib/os-release'
. "${os_release}"
echo "Running on ${PRETTY_NAME:-Linux}"
if [ "${ID:-linux}" = "debian" ] || [ "${ID_LIKE#*debian*}" != "${ID_LIKE}" ]; then
    echo "Looks like Debian!"
fi

مثال ۴. خواندن os-release در python(1) (نسخه‌های >= 3.10)

#!/usr/bin/python
# SPDX-License-Identifier: MIT-0
import platform
os_release = platform.freedesktop_os_release()
pretty_name = os_release.get('PRETTY_NAME', 'Linux')
print(f'Running on {pretty_name!r}')
if 'fedora' in [os_release.get('ID', 'linux'), *os_release.get('ID_LIKE', '').split()]:
    print('Looks like Fedora!')

برای جزئیات بیشتر به مستندات platform.freedesktop_os_release[7] مراجعه کنید.

مثال ۵. خواندن os-release در python(1) (تمامی نسخه‌ها)

#!/usr/bin/python
# SPDX-License-Identifier: MIT-0
import ast
import re
import sys
def read_os_release():
    try:
        filename = '/etc/os-release'
        f = open(filename)
    except FileNotFoundError:
        filename = '/usr/lib/os-release'
        f = open(filename)
    for line_number, line in enumerate(f, start=1):
        line = line.rstrip()
        if not line or line.startswith('#'):
            continue
        if m := re.match(r'([A-Z][A-Z_0-9]+)=(.*)', line):
            name, val = m.groups()
            if val and val[0] in '"\'':
                val = ast.literal_eval(val)
            yield name, val
        else:
            print(f'{filename}:{line_number}: bad line {line!r}', file=sys.stderr)
os_release = dict(read_os_release())
pretty_name = os_release.get('PRETTY_NAME', 'Linux')
print(f'Running on {pretty_name!r}')
if 'debian' in [os_release.get('ID', 'linux'), *os_release.get('ID_LIKE', '').split()]:
    print('Looks like Debian!')

توجه داشته باشید که نسخه فوق که از پیاده‌سازی داخلی استفاده می‌کند در بیشتر موارد ارجح است، و نسخه دستی ارائه‌شده در اینجا صرفاً جهت ارجاع و مرجع ذکر شده است.

systemd(1), lsb_release(1), hostname(5), machine-id(5), machine-info(5)

1.
اعلامیه /etc/os-release
2.
initrd
3.
Portable Services
4.
مشخصات Common Platform Enumeration
5.
قالب RFC3986
6.
مشخصات تم آیکون freedesktop.org
7.
platform.freedesktop_os_release
systemd 261.2