UPDATECTL(1) updatectl UPDATECTL(1)

updatectl - مدیریت سرویس به‌روزرسانی سیستم

updatectl [OPTIONS...] {COMMAND} [TARGET...]

updatectl می‌تواند برای بررسی و نصب به‌روزرسانی‌های سیستم که توسط systemd-sysupdated.service(8) مدیریت می‌شوند، استفاده شود.

فرمان‌های زیر پشتیبانی می‌شوند:

list [TARGET[@VERSION]]

نمایش اطلاعات درباره اهداف و نسخه‌های آن‌ها.

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

برای جزئیات خروجی، مثال زیر را ببینید.

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

check [TARGET...]

بررسی می‌کند که آیا به‌روزرسانی‌ای برای اهداف مشخص‌شده در دسترس است یا خیر. اگر هیچ هدفی مشخص نشود، وجود به‌روزرسانی برای تمام اهداف موجود بررسی خواهد شد.

برای جزئیات خروجی، مثال زیر را ببینید.

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

update [TARGET[@VERSION]...]

اهداف مشخص‌شده را به نسخه‌های تعیین‌شده به‌روزرسانی می‌کند. اگر یک هدف بدون نسخه مشخص شود، به آخرین نسخه به‌روزرسانی خواهد شد. اگر هیچ هدفی مشخص نشود، تمام اهداف موجود به آخرین نسخه به‌روزرسانی می‌شوند.

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

vacuum [TARGET...]

پاک‌سازی نسخه‌های قدیمی اهداف مشخص‌شده. اگر هیچ هدفی مشخص نشود، تمام اهداف موجود پاک‌سازی (vacuum) خواهند شد.

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

features [FEATURE]

هنگامی که هیچ FEATURE مشخص نشده باشد، این فرمان تمام ویژگی‌های اختیاری را فهرست می‌کند. هنگامی که یک FEATURE مشخص شده باشد، این فرمان تمام اطلاعات شناخته‌شده درباره آن ویژگی را فهرست می‌نماید.

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

enable FEATURE..., disable FEATURE...

این فرمان‌ها ویژگی‌های اختیاری را فعال یا غیرفعال می‌کنند. به sysupdate.features(5) مراجعه کنید. این فرمان‌ها همیشه روی سیستم میزبان عمل می‌کنند.

به‌طور پیش‌فرض، این فرمان‌ها تنها با ایجاد یا حذف فایل‌های drop-in پیکربندی سیستم را تغییر می‌دهند؛ آن‌ها ویژگی‌های فعال‌شده را بلافاصله بارگیری نمی‌کنند، و بازمانده‌های ویژگی‌های غیرفعال‌شده را فوراً پاک‌سازی نمی‌نمایند. ویژگی‌های فعال‌شده در به‌روزرسانی بعدی هدف بارگیری و نصب خواهند شد، و انتقال‌های غیرفعال‌شده در به‌روزرسانی بعدی یا هنگام پاک‌سازی (vacuum) هدف پاک خواهند شد. برای اعمال فوری این تغییرات، --now را ارسال کنید.

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

--no-ask-password

عدم درخواست احراز هویت از کاربر برای عملیات دارای اختیارات ویژه.

-h, --help

نمایش یک متن راهنمای کوتاه و خروج.

--version

نمایش یک رشته کوتاه از نسخه و خروج.

گزینه‌های زیر پشتیبانی می‌شوند:

--reboot

هنگام استفاده با فرمان update، پس از اتمام اعمال به‌روزرسانی‌ها، سیستم را بازراه‌اندازی (ری‌بوت) می‌کند. اگر هر یک از به‌روزرسانی‌ها با شکست مواجه شود، سیستم ری‌بوت نخواهد شد.

هنگام استفاده با فرمان‌های enable یا disable و پرچم --now، پس از اتمام بارگیری یا پاک‌سازی، سیستم را بازراه‌اندازی می‌کند.

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

--offline

هنگام استفاده با فرمان list، دریافت فراداده از شبکه را غیرفعال می‌کند. این امر باعث می‌شود فرمان list تنها اطلاعاتی را که به صورت محلی در دسترس است برگرداند (یعنی اطلاعات درباره نسخه‌هایی که از قبل روی سیستم نصب شده‌اند).

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

