- unstable 4.31.0-1
| OS-RELEASE(5) | os-release | OS-RELEASE(5) |
الاسم¶
os-release، initrd-release، extension-release - تعريف نظام التشغيل
موجز¶
الوصف¶
يحتوي الملفان /etc/os-release و /usr/lib/os-release على بيانات تعريف نظام التشغيل.
تنسيق os-release هو قائمة مفصولة بأسطر جديدة من تعيينات متغيرات متوافقة مع الصدفة تشبه البيئة. من الممكن استيراد الإعدادات من نصوص Bourne shell، ولكن، بعيدًا عن مجرد تعيينات المتغيرات، لا تُدعم أي ميزات صدفة (وهذا يعني أن توسيع المتغير غير مدعوم صراحة)، مما يسمح للتطبيقات بقراءة الملف دون تنفيذ محرك تنفيذ متوافق مع الصدفة. يجب وضع قيم تعيين المتغيرات بين علامتي اقتباس مزدوجة أو مفردة إذا كانت تتضمن مسافات أو فاصلة منقوطة أو أحرفًا خاصة أخرى خارج A–Z، a–z، 0–9. (يمكن أيضًا وضع التعيينات التي لا تتضمن هذه الأحرف الخاصة بين علامتي اقتباس، ولكن هذا اختياري.) يجب الهروب من الأحرف الخاصة بالصدفة ("$"، علامات الاقتباس، الخط المائل العكسي، علامة التنصيص الخلفية) باستخدام الخطوط المائلة العكسية، وفقًا لنمط الصدفة. يجب أن تكون جميع السلاسل بترميز UTF-8، ويجب عدم استخدام الأحرف غير القابلة للطباعة. لا يُدعم دمج سلاسل متعددة مقتبسة بشكل فردي. تُعامل الأسطر التي تبدأ بـ "#" كتعليقات. يُسمح بالأسطر الفارغة ويتم تجاهلها.
الملف /etc/os-release له أولوية على /usr/lib/os-release. يجب على التطبيقات التحقق من الأول، واستخدام بياناته حصريًا إذا كان موجودًا، والرجوع فقط إلى /usr/lib/os-release إذا كان مفقودًا. يجب على التطبيقات عدم دمج البيانات من كلا الملفين. /usr/lib/os-release هو المكان الموصى به لتخزين معلومات إصدار نظام التشغيل كجزء من أشجار البائعين. يجب أن يكون /etc/os-release رابطًا رمزيًا نسبيًا إلى /usr/lib/os-release، لتوفير التوافق مع التطبيقات التي تنظر فقط إلى /etc/. الرابط الرمزي النسبي بدلاً من الرابط الرمزي المطلق ضروري لتجنب كسر الرابط في بيئة chroot أو initrd.
يحتوي os-release على بيانات يحددها بائع نظام التشغيل ويجب عمومًا عدم تغييرها من قبل المسؤول.
نظرًا لأن هذا الملف يرمز فقط الأسماء والمعرفات، فلا يجب توطينه.
قد يكون الملفان /etc/os-release و /usr/lib/os-release روابط رمزية لملفات أخرى، ولكن من المهم أن يكون الملف متاحًا من بداية الإقلاع المبكرة، وبالتالي يجب أن يكون موجودًا على نظام الملفات الجذر.
يجب ألا يحتوي os-release على مفاتيح متكررة. ومع ذلك، يجب على القارئ اختيار الإدخالات لاحقًا في الملف في حالة التكرار، على غرار كيفية قيام الصدفة باستيراد الملف. قد يحذر القارئ من الإدخالات المتكررة.
للحصول على مبرر أطول لـ os-release، يُرجى الرجوع إلى إعلان /etc/os-release[1].
/etc/initrd-release¶
في 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¶
يلعب /usr/lib/extension-release.d/extension-release.IMAGE نفس دور os-release للنظام الرئيسي لصور الامتداد، ويتبع بناء الجملة والقواعد كما هو موضح في صفحة الخدمات المحمولة[3]. الغرض من هذا الملف هو تعريف الامتداد والسماح لنظام التشغيل بالتحقق من أن صورة الامتداد تطابق نظام التشغيل الأساسي. يتم تنفيذ هذا عادةً عن طريق التحقق من أن خيار الامتداد ID= إما يطابق خيار المضيف ID= أو يتم تضمينه في خيار المضيف ID_LIKE=، وإما أن SYSEXT_LEVEL= موجود ويتطابق أيضًا، أو إذا لم يكن موجودًا، فإن VERSION_ID= موجود ويتطابق. يضمن هذا التوافق بين ABI/API بين الطبقات ويمنع دمج صورة غير متوافقة في تراكب.
من أجل تعريف صورة الامتداد نفسها، يمكن إضافة نفس الحقول المحددة أدناه إلى ملف extension-release ببادئة SYSEXT_ (لإزالة الغموض عن الحقول المستخدمة للمطابقة على الصورة الأساسية). على سبيل المثال: SYSEXT_ID=myext، SYSEXT_VERSION_ID=1.2.3.
في اسم ملف extension-release.IMAGE، يجب أن يتطابق الجزء IMAGE تمامًا مع اسم ملف الصورة المحتوية مع إزالة اللاحقة. في حالة عدم القدرة على ضمان أن اسم ملف الصورة مستقر ولا يتغير بين مرحلتي البناء والنشر، يمكن تخفيف هذا الفحص: إذا كان ملف واحد بالضبط يتطابق اسمه مع "extension-release.*" موجودًا في هذا الدليل، وكان الملف موسومًا بـ user.extension-release.strict xattr(7) مضبوطًا على السلسلة "0"، فسيتم استخدامه بدلاً من ذلك.
يجب فهم باقي هذا المستند الذي يتحدث عن os-release على أنه ينطبق على extension-release أيضًا.
الخيارات¶
يمكن تعيين معلمات تعريف نظام التشغيل التالية باستخدام os-release:
معلومات عامة تحدد نظام التشغيل¶
NAME=
أمثلة: "NAME=Fedora"، "NAME="Debian GNU/Linux"".
ID=
أمثلة: "ID=fedora"، "ID=debian".
ID_LIKE=
أمثلة: بالنسبة لنظام تشغيل مع "ID=centos"، سيكون تعيين "ID_LIKE="rhel fedora"" مناسبًا. بالنسبة لنظام تشغيل مع "ID=ubuntu"، يكون تعيين "ID_LIKE=debian" مناسبًا.
PRETTY_NAME=
مثال: "PRETTY_NAME="Fedora 17 (Beefy Miracle)""
FANCY_NAME=
على عكس PRETTY_NAME=، يجب ألا يحتوي هذا الحقل على معلومات موجودة في حقول أخرى، خاصة الإصدار (المحدد بالفعل في VERSION=) أو الاسم الرمزي (المحدد بالفعل في VERSION_CODENAME=).
مثال: "FANCY_NAME="🍅 \e033[31mTomato\e033[0;1mOS\e033[0m""
أُضيف في الإصدار 260.
CPE_NAME=
مثال: "CPE_NAME="cpe:/o:fedoraproject:fedora:17""
VARIANT=
أمثلة: "VARIANT="Server Edition""، "VARIANT="Smart Refrigerator Edition"".
ملاحظة: هذا الحقل لأغراض العرض فقط. يجب استخدام حقل VARIANT_ID لاتخاذ قرارات برمجية.
أُضيف في الإصدارة 220.
VARIANT_ID=
أمثلة: "VARIANT_ID=server"، "VARIANT_ID=embedded".
أُضيف في الإصدارة 220.
معلومات حول إصدار نظام التشغيل¶
VERSION=
أمثلة: "VERSION=17"، "VERSION="17 (Beefy Miracle)"".
VERSION_ID=
أمثلة: "VERSION_ID=17"، "VERSION_ID=11.04".
VERSION_CODENAME=
أمثلة: "VERSION_CODENAME=buster"، "VERSION_CODENAME=xenial".
أُضيف في الإصدارة 231.
BUILD_ID=
أمثلة: "BUILD_ID="2013-03-20.3""، "BUILD_ID=201303203".
أُضيف في الإصدار 200.
IMAGE_ID=
أمثلة: "IMAGE_ID=vendorx-cashier-system"، "IMAGE_ID=netbook-image".
أُضيف في الإصدار 249.
IMAGE_VERSION=
أمثلة: "IMAGE_VERSION=33"، "IMAGE_VERSION=47.1rc1".
أُضيف في الإصدار 249.
RELEASE_TYPE=
إذا لم يُضبط، أو كانت القيمة غير معروفة، يُفترض أن الإصدار هو "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="https://fedoraproject.org/"", "BUG_REPORT_URL="https://bugzilla.redhat.com/"".
SUPPORT_END=
على سبيل المثال، "SUPPORT_END=2001-01-01" يعني أن النظام كان مدعومًا حتى نهاية اليوم الأخير من الألفية السابقة.
أُضيف في الإصدار 252.
LOGO=
أمثلة: "LOGO=fedora-logo"، "LOGO=distributor-logo-opensuse"
أُضيف في الإصدار 240.
ANSI_COLOR=
أمثلة: "ANSI_COLOR="0;31"" للأحمر، "ANSI_COLOR="1;34"" للأزرق الفاتح، أو "ANSI_COLOR="0;38;2;60;110;180"" للأزرق فيدورا.
ANSI_COLOR_REVERSE=
أُضيف في الإصدار 259.
VENDOR_NAME=
يهدف هذا الاسم إلى عرضه في واجهات "حول هذا النظام" أو واجهات تحديث البرامج عند الحاجة لتمييز بائع نظام التشغيل عن نظام التشغيل نفسه. يهدف ليكون مقروءًا بشريًا.
أمثلة: "VENDOR_NAME="Fedora Project"" لفيدورا لينكس، "VENDOR_NAME="Canonical"" لأوبونتو.
أُضيف في الإصدار 254.
VENDOR_URL=
يجب أن تكون القيمة بتنسيق RFC3986[5]، ويجب أن تكون عناوين URL "http:" أو "https:". يجب إدراج عنوان URL واحد فقط في الإعداد.
أمثلة: "VENDOR_URL="https://fedoraproject.org/"", "VENDOR_URL="https://canonical.com/"".
أُضيف في الإصدار 254.
EXPERIMENT=
يهدف هذا الوصف إلى عرضه في وقت تثبيت النظام، أو في واجهات "حول هذا النظام"، لتحذير المستخدم من أنه يقوم بتثبيت/تشغيل بناء تجريبي لنظام التشغيل. إذا كان RELEASE_TYPE هو "experiment" لكن هذا الحقل غير معين، يجب على الواجهة أن تحذر المستخدم، لكنها لن تكون قادرة على شرح ما هو تجريبي بالضبط في البناء الحالي لنظام التشغيل.
أمثلة: "EXPERIMENT="Switch to DNF5"" لبناء تجريبي لفيدورا لينكس مصنوع لاختبار DNF5، "EXPERIMENT="Port to Apple M3 chip"" لبنى تجريبية من Asahi Linux المنقولة إلى Apple M3 SoC، "EXPERIMENT="Mutter !1441: Dynamic triple/double buffering (v4)"" لبنى من GNOME OS التي أنشأها CI الخاص بـ Mutter لطلب الدمج !1441.
أُضيف في الإصدار 257.
EXPERIMENT_URL=
يجب أن تكون القيمة بتنسيق RFC3986[5]، ويجب أن تكون عناوين URL "http:" أو "https:". يجب إدراج عنوان URL واحد فقط في الإعداد.
أمثلة، مقابلة للأمثلة أعلاه في 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=
إذا ظهرت علامة الاستفهام "?" في اسم المضيف، فسيُستبدل آليًا برمز ست عشري مشتق من machine-id(5) عند التطبيق، بشكل آمن وحتمي عبر التجزئة التعموية. مثال: ستُوسع "foobar-????-????" آليًا إلى "foobar-92a9-061c" أو ما شابه، اعتمادًا على معرف الجهاز المحلي.
انظر org.freedesktop.hostname1(5) لوصف لكيفية تحديد systemd-hostnamed.service(8) لاسم المضيف الاحتياطي.
أُضيف في الإصدار 248.
ARCHITECTURE=
أُضيف في الإصدار 252.
SYSEXT_LEVEL=
أمثلة: "SYSEXT_LEVEL=2"، "SYSEXT_LEVEL=15.14".
أُضيف في الإصدار 248.
CONFEXT_LEVEL=
أمثلة: "CONFEXT_LEVEL=2"، "CONFEXT_LEVEL=15.14".
أُضيف في الإصدار 254.
SYSEXT_SCOPE=
أُضيف في الإصدار 250.
CONFEXT_SCOPE=
أُضيف في الإصدار 254.
PORTABLE_PREFIXES=
أُضيف في الإصدار 250.
PORTABLE_SCOPE=
أُضيف في الإصدار 259.
ملاحظات¶
إذا كنت تستخدم هذا الملف لتحديد نظام التشغيل أو إصدار معين منه، استخدم حقلي ID وVERSION_ID، وربما ID_LIKE كبديل احتياطي لـ ID. عند البحث عن سلسلة تعريف نظام تشغيل لعرضها على المستخدم، استخدم حقل PRETTY_NAME.
لاحظ أن بائعي أنظمة التشغيل قد يختارون عدم توفير معلومات الإصدار، على سبيل المثال لاستيعاب الإصدارات المتداولة. في هذه الحالة، قد يكون VERSION وVERSION_ID غير معينين. لا ينبغي للتطبيقات الاعتماد على تعيين هذه الحقول.
قد يوسع بائعو أنظمة التشغيل تنسيق الملف ويقدمون حقولًا جديدة. يُوصى بشدة ببادئة الحقول الجديدة باسم خاص بنظام التشغيل لتجنب تضارب الأسماء. يجب على التطبيقات التي تقرأ هذا الملف تجاهل الحقول غير المعروفة.
مثال: "DEBIAN_BTS="debbugs://bugs.debian.org/"".
قد يجعل مديرو وقت تشغيل الحاويات وصناديق الرمل بيانات تعريف المضيف متاحة للتطبيقات من خلال توفير /etc/os-release للمضيف (إذا كان متاحًا، وإلا /usr/lib/os-release كبديل احتياطي) كـ /run/host/os-release.
أمثلة¶
مثال 1. ملف 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
مثال 2. ملف extension-release لإضافة لـ Fedora Workstation 32
ID=fedora VERSION_ID=32
مثال 3. قراءة 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
مثال 4. قراءة 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] لمزيد من التفاصيل.
مثال 5. قراءة 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.
- الخدمات المحمولة
- 4.
- مواصفات تعداد المنصة المشتركة
- 5.
- تنسيق RFC3986
- 6.
- مواصفات سمة الأيقونات من freedesktop.org
- 7.
- platform.freedesktop_os_release
ترجمة¶
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>
هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.
إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.
| systemd 261~rc3 |