اوبونتوگنو/لینوکس

مدیریت بسته Snap اوبونتو

در دروس قبلی استفاده از Advanced Packaging Tool (APT) برای نصب و به‌روزرسانی بسته‌های نرم‌افزاری در یک سیستم اوبونتو را بررسی کردیم. در سال‌های اخیر، یک سیستم مدیریت بسته جدید به نام Snap توسط تیم اوبونتو در Canonical، Ltd در دست توسعه بوده است. اگرچه هیچ برنامه رسمی برای جایگزینی کامل APT با Snap وجود ندارد، لیست بسته‌هایی که اکنون می‌توانند به‌عنوان «snaps» نصب شوند، در حال رشد است.

هدف این درس معرفی سیستم Snap، برجسته کردن مزایای کلیدی آن نسبت به سیستم APT و تشریح نحوه استفاده از ابزار خط فرمان snap برای نصب و مدیریت بسته‌های نرم‌افزاری مبتنی بر Snap است.

مدیریت نرم‌افزار با Snap

ابزار apt نرم‌افزاری را نصب می‌کند که در فایل‌های .deb بسته‌بندی شده است. بسته‌ای که با استفاده از apt نصب می‌شود، اغلب به بسته‌های دیگری وابسته است که برای کارکرد باید نصب شوند. در طول نصب، apt این وابستگی‌های بسته اضافی را نیز دانلود و نصب می‌کند. یک برنامه طراحی گرافیکی را در نظر بگیرید که به یک کتابخانه تصویربرداری خاص بستگی دارد. در حین نصب، apt بسته برنامه گرافیکی را علاوه بر بسته حاوی کتابخانه‌ای که به آن بستگی دارد نصب می‌کند. حال، فرض کنید که کاربر تصمیم دارد ابزار گرافیکی دیگری را نصب کند که به همان کتابخانه گرافیکی نیز متکی است. معمولاً این مشکلی ایجاد نمی‌کند زیرا برنامه‌ها هر دو کتابخانه یکسانی را به اشتراک می‌گذارند، اما اگر دو برنامه به نسخه‌های مختلف کتابخانه متکی باشند ممکن است مشکلاتی رخ دهد. بنابراین، نصب برنامه دوم ممکن است مانع از کارکرد صحیح برنامه اول شود. یکی دیگر از محدودیت‌های بسته‌های apt و .deb این است که نصب دو نسخه مختلف از یک ابزار یا برنامه به صورت موازی روی یک سیستم دشوار است. برای مثال ممکن است یک کاربر بخواهد نسخه ۱٫۰ برنامه گرافیکی را نصب کرده و در عین حال آخرین نسخه بتا نسخه ۲٫۰ را امتحان کند. پس از آزمایش نسخه ۲٫۰، کاربر ممکن است بخواهد نسخه ۱٫۰ را حذف کند و نسخه جدید را نصب کند، کاری که دستیابی به آن با استفاده از apt دشوار است.

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

البته استفاده از snaps منجر به فایل‌های بسته بزرگ‌تر می‌شود که منجر به طولانی‌تر شدن زمان دانلود بسته، عملکرد نصب کندتر و افزایش استفاده از فضای دیسک می‌شود.

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

فرمان‌های اولیه Snap

اگرچه بسیاری از بسته‌های نرم‌افزاری هنوز در قالب .deb ارائه می‌شوند و با استفاده از apt نصب می‌شوند، تعداد برنامه‌ها و ابزارهایی که اکنون در قالب snap ارائه می‌شوند به سرعت در حال افزایش است. در واقع، تمام نرم‌افزارهای فهرست شده در ابزار نرم‌افزار اوبونتو با استفاده از snap بسته‌بندی و نصب می‌شوند. نرم افزارهای مبتنی بر Snap نیز ممکن است با استفاده از ابزار خط فرمان snap نصب شوند که در این قسمت به اصول اولیه آن پرداخته خواهد شد.

برای فهرست کردن بسته‌های snap که برای دسته خاصی از نرم‌افزارها در دسترس هستند، فرمانی مشابه فرمان زیر را اجرا کنید:

فرمان بالا تمام بسته‌های Snap موجود برای دانلود و نصب حاوی نرم‌افزارهای مرتبط با ویرایش تصویر را فهرست می‌کند. یکی از این نتایج ویرایشگر تصویر gimp خواهد بود. جزئیات مربوط به gimp snap را می‌توان به شرح زیر یافت:

