Snapd و تفاوت آن با apt در لینوکس

📌 Snapd چیه؟
Snapd یک سرویس و ابزار مدیریتی برای مدیریت و اجرای بستههای نرمافزاری به نام Snapها هست. این بستهها توسط Canonical (شرکت سازنده اوبونتو) توسعه داده شدهاند و بهصورت مستقل از سیستم عامل کار میکنند.

💡 ویژگیهای مهم Snapd و Snapها:
۱. ایزوله بودن (Isolation):
برنامهها در یک محیط جداگانه به نام Sandbox اجرا میشوند که باعث میشود امنیت بیشتری داشته باشند.
۲. قابلیت اجرا در هر توزیع لینوکسی:
روی Ubuntu، Debian، Fedora، Arch Linux و حتی سیستمهای غیرلینوکسی مثل Windows Subsystem for Linux (WSL) هم قابل استفاده است.
۳. آپدیتهای خودکار:
Snapd بهصورت خودکار آپدیتها رو دانلود و نصب میکنه.
۴. عدم نیاز به وابستگیها (Dependencies):
هر برنامه به همراه تمام وابستگیهاش در یک بسته Snap قرار داره. یعنی وقتی نصبش میکنی، دیگه نیاز نیست دنبال کتابخانهها و فایلهای مورد نیازش باشی.
🔍 Snapd چطوری کار میکنه؟
Snapd یک Daemon (سرویس پسزمینه) هست که همیشه در حال اجراست و درخواستهای مربوط به نصب، حذف، بهروزرسانی و مدیریت Snapها رو مدیریت میکنه.
وقتی دستوری مثل این رو اجرا میکنی:
sudo snap install vlc
Snapd میره و بستهی Snap مربوط به VLC رو از Snap Store (فروشگاه Snap) دانلود میکنه و در مسیر مشخصی نصب میکنه.
📁 مکان نصب Snapها:
- Snapها در مسیر زیر نصب میشن:
/snapو تنظیمات اونها در:/var/snap
🔥 دستورات کاربردی Snapd:
۱. نصب یک برنامه:
sudo snap install <name>
مثلا برای نصب VLC:
sudo snap install vlc
۲. مشاهده لیست بستههای نصب شده:
snap list
۳. حذف یک برنامه:
sudo snap remove <name>
۴. بهروزرسانی برنامهها:
sudo snap refresh
۵. مشاهده وضعیت Snapd:
systemctl status snapd
📌 Snapd روی اوبونتو بهصورت پیشفرض نصبه؟
✅ بله! روی توزیعهای جدید اوبونتو (مثل اوبونتو سرور 20.04 و بعدتر) بهصورت پیشفرض نصب شده.
❌ اما اگه نصب نبود، میتونی با دستور زیر نصبش کنی:
sudo apt install snapd
توی لینوکس، مخصوصاً اوبونتو، هم میتونی برنامهها رو با apt نصب کنی و هم با snap. اما این دوتا تفاوتهایی دارن که خیلی مهمه بدونی.
✅ تفاوتهای apt و snap
| ویژگی | apt (Advanced Package Tool) | snap (Snapd) |
|---|---|---|
| مفهوم | مدیر بسته سنتی لینوکس که از مخازن نرمافزاری استفاده میکنه. | سیستمی برای اجرای بستههای مستقل و ایزولهشده. |
| محل نصب برنامهها | /usr/bin, /etc, /var و غیره. | /snap و تنظیمات در /var/snap. |
| وابستگیها (Dependencies) | نیاز به نصب دستی وابستگیها داره. | همه وابستگیها در بسته Snap وجود داره. |
| آپدیتها | از طریق مخازن بهروزرسانی میشه. | آپدیتها خودکار انجام میشن. |
| سرعت اجرا | سریعتر چون مستقیماً با سیستم عامل در ارتباطه. | کندتره چون برنامهها در محیط ایزوله اجرا میشن. |
| امنیت | امنیت کمتری نسبت به Snap داره. | امنیت بیشتر بهخاطر Sandbox بودن برنامهها. |
| حجم برنامهها | معمولاً سبکتر و کمحجمتر. | بهخاطر وجود تمام وابستگیها معمولاً سنگینتره. |
| مخازن نرمافزاری | از apt repositories استفاده میکنه. | از Snap Store استفاده میکنه. |
| مناسب برای | نرمافزارهای سیستمی و بستههای سبک. | نرمافزارهای کاربردی و گرافیکی مستقل. |
| نمونه استفادهها | sudo apt install apache2 | sudo snap install vlc |
📌 پس کدوم بهتره؟
اگر به موارد زیر اهمیت میدی، از apt استفاده کن:
- سرعت بالا: مثل اجرای سریع برنامههای سیستمی.
- نرمافزارهای سنتی: مثل
apache2،nginxو چیزهایی که بهصورت دائمی در سیستم استفاده میشن. - حجم کمتر برنامهها: چون Snapها سنگینترن.
اگر به موارد زیر اهمیت میدی، از snap استفاده کن:
- ایزوله بودن و امنیت بیشتر: برنامهها بهصورت مستقل و ایمن اجرا میشن.
- بهروزرسانی خودکار: دیگه نیازی به آپدیت دستی نیست.
- نصب و استفاده از نسخههای جدیدتر نرمافزارها: معمولا برنامهها توی
Snap Storeبهروزترن.
📌 مثال کاربردی: نصب VLC با apt و snap
📦 نصب با apt:
sudo apt install vlc
سریعتر اجرا میشه و حجم کمتری داره.
📦 نصب با snap:
sudo snap install vlc
ایزولهتره، خودکار بهروزرسانی میشه ولی ممکنه کمی کندتر اجرا بشه.
تفاوت نصب برنامه با apt و snap
برای فهمیدن اینکه یک برنامه بهتر است با apt نصب شود یا snap، باید این تفاوتها را در نظر بگیری:
| ویژگی | apt | snap |
|---|---|---|
| منبع بسته | مخازن رسمی اوبونتو و دبیان | مخزن Snapcraft (کانتینر) |
| بروزرسانیها | بهروزسانیها کندتر است و به نسخه توزیع وابسته است | سریعتر بهروز میشود و مستقل از توزیع است |
| نحوه اجرا | مستقیم روی سیستم نصب میشود | در یک کانتینر ایزوله اجرا میشود |
| سرعت اجرا | سریعتر (چون به کتابخانههای سیستم متصل است) | کندتر (چون در یک محیط ایزوله است) |
| مدیریت وابستگیها | به وابستگیهای سیستم نیاز دارد | شامل همه وابستگیها در یک بسته مستقل است |
| پشتیبانی از نسخههای مختلف | معمولاً فقط آخرین نسخه رسمی در مخزن موجود است | میتوان نسخههای مختلفی را از یک برنامه نصب کرد |
چطور بفهمیم که کدام روش بهتر است؟
- اگر سرعت اجرا مهم است →
apt - اگر جدیدترین نسخه را میخواهی →
snap - اگر برنامه نیاز به دسترسی به فایلهای سیستمی دارد →
apt - اگر برنامه باید در یک محیط ایزوله اجرا شود (مثلاً برای امنیت بیشتر) →
snap - اگر برنامه سروری است و نیاز به عملکرد پایدار دارد →
apt - اگر روی توزیعهای مختلف لینوکس کار میکنی و میخواهی روش نصب یکسان باشد →
snap

نصب همزمان یک برنامه با apt و snap و تست کردن هر دو
1. نصب همزمان دو نسخه
مثلاً برای نصب برنامه vlc با هر دو روش:
sudo apt install vlc -y # نصب با APT
sudo snap install vlc # نصب با Snap
2. بررسی محل نصب هر نسخه
which vlc
snap list | grep vlc
dpkg -l | grep vlc
با این کار میتوانی ببینی که نسخه Snap و Apt هر دو نصب شدهاند.
3. اجرای نسخه خاص
اگر نسخه APT را میخواهی اجرا کنی:
/usr/bin/vlc
اگر نسخه Snap را میخواهی اجرا کنی:
snap run vlc
4. حذف یکی از نسخهها
اگر تصمیم گرفتی یکی را حذف کنی:
sudo apt remove vlc -y # حذف نسخه APT
sudo snap remove vlc # حذف نسخه Snap
نتیجهگیری
اگر سرعت و پایداری مهم است، از apt استفاده کن.
اگر نسخه جدیدتر و قابلیت حمل بالا مهم است، از snap استفاده کن.
با این روش، میتوانی هر دو نسخه را تست کنی و ببینی کدام بهتر عمل میکند.
دیدگاهتان را بنویسید