--now

هنگام استفاده با فرمان enable، ویژگی‌های فعال‌شده را بارگیری و نصب می‌کند. هنگام استفاده با فرمان disable، تمام منابع بارگیری‌شده توسط ویژگی‌های غیرفعال‌شده را حذف می‌نماید.

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

-H, --host=

عملیات را از راه دور اجرا می‌کند. یک نام میزبان، یا یک نام کاربری و نام میزبان جداشده با "@" را برای اتصال مشخص کنید. نام میزبان ممکن است به صورت اختیاری با یک درگاه که ssh روی آن گوش می‌دهد و با ":" جدا شده است، و سپس یک نام کانتینر که با "/" جدا شده است پسوندگذاری شود، که مستقیماً به یک کانتینر خاص روی میزبان مشخص‌شده متصل می‌شود. این کار از SSH برای گفتگو با نمونه مدیر ماشین راه دور استفاده می‌کند. نام‌های کانتینر را می‌توان با machinectl -H HOST برشمرد. نشانی‌های IPv6 را داخل براکت قرار دهید.

--no-pager

خروجی را به یک صفحه‌بند لوله‌کشی (pipe) نمی‌کند.

--no-legend

راهنما را چاپ نمی‌کند، یعنی سربرگ ستون‌ها و پاورقی حاوی نکات را نمایش نمی‌دهد.

در صورت موفقیت 0 و در غیر این صورت یک کد خطای غیرصفر بازگردانده می‌شود.

$SYSTEMD_LOG_LEVEL

حداکثر سطح لاگ پیام‌های صادرشده (پیام‌هایی با سطح لاگ بالاتر، یعنی کم‌اهمیت‌تر، متوقف خواهند شد). فهرستی از مقادیر جداشده با کاما را می‌پذیرد. یک مقدار می‌تواند یکی از موارد زیر (به ترتیب کاهش اهمیت) باشد: emerg، alert، crit، err، warning، notice، info، debug، یا یک عدد صحیح در محدوده 0...7. برای اطلاعات بیشتر به syslog(3) مراجعه کنید. هر مقدار می‌تواند به صورت اختیاری با یکی از پیشوندهای console، syslog، kmsg یا journal به همراه یک دونقطه برای تنظیم حداکثر سطح لاگ برای آن مقصد لاگ خاص همراه شود (به‌عنوان مثال SYSTEMD_LOG_LEVEL=debug,console:info مشخص می‌کند که ثبت لاگ در سطح debug انجام شود به جز هنگام ثبت در کنسول که باید در سطح info باشد). توجه داشته باشید که حداکثر سطح لاگ سراسری نسبت به سطوح لاگ برای هر مقصد اولویت دارد.

$SYSTEMD_LOG_COLOR

یک مقدار بولی. اگر درست (true) باشد، پیام‌های نوشته‌شده در tty متناسب با اولویت رنگ‌آمیزی می‌شوند.

این تنظیم تنها زمانی مفید است که پیام‌ها مستقیماً در ترمینال نوشته شوند، زیرا journalctl(1) و سایر ابزارهایی که لاگ‌ها را نمایش می‌دهند پیام‌ها را خودشان بر اساس سطح لاگ رنگ‌آمیزی می‌کنند.

$SYSTEMD_LOG_TIME

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

این تنظیم تنها زمانی مفید است که پیام‌ها مستقیماً در ترمینال یا یک فایل نوشته شوند، زیرا journalctl(1) و سایر ابزارهایی که لاگ‌ها را نمایش می‌دهند برچسب‌های زمانی را خودشان بر اساس فراداده‌های ورودی پیوست می‌کنند.

$SYSTEMD_LOG_LOCATION

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

توجه داشته باشید که مکان لاگ اغلب به هر حال به عنوان فراداده به ورودی‌های ژورنال پیوست می‌شود. با این وجود، گنجاندن مستقیم آن در متن پیام می‌تواند هنگام اشکال‌زدایی برنامه‌ها سودمند باشد.

$SYSTEMD_LOG_TID