دستور snap find همچنین می‌تواند برای یافتن یک بسته خاص با نام، همراه با سایر بسته‌هایی که ویژگی‌های مشابهی را ارائه می‌دهند، استفاده شود. برای مثال، جستجوی برنامه پخش‌کننده رسانه VLC، بسته‌های نرم‌افزاری مشابه را نیز فهرست می‌کند:

گزینه خط فرمان snap list را می‌توان برای به دست آوردن لیستی از بسته‌های snap که قبلا روی یک سیستم نصب شده‌اند استفاده کرد:

برای نصب یک بسته snap (مثلا برای نصب ابزار Remmina Remote Desktop)، فرمان snap را با گزینه install و سپس نام بسته مورد نظر اجرا کنید:

برای حذف یک بسته snap، به سادگی نام بسته را هنگام اجرای snap با گزینه remove مشخص کنید:

کار با کانال‌های Snap

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

از خروجی بالا می‌بینیم که در حالی که نسخه stable برنامه Remmina v1.4.3+git13.688f5f75 است، نسخه جدیدتر در کانال edge موجود است.

البته کانال‌های candidate، beta و edge دسترسی به نرم‌افزار را به شکل‌های ناپایدار (که سطح ریسک نامیده می‌شود) فراهم می‌کنند، اما اگر می‌خواهید نسخه دسترسی زودهنگام از ویژگی‌های آینده یک بسته را امتحان کنید، با ریسک بالاتر نصب کنید. مثلا:

انتخاب کانال همچنین ممکن است به اختصار –stable، –candidate، –beta یا –edge باشد، برای مثال:

اگر بسته قبلا نصب شده باشد، سطح ریسک را می‌توان با استفاده از گزینه switch تغییر داد:

با این کار کانالی که Snap برای بسته مشخص شده ردیابی می‌کند تغییر می‌کند. کانال فعلی که برای یک بسته ردیابی می‌شود را می‌توان با استفاده از فرمان snap info شناسایی کرد:

اجرای ساده فرمان snap switch بلافاصله بسته را برای استفاده از کانال جدید تازه نمی‌کند. برای درک اینکه چگونه این کار می‌کند، بررسی  snap refresh schedule کمک می‌کند.

Snap Refresh Schedule

سیستم Snap شامل یک سرویس پس‌زمینه به نام snapd است که مسئول تازه‌سازی اسنپ‌های نصب‌شده بر اساس کانال‌هایی است که آنها ردیابی می‌کنند. به طور پیش فرض، snapd عملیات refresh را در فواصل زمانی منظم (معمولاً چهار بار در روز) انجام می‌دهد. برای تشخیص اینکه آخرین رفرش چه زمانی انجام شده است و چه زمانی قرار است انجام شود، فرمان زیر را اجرا کنید:

خروجی بالا همچنین شامل اطلاعات تایمر است که نشان می دهد در هر بازه زمانی ۲۴ ساعته رفرش چهار بار انجام می‌شود:

فرمان snap همچنین می‌تواند برای به‌روزرسانی تمام بسته‌های snap نصب شده به شرح زیر استفاده شود:

روش دیگر، برای تازه کردن یک بسته خاص:

برای تغییر یک بسته به یک کانال دیگر بدون نیاز به منتظر ماندن برای تازه کردن سرویس snapd بعدی، به سادگی فرمان snap refresh را به صورت زیر اجرا کنید و کانال مورد نظر را مشخص کنید:

سیستم snap همچنین دارای مجموعه‌ای از چهار ویژگی است که ممکن است برای تنظیم زمان‌بندی به‌روزرسانی مورد استفاده توسط snapd اصلاح شوند:

  • refresh.timer: برنامه و فرکانس به‌روزرسانی فعلی را ذخیره می‌کند.
  • refresh.hold: برای به تاخیر انداختن عملیات به‌روزرسانی تا روز و ساعت مشخص شده (در قالب RFC 3339) استفاده می‌شود.
  • refresh.metered: هنگامی که دسترسی به شبکه از طریق یک اتصال اندازه‌گیری شده (مانند اتصال داده تلفن همراه) باشد، عملیات به‌روزرسانی را متوقف می‌کند.
  • refresh.retain: برای پیکربندی تعداد بازبینی‌های هر نصب Snap که باید حفظ شود استفاده می‌شود.

برای مثال، برای برنامه‌ریزی به‌روزرسانی در روزهای هفته بین ساعت ۱:۰۰ صبح تا ۲:۰۰ بامداد:

به طور مشابه، فرمان زیر هر روز دو بار رفرش را پیکربندی می‌کند تا بین ساعات ۶:۰۰ صبح تا ۷:۰۰ صبح و ۱۰:۰۰ شب و ۱۱:۰۰ شب رخ دهد:

