چرا از اسنپ ها ( Snaps ) میشه به خوبی استفاده کرد؟

سلامتوی مقاله اسنپ ها یه مقدمه راجع به اسنپ ها خوندیم.توی این مقاله بیاید بررسی کنیم که چرا از اسنپ ها استفاده کنیم.خود من بعد از آشنایی با اسنپ ها، یه مدتی هست که دارم ازشون استفاده میکنم، و اسنپ ها توی یه کلمه واقعاً خوبن هم از نظر آپدیت بودن اونها، هم اینکه روی لینوکس نصب میشن ( کلمه لینوکس رو اینجا به کار بردم چون مخصوص یک توزیع لینوکس نیستن و تا الان روی ۴۱ توزیعی که از systemd استفاده میکنن ( systemd-enabled) قابل نصب، مدیریت و اجرا شدن هست.) هم از نظر امنیتی خیلی خوب طراحی شدن، هم میشه چندین نسخه از یک برنامه رو از کانال‌های اون کنار هم نصب کرد (parallel install ) (چیزی که مثلاً برای deb package ها امکان‌پذیر نیست اینکه بیایم نسخه های beta , stable مثلاً بسته vlc رو با هم روی سیستم داشته باشیم.) و یکی از مهم‌ترین ویژگی‌های اون ها اینکه بسته بندی، انتشار و نگهداری اونها خیلی راحت هست.حالا بیاید تا یکی یکی این‌هایی که اسم بردم رو بررسی کنیم.آپدیت بودن اسنپ هااسنپ ها به طور خودکار آپدیت میشن ( که البته میتونید این رو تغییر بدید)‌. این به شما این امکان رو میده که آخرین نسخه از اون نرم‌افزار رو نصب کنید و اصلاً هم نگران تعارض وابستگی‌ها ( dependency conflicts که توی control فایل‌ها میتونید اون ها رو پیدا کنید،) و یا نگران نبود وابستگی‌ها و پیش آمدن dependency hell نباشید، چون اسنپ ها از سیستم منزوی و یا isolate شدن و کاری به کار بقیه پکیج ها یا حتی دیگر اسنپ ها ندارن.آپدیت های اسنپ ها به طور automatic, transactional and atomic هست ( متأسفانه معادل و یا معنای خوبی پیدا نکردم اما این سه تا کلمه رو با هم الان توضیح میدم.) این یعنی اینکه اگر یک آپدیت برای یک اسنپ موفق نبود، ورژنی قبلی ای که روی سیستم بوده به کار کردن ادامه میده ( یعنی کارایی اش مختل نمیشه )‌ و این آپدیت مشکل دار ( buggy update )‌ به تعویق می‌افته و اون اپلیکیشن وقتی آپدیت میشه که توسعه دهنده یه نسخه جدید، بهتر و نسخه ای که کارکردن اش تأیید شده ارائه بده.به طور پیشفرض snapd هر روز ۴ بار چک میکنه که ببینه آیا آپدیتی فراهم هست یا نه، که به هر آپدیت یک refresh میگن.اما این رفتار رو میشه خیلی راحت عوض کردن و هر جوری که میخواید برنامه‌ریزی اش کردبرای مثال جوری تنظیم بشه که جمعه ها نصف شب آپدیت ها چک بشن یا اینکه سومین دوشنبه ماه یا آخرین جمعه ماه بین ساعات یازده شب تا یک صبح refresh انجام بشه.اطلاعات و راهنمایی های بی‌نظیری اینجا هست.امنیتاسنپ ها خیلی بیشتر از بسته های دیگه امنیت دارن! حالا چطور ؟ خب آپدیت های خودکار باعث میشن که مشکلات امنیتی خیلی زود برطرف بشن و از همه مهم تر اینکه اونها از بقیه سیستم شما منزوی ( isolate ) شدن. اون ها فایل سیستم (‌ file system ) مخصوص به خودشون رو دارن و نمیتونن با بقیه بسته ها و برنامه روی سیستم شما ارتباط بگیرن، حتی اگر هم شما یه برنامه ناشناس و مشکوک رو نصب کنید اون نمیتونه از فضای خودش فرار کنه. البته هیچ چیزی ۱۰۰٪ امن نیست اما استفاده از اسنپ ها یعنی شما بیشتر از قبل از سیستمتون نسبت به اون برنامه ها محافظت میکنید. (‌ البته توضیحاتی بیشتری برای این بخش نیازه که در ادامه اون ها رو باید بخونید.)برای اسنپ ها سه نوع حصر (‌ confinement ) وجود داره: سخت گیرانه ( Strict )این حصر، حصر پیش‌فرض برای تمامی نرم افزار های اسنپ استور هست. این حصر تنها اجازه خواندن و نوشتن (‌ read and write ) در پوشه نصبی و قسمتی که برای اون برنامه در پوشه یا پارتیشن home هست رو به برنامه میده.حصر سخت گیرانه اجازه خواندن و نوشتن رو فقط در این آدرس ها به برنامه میدهمسیر هایی که در حصر سختگیرانه به برنامه اجازه خواندن و نوشتن داده می‌شود.۲. حالت توسعه ( Devmod )این حصر توسط توسعه دهنده ها استفاده میشه تا برنامه شون رو تست کنن. اسنپ هایی که در این حصر هستن نمیتونن به عنوان یک نسخه پایدار ( stable ) منتشر بشن و برای اینکه بتونن منتشر کنن باید به strict یا classic تغییر پیدا کنن و از کانال های پایدار (‌ stable ) یا کاندید ( candidate ) منتشر بشن.۳. حالت کلاسیک ( classic )اسنپ های کلاسیک دقیقا مثل پکیج های دبیان رفتار میکنن و به سیستم شما دسترسی دارن و مثل اون ها میتونن به پوشه های روت ( root folders ) دسترسی خواندن و نوشتن بدون هیج حصر و محدودیتی داشته باشن.با اینکه برنامه های میتونن همچنین حصر بی حصری :)‌ داشته باشن اما این به این معنی نیست که همه میتونن برنامه ای با این دسترسی ها منتشر کنن.اگر برنامه ای بخواد با این حصر منتشر بشه باید توسط یک تیم در snapcraft.io بعد از اینکه دلایل توسعه دهنده برای این حصر توسط همه اعضای اون تیم تایید شد، تایید بشه و بعد از این جریان اجازه انتشار به اون برنامه با حصر کلاسیک داده میشه.کانال هاساخته شده توسط گوگل کروم ( و الان هم گوگل پلی استور ،)‌ اسنپ ها هم از کانال ها پشتیبانی میکنن. اسنپ ها این اجازه رو به شما میدن که ورژن های متفاوت یک نرم افزار رو نصب کنید و حتی بعد از نصب هم میتونید کانالی که نرم افزار از اون نصب شده رو تغییر بدید برای مثال از استیبل برید روی کانال بتا.نصب های موازیحتی بیشتر از این امکان که شما میتونید از کانال های متفاوتی برنامه تون رو نصب ( یا اگر توسعه دهنده هستید، منتشر ) کنید، شما میتونید ورژن های متفاوتی از یک اسنپ رو به صورت موازی روی سیستم‌تون نصب کنید. از اونجایی که هر اسنپ از سیستم منزوی هست، استفاده کنندگان این آزادی رو دارن که ورژن های مختلف رو بدون هیچ دردسر یا اختلال یا حتی از دست دادن داده روی سیستم نصب و اجرا کنن.بسته بندی، انتشار و نگهداری راحتتوسعه دهندگان میتونن از سرویسی که توسط شرکت .Canonical Ltd فراهم اومده به صورت رایگان استفاده کنن و برنامه شون رو خیلی ساده توسعه، بسته بندی ، منتشر و نگهداری کنن. اما این چه ربطی به استفاده کنندگان داره؟! خیلی از نرم افزار های غیر متن باز و غیر آزاد ( proprietary )( نتونستم معادل یا معنی خوبی براش پیدا کنم )( یا حتی برخی از متن باز ها) برای لینوکس بسته ای ارائه نمیدن، یا با توجه به اینکه توزیع های مختلفی وجود داره و بازار اپ های لینوکسی تکه تکه شده یا یه بسته برای یک توزیع ( برای مثال اوبونتو ) ارائه میدن یا کلا هیچی. اما اسنپ ها رو میشه خیلی راحت ساخت و اون های برای خیلی از توزیع ها منتشر و قابل استفاده کرد. برای مثال اپ های Slack, Spotify, Skype, Discord الان خیلی ساده در اختیار کاربران لینوکسی هستن :)امکانات اسنپ ها در یک نگاهبسته بندی ساده با استفاده از ابزار های موجود شما.آپدیت های خودکار ( و قابل مدیریت ) برای تمام یوزر ها.داشتن مخاطب میلیونی کاربران لینوکس ( تقربیا تا ۹۹٪‌ distro-independent ).قابلیت برگرداندن ورژن بدون زحمت.داشتن کانال های متفاوت نصب.قابلیت نصب موازی یک اسنپ روی یک سیستم.سرویس snapshot.آزاد و رایگان برای پروژه های متن باز و متن بسته.نصب خیلی ساده اسنپ ها توسط Software center ها و ترمینال.اسنپ ها امن هستن، چون محصور اند و به سیستم، دیگر برنامه ها و داده های شما دسترسی ندارن.و ...جمع بندیاسنپ های مزایای بسیاری نسبت به مثلا deb package ها دارن ( البته نواقصی هم دارن و به هیچ وجهی نمیشه گفت حتما این یا حتما اون ) برای مثال امنیت و آپدیت های اونها.با اسنپ ها شما میتونید نرم افزار های بروز داشته باشید چون اون ها با کتابخانه ها و پیشنیاز های خودشون پیش هم هستن و کاری به بقیه سیستم ندارن.با پشتیبانی از آپدیت های transactional ( معادل اش میشد معامله ای :| ) این امکان رو میدن که موقع آپدیت فقط قسمت هایی که تغییر کردن دانلود بشن.شما میتونید برنامه تون رو راحت توسعه بدید و منتشر کنید.و ...برگرفته از :A technical comparison between snaps and debsWhat Are Linux Snap Packages? Why Use Them?.snap Vs .deb PackageManaging updatesامیدوارم تونسته باشم اطلاعات خوبی ارائه بدم. ممنون که وقت گذاشتید.