یک مقدار بولی. در صورت فعال بودن، پیام‌ها با شناسه عددی ریسه (TID) فعلی پیشوندگذاری می‌شوند.

توجه داشته باشید که این اطلاعات اغلب به هر حال به عنوان فراداده به ورودی‌های ژورنال پیوست می‌شود. با این حال، گنجاندن مستقیم آن در متن پیام می‌تواند هنگام اشکال‌زدایی برنامه‌ها سودمند باشد.

$SYSTEMD_LOG_TARGET

مقصد پیام‌های لاگ. یکی از موارد: console (ثبت لاگ در tty متصل)، console-prefixed (ثبت لاگ در tty متصل اما با پیشوندهای کدگذاری‌کننده سطح لاگ و «facility»، به syslog(3) مراجعه کنید)، kmsg (ثبت لاگ در بافر حلقوی لاگ هسته)، journal (ثبت لاگ در ژورنال)، journal-or-kmsg (ثبت لاگ در ژورنال در صورت در دسترس بودن، و در غیر این صورت در kmsg)، auto (تعیین خودکار مقصد لاگ مناسب، حالت پیش‌فرض)، null (غیرفعال کردن خروجی لاگ).

$SYSTEMD_LOG_RATELIMIT_KMSG

تعیین اینکه آیا ارسال به kmsg محدودسازی نرخ شود یا خیر. یک مقدار بولی می‌گیرد. پیش‌فرض "true" است. در صورت غیرفعال بودن، systemd پیام‌های نوشته‌شده در kmsg را محدود نمی‌کند.

$SYSTEMD_PAGER, $PAGER

صفحه‌بندی که هنگام عدم ارسال --no-pager استفاده می‌شود. در صورت تنظیم بودن، $SYSTEMD_PAGER استفاده می‌شود؛ در غیر این صورت $PAGER به کار می‌رود. اگر هیچ‌یک از $SYSTEMD_PAGER یا $PAGER تنظیم نشده باشند، مجموعه‌ای از پیاده‌سازی‌های شناخته‌شده صفحه‌بند به نوبت امتحان می‌شوند، از جمله less(1) و more(1)، تا زمانی که یکی پیدا شود. اگر هیچ پیاده‌سازی صفحه‌بندی کشف نشود، صفحه‌بندی فراخوانی نخواهد شد. تنظیم این متغیرهای محیطی به یک رشته خالی یا مقدار "cat" معادل ارسال --no-pager است.

نکته: اگر $SYSTEMD_PAGERSECURE تنظیم نشده باشد، $SYSTEMD_PAGER و $PAGER تنها می‌توانند برای غیرفعال کردن صفحه‌بند (با "cat" یا "") استفاده شوند و در غیر این صورت نادیده گرفته می‌شوند.

$SYSTEMD_LESS

بازنویسی گزینه‌های ارسالی به less (به‌طور پیش‌فرض "FRSXMK").

کاربران ممکن است بخواهند به‌طور خاص دو گزینه را تغییر دهند:

K

این گزینه به صفحه‌بند دستور می‌دهد با فشرده شدن Ctrl+C بلافاصله خارج شود. برای اینکه به less اجازه دهید خودش Ctrl+C را برای بازگشت به خط فرمان صفحه‌بند مدیریت کند، این گزینه را لغو کنید.

اگر مقدار $SYSTEMD_LESS شامل "K" نباشد و صفحه‌بند فراخوانی‌شده less باشد، Ctrl+C توسط برنامه اجرایی نادیده گرفته شده و باید توسط صفحه‌بند مدیریت شود.

X

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

توجه داشته باشید که تنظیم متغیر محیطی معمولی $LESS هیچ تأثیری بر فراخوانی‌های less توسط ابزارهای systemd ندارد.

برای توضیحات بیشتر به less(1) مراجعه کنید.

$SYSTEMD_LESSCHARSET

بازنویسی مجموعه نویسه‌های ارسالی به less (به‌طور پیش‌فرض "utf-8"، در صورتی که ترمینال فراخوان سازگار با UTF-8 تشخیص داده شود).

توجه داشته باشید که تنظیم متغیر محیطی معمولی $LESSCHARSET هیچ تأثیری بر فراخوانی‌های less توسط ابزارهای systemd ندارد.