توضیح کامل فرمت تایمر و نحو آن را می‌توان به صورت آنلاین در آدرس اینترنتی زیر یافت:

timer-string-format

پس از ایجاد تغییر در تایمر، حتما تنظیمات را به صورت زیر بررسی کنید:

برای توقف رفرش، تاریخ و زمانی که قرار است رفرش از سر گرفته شود باید با استفاده از قالب RFC 3339 مشخص شود که جزئیات آن را می‌توانید در URL زیر پیدا کنید:

tools.ietf.org

به طور خلاصه، تاریخ و زمان باید از قالب زیر استفاده کنند:

به عنوان مثال، برای تعیین زمان توقف تا ۱۲ اکتبر ۲۰۲۰ در ساعت ۳:۲۰ صبح برای سیستمی واقع در نیویورک، تاریخ و زمان به صورت زیر قالب‌بندی می‌شود:

توجه داشته باشید که از آنجایی که نیویورک از زمان استاندارد شرقی (EST) استفاده می‌کند، از زمان هماهنگ جهانی (UTC-5:00) -5 ساعت فاصله دارد. پس از قالب‌بندی تاریخ و زمان، از فرمان زیر برای تنظیم نگه داشتن استفاده می‌شود:

برای بررسی تنظیمات نگهداری فعلی، از snap با گزینه system get استفاده کنید:

برای حذف hold، به سادگی یک مقدار null به ویژگی اختصاص دهید:

ویژگی refresh.retain را می‌توان روی هر مقداری بین ۰ تا ۲۰ تنظیم کرد، به عنوان مثال:

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

همانند ویژگی hold، این تنظیم را با اختصاص یک مقدار null به ویژگی غیرفعال کنید:

سرویس‌های Snap

شایان ذکر است که برخی از بسته‌های Snap شامل سرویس‌های مخصوص به خود هستند که هنگام نصب بسته در پس‌زمینه اجرا می‌شوند (مثل سرویس‌های systemd که در دروس قبلی بدان پرداخته شده است). برای به دست آوردن لیستی از خدمات snap که در حال حاضر در یک سیستم در حال اجرا هستند، فرمان snap را با گزینه services اجرا کنید:

خروجی بالا نشان داد که سرویس LivePatch snap در حال حاضر فعال و در دسترس است. برای توقف یا آغاز یک سرویس می‌توان از فرمان زیر استفاده کرد:

به طور مشابه، گزینه‌های snap enable و disable ممکن است برای کنترل اینکه آیا یک سرویس به طور خودکار در هنگام راه‌اندازی سیستم شروع می‌شود یا نه استفاده می‌شود:

اگر سرویس snap یک فایل log تولید کند، آن فایل را می‌توان به صورت زیر مشاهده کرد:

همچنین هنوز امکان مدیریت سرویس‌های Snap با استفاده از فرمان systemctl وجود دارد. این معمولا شامل پیشوند نام سرویس با “snap.” است. مثلا:

خلاصه

تا همین اواخر، تمام بسته‌های نرم‌افزاری اوبونتو در فایل‌های .deb ذخیره می‌شدند و با استفاده از Advanced Packaging Tool (APT) نصب می‌شدند. تعداد فزاینده‌ای از بسته‌ها اکنون برای نصب با استفاده از Snap در دسترس هستند، یک سیستم مدیریت بسته توسعه‌یافته توسط Canonical, Ltd. این تضمین می‌کند که بسته نرم‌افزاری با نسخه‌ای از تمام کتابخانه‌ها و دارایی‌های مورد نیاز برای اجرا در خود محفوظ است. این امر از تضادهای بالقوه بسته‌های متکی بر نسخه‌های مختلف دارایی‌ها و کتابخانه‌های مشترک مشابه جلوگیری می‌کند. سیستم Snap همچنین امکان نصب نسخه‌های مختلف بسته‌های مشابه را به صورت موازی می‌دهد. همه نرم‌افزارهای فهرست شده در ابزار نرم‌افزار اوبونتو به عنوان بسته‌های Snap عرضه می‌شوند. علاوه بر این، snap می‌تواند برای نصب، حذف و مدیریت بسته‌ها از خط فرمان استفاده شود.

منبع: answertopia.com

فرشید نوتاش حقیقت

همیشه نیازمند یک منبع آموزشی فارسی در حوزه نرم‌افزارهای آزاد/ متن‌باز و سیستم‌عامل گنو/لینوکس بودم. از این رو این رسالت رو برای خودم تعریف کردم تا رسانه «محتوای باز» رو بوجود بیارم.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.

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

همچنین ببینید
بستن
دکمه بازگشت به بالا