در این مطلب، مقایسهای خواهیم داشت بین دو سیستم بسته نرمافزاری Snap و APT برای نصب اپلیکیشن. با ما همراه باشید.
لینوکس در مقایسه با انواع دیگر سیستمعاملهای رایج در کامپیوترهای امروزی، روش متفاوتی در مدیریت نرمافزار دارد. نرمافزار در لینوکس معمولاً به صورت منابع سازماندهی میشود. منابع شامل اپلیکیشنها و تمام ملحقات مربوطه برای اجرای آنها هستند.
با اینکه برای نصب اپلیکیشن، استفاده از منابع نرمافزاری در بسیاری از مواقع کفایت میکند و دلایل زیادی برای استفاده از آنها وجود دارد، امّا ممکن است برای کاربرانی که دیرتر با دنیای تکنولوژیها آشنا میشوند، یک مانع به حساب آید. بر این اساس، برخی سیستمهای بسته نرمافزاری در طول سالهای گذشته بهوجود آمدهاند تا تجربه کاربری راحتتری در لینوکس ایجاد کنند.
Snap چیست؟
Snap یک سیستم پکیجینگ و توسعه نرمافزاری است که از بستههای مستقلی به نام snap برای انتقال نرمافزار به کاربران استفاده میکند. snap ها تمام متعلقات موردنیاز برای یک برنامه را در یک بسته گردآوری میکنند. در نتیجه، نصب اپلیکیشن مستقل از سیستم خواهد بود. به این معنا که میتواند در هر توزیع لینوکسی که از Snap پشتیبانی کند، اجرا شود.
در حالی که APT بیشتر بستهها از منابع رسمی یک توزیع لینوکس به دست میآورد، Snap این امکان را برای توسعهدهندگان فراهم میکند که اپلیکیشنهای خود را مستقیماً از طریق Snap Store به دست کاربران برسانند. همچنین توسعهدهندگان میتوانند snap های خود را مستقیماً در وبسایت خود به اشتراک بگذارند.
ابزار موردنیاز برای مدیریت snapها، snapd نامیده میشود. سیستمها به این وسیله میتوانند بستههای snap را اجرا کنند. تعامل کاربران با snapd نیز از طریق کلاینت snap صورت میگیرد.
در ادامه نمونهای از نصب اپلیکیشن Thunderbird را با کمک فرمان snap ملاحظه میکنید.
APT چیست؟
ابزار بسته پیشرفته یا به اختصار APT یک ابزرا مدیرتی بسته نرمافزاری است که برای نصب و حذف بستهها در سیستمهای مبتنی بر دبیان به کار گرفته میشود. روند دریافت، تنظیم، ارتقا، نصب و حذف بستهها با کمک APT به صورت اتوماتیک انجام میشود و باید گفت که این ابزار پوستهای بیرونی برای سیستم مدیرتی بسته پایه دبیان، dpkg است.
یکی از اساسیترین مزیّتهای APT، نحوه مدیریت متعلقات نرمافزاری است. پس از اجرای یک فرمان توسط کاربر برای نصب یک بسته، APT منابع مختلف را برای یافت متعلقات آن بسته جستجو میکند. در نتیجه، این ابزار تمام متعلقاتی را که برای اجرای برنامه موردنیاز هستند و در سیستم نصب نیستند، نصب خواهد کرد.
ابزاری که APT معمولاً برای تعامل با کاربران استفاده میکند، فرمان apt است. این ابزار بهویژه در فرمهای apt-get و apt-cache بسیار محبوب است.
در تصویر زیر نصب اپلیکیشن Thunderbird را با استفاده از apt مشاهده میکنید.
تفاوتهای Snap و APT در نصب اپلیکیشن
قبل از اینکه وارد جزئیات تفاوتهای Snap و APT شویم، لازم است که سطوحی را که میتوانیم آنها را با هم مقایسه کنیم، درک کنیم. جدول زیر اصطلاحات مهم در این رابطه را توضیح داده و نقاط اصلی مقایسه را مشخص کرده است.
APT | Snap | |
نوع بسته | .deb | .snap |
نام ابزار | APT | Snapd |
ابزار CLI | apt | snap |
فرمت | آرشیو ar | آرشیو SquashFS |
دسترسی | منابع دبیان | Snap Store |
ابعاد نصب | کوچکتر | بزرگتر |
ملحقات بسته | اشتراکی | موجود در بسته |
بروزرسانیها | دستی | خودکار |
انحصار امنیتی | انحصار محدود | انحصار |
نصب چندگانه | غیرممکن | ممکن |
نصب نسخههای چندگانه | غیرممکن | ممکن |
فرمت بسته
Snap از فایلهای .snap استفاده میکند که از Snap Store یا وبسایت توسعهدهنده آنها قابلدریافت هستند. فایل .snap حاوی یک اپلیکیشن، ملحقات آن و فراداده مربوطه در قالب یک فایل فشرده سیستمی SquashFS است.
اپلیکیشن های Snap به صورت کانتینر شده و مشابه بستههایی هستند که در Docker استفاده میشوند. با این وجود، برخلاف کانتینرهای Docker، اپلیکیشنهای snap دسترسی محدودی به سیستم هاست و مخصوصاً برای ذخیره فایلهای تنظیمات و استفاده از I/O سیستم دارند.
APT برای نصب اپلیکیشن از فایلهای .deb موجود در منابع آنلاین برای هر کدام از توزیعهای لینوکس که پشتیبانی میشوند، استفاده میکند. یک فایل .deb در واقع، یک فایل آرشیو یونیکس است که شامل دو آرشیو tar میشود. یکی از آرشیوها حاوی اطلاعات کنترل بوده و دیگری فایلهای موردنیاز برای نصب بسته را دربر میگیرد.
اندازه بسته
snap ها به صورت مستقل بوده و در نتیجه یک فایل .snap میتواند اندازه بزرگی داشته باشد. وقتی کاربر یک فایل snap را نصب میکند، فایل از حالت فشرده خارج شده و به صورت «فقط-خواندنی» در دایرکتوری خانگی باقی میماند.
در مقابل، هر اپلیکیشنی که با APT نصب میشود، ابعاد کوچکتری خواهد داشت. چرا که نیاز به گردآوری ملحقات بسته ندارد.
متعلقات
Snap متعلقات مربوط به بسته را در درون خودِ بسته جمعآوری میکند. با اینکه این رویکرد میتواند حجم بسته را به میزان قابلتوجهی افزایش دهد، امّا مزیّت اصلی آن در داشتن همیشگی یک نسخه آزموده و پشتیبانیشده از بسته است.
APT یه رویکرد اشتراکگذاری را برای متعلقات برنامهها به کار میگیرد. وقتی کاربر یک فرمان نصب apt اجرا میکند، APT لیست ملحقات آن را فراخوانی میکند. در صورتی که سیستم هر یک از آنها را نصب نداشت، نصب آنها انجام میگیرد. در نتیجه، فضای بسیار کمتری از حافظه اشغال میشود.
سهولت استفاده
تفاوت در میزان سهولت استفاده از هر دو ابزار چندان قابلتوجه نیست. اپلیکیشنهای Snap به صورت «جهانشمول» هستند و در عمل، کاربرد بیشتری در ارائه بروزرسانیها برای توسعهدهندگان دارند. چرا که بروزرسانی به صورت یک فرآیند مشخص درون یک بسته جداگانه است.
از طرف دیگر، APT منابع را برای به منظور یافتن بروزرسانیها جستجو میکند. وقتی یک بروزرسانی آماده شد، سیستم منبع نیاز به نسخه جداگانه برای هر کدام از توزیعهای لینوکس خواهد داشت. این روش میتواند بسیار وقتگیر باشد و گاهی اوقات منجر به تأخیر و کندی برای برخی توزیعهای خاص میشود.
سرعت
Snap نسبت به APT به زمان بیشتری به منظور راهاندازی برای اولین بار دارد. به این دلیل که سیستمعامل در این حالت، snap ها را از حالت فشرده خارج میکند. با این وجود، snap ها تنها در اولین اجرا کُندتر عمل میکنند و برای بار دوم، این تفاوت سرعت تقریباً ناپدید میشود.
بروزرسانیها
فرآیند بروزرسانی Snap به صورت اتوماتیک است. کاربران نمیتوانند مانع بروزرسانی یک اپلیکیشن شوند و تنها میتوانند آن را به تأخیر بیندازند. همچنین توسعهدهندگان Snap محدودیتی در زمان و تعداد بروزرسانیها نخواهند داشت.
امّا APT کنترل کاملی در زمینه بروزرسانی در اختیار کاربر قرار میدهد. با این وجود، وقتی یک نسخه جدید از توزیع لینوکس ارائه میشود، فایلهای debs را حفظ میکند و بروزسانی آنها را انجام نمیدهد. بر این اساس، Snap گزینه بهتر برای کسانی است که داشتن نسخههای جدیدتر از اپلیکیشنها را ترجیح میدهند.
تعامل رابط کاربری
Snap ها به گونهای طراحی شدهاند که «جهانشمول» باشند. بنابراین، بهخوبی با رابطهای کاربری توزیعهای مختلف لینوکس سازگار نمیشوند.
اخیراً برخی توسعهها در زمینه رابط کاربری Snap به وجود آمده است. از جمله ارائه یک سرویس پسزمینه برای پایش تغییرات تِم و پیشنهاد به کاربران برای تنظیم اپلیکیشن متناسب با تِم سیستمعامل. با این وجود، این کار هنوز به پایان نرسیده و snap ها هنوز نمیتوانند به صورت کامل با سیستمعامل هاست هماهنگ شوند.
از طرف دیگر، فایلهای .deb مورد استفاده APT منحصراً برای نسخه و توزیع لینوکس خاص ارائه شدهاند. در نتیجه، تجربههای کاربری خاص خود را درتوزیع های مختلف لینوکس خواهند داشت.
امنیت
Snap از «تأیید امضا» پشتیبانی میکند و با توجه به طبیعت محدودی که دارد، یک راه امن برای توسعه اپلیکیشن محسوب میشود. با این وجود، به دلیل انتقال مستقیم و نصب اپلیکیشن از سوی ناشر به کاربر، کاربر میبایست حتماً به ناشر آن اعتماد داشته باشد. در اینجا، هیچگونه بازبینی از یک طرف خارجی صورت نمیگیرد.
از طرف دیگر، هر توزیع لینوکسی فایلهای debs موجود در منابع را مورد بازبینی قرار میدهد. بنابراین، کاربران APT میتوانند به منبع اپلیکیشنهای خود اعتماد کنند. البته این موضوع شامل منابع ثالث یا فایلهای debs موجود در وبسایت ناشران نخواهد شد.
Snap در برابر APT؛ کدام را انتخاب کنیم؟
انتخاب Snap در صورتی که:
- نمی خواهید بستههای غیرضروری در سیستم شما وارد شوند. با استفاده از Snap، بستههای شما به صورت محدود در پکیجهای .snap باقی میمانند.
- میخواهید که همیشه جدیدتری نسخه اپلیکیشن را در اختیار داشته باشید. در Snap روند بروزرسانی به صورت پیوسته و اتوماتیک صورت میگیرد و قابلیتها برای توزیعهای مختلف ثابت میمانند.
- میخواهید یک اپلیکیشن را به صورت ایزوله استفاده کنید.
انتخاب APT در صورتی که:
- ترجیح میدهید که اپلیکیشن مربوط به توزیع سیستمعامل بازبینی شود.
- نگران صرفهجویی در فضای ذخیره خود هستید. اپلیکیشنهایی که توسط APT نصب میشوند، ملحقات خود را به اشتراک میگذارند.
- میخواهید که اپلیکیشن بهخوبی با فضای رابط کاربری سازگار شود.
جمعبندی
در این مقایسه، خلاصهای از تفاوتها را در استفاده از سیستم مدیریت بسته Snap و APT بررسی کردیم. دانستن ویژگیهای Snap و APT به شما در انتخاب رویکرد نصب اپلیکیشن کمک خواهد کرد.