$SYSTEMD_PAGERSECURE

دستورات رایج صفحه‌بند مانند less(1)، علاوه بر «صفحه‌بندی» یعنی پیمایش در خروجی، از باز کردن یا نوشتن در فایل‌های دیگر و اجرای دستورات دلخواه شل پشتیبانی می‌کنند. هنگامی که دستورات با اختیارات بالا اجرا می‌شوند، برای مثال تحت sudo(8) یا pkexec(1)، صفحه‌بند به یک مرز امنیتی تبدیل می‌شود. باید دقت شود که تنها برنامه‌هایی با عملکرد کاملاً محدود به عنوان صفحه‌بند استفاده شوند، و ویژگی‌های تعاملی ناخواسته مانند باز کردن یا ایجاد فایل‌های جدید یا آغاز زیرپردازش‌ها مجاز نباشند. «حالت امن» برای صفحه‌بند را می‌توان همان‌طور که در زیر توضیح داده شده فعال کرد، اگر صفحه‌بند از آن پشتیبانی کند (بیشتر صفحه‌بندها به گونه‌ای نوشته نشده‌اند که این موضوع را در نظر بگیرند). توصیه می‌شود هنگام اجازه دادن به کاربران غیرقابل اعتماد برای اجرای دستورات با اختیارات بالا، یا «حالت امن» را صراحتاً فعال کنید یا با استفاده از --no-pager یا PAGER=cat صفحه‌بند را کاملاً غیرفعال نمایید.

این گزینه یک آرگومان بولی می‌پذیرد. در صورت تنظیم روی true، «حالت امن» صفحه‌بند فعال می‌شود. در «حالت امن»، هنگام فراخوانی صفحه‌بند متغیر LESSSECURE=1 تنظیم خواهد شد که به صفحه‌بند دستور می‌دهد دستوراتی را که فایل‌های جدید باز می‌کنند یا می‌سازند، یا زیرپردازش‌های جدید را آغاز می‌نمایند غیرفعال کند. در حال حاضر تنها less(1) شناخته شده است که این متغیر را درک کرده و «حالت امن» را پیاده‌سازی می‌نماید.

در صورت تنظیم روی false، هیچ محدودیتی روی صفحه‌بند اعمال نمی‌شود. تنظیم SYSTEMD_PAGERSECURE=0 یا حذف نکردن آن از محیط به ارث رسیده ممکن است به کاربر اجازه دهد دستورات دلخواه را فراخوانی کند.

هنگامی که $SYSTEMD_PAGERSECURE تنظیم نشده باشد، ابزارهای systemd تلاش می‌کنند به‌طور خودکار تشخیص دهند که آیا «حالت امن» باید فعال شود و آیا صفحه‌بند از آن پشتیبانی می‌کند یا خیر. «حالت امن» فعال می‌شود اگر شناسه کاربری مؤثر (UID) با مالک نشست ورود یکسان نباشد، به geteuid(2) و sd_pid_get_owner_uid(3) مراجعه کنید، یا هنگام اجرا تحت sudo(8) یا ابزارهای مشابه (که $SUDO_UID تنظیم شده باشد [1]). در این موارد، SYSTEMD_PAGERSECURE=1 تنظیم خواهد شد و صفحه‌بندهایی که اجرای «حالت امن» توسط آن‌ها شناخته نشده است اصلاً استفاده نخواهند شد. توجه داشته باشید که این تشخیص خودکار تنها متداول‌ترین سازوکارهای ارتقای اختیارات را پوشش می‌دهد و برای راحتی کار در نظر گرفته شده است. توصیه می‌شود صراحتاً $SYSTEMD_PAGERSECURE را تنظیم کنید یا صفحه‌بند را غیرفعال نمایید.

توجه داشته باشید که اگر قرار باشد متغیرهای $SYSTEMD_PAGER یا $PAGER رعایت شوند، به جز برای غیرفعال کردن صفحه‌بند، $SYSTEMD_PAGERSECURE نیز باید تنظیم شده باشد.

$SYSTEMD_COLORS

یک آرگومان بولی یا یک مقدار ویژه می‌پذیرد. به‌طور پیش‌فرض (تنظیم‌نشده)، systemd و ابزارهای مرتبط در صورت امکان از رنگ‌ها در خروجی خود استفاده خواهند کرد. اگر $COLORTERM روی "truecolor" یا "24bit" تنظیم شده باشد، رنگ‌های ۲۴ بیتی فعال خواهند شد، در غیر این صورت ۲۵۶ رنگ، مگر اینکه $NO_COLOR یا $TERM نشان دهد که رنگ‌ها غیرفعال هستند.

true

مانند حالت تنظیم‌نشده، به جز اینکه $NO_COLOR نادیده گرفته می‌شود.

false

خروجی تک‌رنگ خواهد بود.

"16", "256", "24bit"

به ترتیب همیشه از ۱۶ رنگ پایه ANSI، ۲۵۶ رنگ، یا رنگ ۲۴ بیتی استفاده می‌کند.

"auto-16", "auto-256", "auto-24bit"

از تعداد رنگ‌های داده‌شده، متناسب با $TERM، و آنچه کنسول به آن متصل است، استفاده می‌کند.

$SYSTEMD_URLIFY

مقدار باید یک بولی باشد. کنترل می‌کند که آیا پیوندهای قابل‌کلیک در خروجی برای شبیه‌سازهای ترمینالی که از این قابلیت پشتیبانی می‌کنند تولید شود یا خیر. این گزینه می‌تواند برای بازنویسی تصمیمی که systemd بر اساس $TERM و سایر شرایط می‌گیرد مشخص شود.

توجه داشته باشید که این مثال‌ها صرفاً برای نمایش هستند و خروجی این فرمان‌ها می‌تواند تغییر کند. این فرمان‌ها برای نمایش به کاربر در نظر گرفته شده‌اند. اگر خروجی قابل‌خواندن توسط ماشین می‌خواهید، مستقیماً از API دی‌باس org.freedesktop.sysupdate1(5) استفاده کنید.

مثال ۱. خروجی list

$ updatectl list
TARGET         VERSION PATH
host           48      sysupdate.d
machine:fedora 38      /var/lib/machines/fedora.raw
component:shim 15.7    sysupdate.shim.d
$ updatectl list host
  VERSION STATUS
↻ 50      candidate
  49      available
● 48      current
  47      available
  46      available
  45      available
[...]
× 25      available+obsolete
× 24      available+obsolete
× 23      available+obsolete
[...]
$ updatectl list host@49
↻ Version: 50
  State: candidate
  ChangeLog: https://vendor.com/os/v50.html
TYPE     PATH                                                                   PTUUID                               PTFLAGS SHA256
url-file http://dl.vendor.com/os/uki_50                                         -                                          - 90f6534282dd720f7a222fa781086990dc9c83e5c7499f085970a8e75e3ac349
url-file http://dl.vendor.com/os/usr_50_981a5b84-a301-c819-f681-3e575fe16f16    981a5b84-a301-c819-f681-3e575fe16f16       - c0596ab1095258ec6f16c7c281a50d71c419a9f587c1ef858cfbbb69fb0a16f3
url-file http://dl.vendor.com/os/verity_50_2f8d0f3b-f80a-6ddc-a556-3722bfbb5b79 2f8d0f3b-f80a-6ddc-a556-3722bfbb5b79       - e1e90a128e038b3a53455e55d1ca717c743aba31fe6b4b4624109df0243c6338
url-file http://dl.vendor.com/os/verity_sig_50                                  -                                          - ca3d163bab055381827226140568f3bef7eaac187cebd76878e0b63e9e442356

مثال ۲. بررسی و نصب به‌روزرسانی‌ها

$ updatectl check
TARGET         UPDATE
host           48 → 50
machine:fedora 38 → 40
$ updatectl update host machine:fedora@39
[...]
✓ host@50
✓ machine:fedora@39

systemd(1), systemd-sysupdate(8) systemd-sysupdated.service(8) sysupdate.d(5),

1.
توصیه می‌شود سایر ابزارها $SUDO_UID را در صورت لزوم تنظیم و بررسی کنند، و با آن به عنوان یک رابط مشترک رفتار نمایند.
systemd 261.2