</>

لینوکس‌پارسی

مرجع فارسی آموزش لینوکس

Gentoo • Arch • Debian • Ubuntu • Kali • Parrot
پرش به محتوای اصلی

Command Palette

Search for a command to run...

APT و Snap در Ubuntu

آموزش کامل دو سیستم مدیریت بستهٔ Ubuntu: APT برای بسته‌های deb کلاسیک و Snap برای بسته‌های کانتینری، به‌همراه مقایسه و رفع خطاهای رایج.

مقدماتی۹ دقیقه مطالعهآخرین بروزرسانی: ۹ تیر ۱۴۰۵ویرایش در گیت‌هاب

Ubuntu همزمان از دو سیستم مدیریت بسته استفاده می‌کند: APT برای بسته‌های کلاسیک Debian با پسوند .deb و Snap برای بسته‌های کانتینری. در این آموزش با هر دو، تفاوت‌ها و کاربردهای آن‌ها آشنا می‌شوید.

APT چیست؟#

APT (Advanced Package Tool) سیستم مدیریت بستهٔ کلاسیک Debian است که در Ubuntu هم پیش‌فرض است. APT بسته‌های با پسوند .deb را از مخازن نصب می‌کند و وابستگی‌ها را به‌صورت خودکار حل می‌کند.

دستورات پایهٔ APT#

# به‌روزرسانی فهرست بسته‌ها
sudo apt update
 
# نصب یک بسته
sudo apt install nmap
 
# نصب چند بسته همزمان
sudo apt install nmap wireshark tcpdump
 
# نصب بدون پرسش تأیید
sudo apt install -y nmap
 
# ارتقای بسته‌های نصب‌شده
sudo apt upgrade
 
# ارتقای کامل (ممکن است بسته‌ها را حذف/جایگزین کند)
sudo apt full-upgrade
 
# حذف بسته (نگه‌داشتن فایل‌های پیکربندی)
sudo apt remove nmap
 
# حذف کامل بسته و فایل‌های پیکربندی
sudo apt purge nmap
 
# حذف وابستگی‌های یتیم
sudo apt autoremove
 
# پاک‌سازی کش بسته‌ها
sudo apt clean

تفاوت update و upgrade

apt update فقط فهرست بسته‌ها را به‌روز می‌کند و هیچ بسته‌ای نصب نمی‌کند. apt upgrade بسته‌های نصب‌شده را به نسخه‌های جدید ارتقا می‌دهد. این دو را با هم اشتباه نگیرید.

جستجو و اطلاعات بسته#

# جستجوی بسته
apt search nmap
 
# اطلاعات بسته
apt show nmap
 
# لیست بسته‌های نصب‌شده
apt list --installed
 
# بسته‌های قابل ارتقا
apt list --upgradable
 
# فایل‌های یک بسته
dpkg -L nmap
 
# بستهٔ صاحب یک فایل
dpkg -S /usr/bin/nmap

نصب بستهٔ deb دستی#

اگر فایل .deb را مستقلاً دانلود کرده‌اید:

# روش پیشنهادی: apt با حل خودکار وابستگی‌ها
sudo apt install ./package.deb
 
# روش قدیمی dpkg (بدون حل وابستگی)
sudo dpkg -i package.deb
sudo apt install -f   # رفع وابستگی‌های گم‌شده

علامت ./ مهم است

در apt install ./package.deb علامت ./ به APT می‌گوید که این یک فایل محلی است، نه نام بسته. بدون این علامت، APT به‌دنبال بسته‌ای به نام package.deb در مخازن می‌گردد.

Snap چیست؟#

Snap سیستم مدیریت بستهٔ کانتینری Canonical است که بسته‌های Snap را به‌صورت ایزوله، همراه با تمام وابستگی‌هایشان، ارائه می‌دهد. هر Snap در یک sandbox اجرا می‌شود و با سیستم‌عامل به‌صورت محدود ارتباط دارد.

مزایای Snap#

  • وابستگی‌های خود را همراه دارد (نه تداخل با بسته‌های سیستم)
  • نسخه‌های جدید نرم‌افزار بدون انتظار برای به‌روزرسانی مخازن
  • به‌روزرسانی خودکار در پس‌زمینه
  • Rollback به نسخهٔ قبلی در صورت مشکل
  • کاربرد یکسان روی Ubuntu، Debian، Fedora، Arch و...

معایب Snap#

  • حجم بیشتر (وابستگی‌های تکراری)
  • بوت کندتر (به‌خصوص Firefox)
  • فضای بیشتر روی دیسک
  • Sandbox ممکن است دسترسی به فایل‌ها را محدود کند

Snap در Ubuntu

در Ubuntu، Snap به‌طور پیش‌فرض نصب و فعال است. برنامه‌های مانند Firefox، Thunderbird، Software (App Center) و بسیاری از برنامه‌های دیگر به‌صورت Snap نصب می‌شوند. اگر نمی‌خواهید Snap استفاده کنید، باید نسخهٔ deb را از PPA یا Flatpak جایگزین کنید.

دستورات پایهٔ Snap#

# نصب یک بسته
sudo snap install code --classic
 
# جستجوی بسته
snap find browser
 
# لیست بسته‌های نصب‌شده
snap list
 
# اطلاعات بسته
snap info code
 
# به‌روزرسانی همهٔ snapها
sudo snap refresh
 
# به‌روزرسانی یک snap خاص
sudo snap refresh code
 
# برگشت به نسخهٔ قبلی
sudo snap revert code
 
# حذف بسته
sudo snap remove code
 
# مشاهدهٔ تغییرات اخیر
snap changes

مفهوم confinement#

Snap بسته‌ها را در سه سطح confinement ارائه می‌دهد:

سطحتوضیحمثال
strictدسترسی فقط از طریق interfaceهااکثر برنامه‌ها
classicدسترسی کامل به سیستم (مانند بسته‌های deb)VS Code، Docker، IDEها
devmodeحالت توسعه، همهٔ دسترسی‌هاتست برنامه‌های در حال توسعه
# نصب snap با دسترسی classic (لازم برای IDEها)
sudo snap install code --classic
 
# نصب در حالت strict (پیش‌فرض)
sudo snap install vlc

چرا some snapها --classic می‌خواهند؟

برنامه‌هایی مانند VS Code، CLion یا Docker نیاز به دسترسی کامل به فایل‌های کاربر و سیستم دارند. این برنامه‌ها با --classic نصب می‌شوند تا sandbox را دور بزنند. بدون این پرچم، نصب با خطا مواجه می‌شود.

به‌روزرسانی خودکار Snap#

Snap به‌طور پیش‌فرض روزانه ۴ بار به‌روزرسانی می‌کند. می‌توان این رفتار را کنترل کرد:

# مشاهدهٔ تنظیمات refresh
snap refresh --time
 
# خروجی:
# auto-refresh: last today at 09:00 UTC, next tomorrow at 07:30 UTC
# timer: 00:00~24:00/4
 
# تنظیم زمان به‌روزرسانی (مثلاً فقط آخر هفته)
sudo snap set system refresh.timer=sat,sun,02:00
 
# توقف موقت به‌روزرسانی (تا ۹۰ روز)
sudo snap refresh --hold=90d
 
# توقف دائمی برای یک بسته
sudo snap set code refresh.hold=forever

مدیریت نسخه‌های Snap#

Snap چندین نسخه از هر بسته را نگه می‌دارد (پیش‌فرض ۲ نسخه):

# مشاهدهٔ نسخه‌های نگه‌داشته‌شده
snap list --all code
 
# خروجی:
# Name  Version   Rev  Tracking  Publisher   Notes
# code  89.0      123  stable    microsoft✓  classic
# code  88.0      122  stable    microsoft✓  classic,disabled
 
# حذف نسخه‌های قدیمی (disabled)
sudo snap remove code --revision=122
 
# پاک‌سازی خودکار همهٔ نسخه‌های قدیمی
sudo snap set system refresh.retain=2

پاک‌سازی نسخه‌های قدیمی Snap

برای آزادسازی فضای دیسک، می‌توانید اسکریپت زیر را اجرا کنید تا تمام نسخه‌های disabled حذف شوند:

sudo snap list --all | awk '/disabled/{print $1, $3}' | while read name rev; do sudo snap remove "$name" --revision="$rev"; done

مقایسهٔ APT و Snap#

ویژگیAPT (deb)Snap
نوع بستهdeb باینریsquashfs کانتینری
وابستگی‌هامشترک با سیستمهمراه با بسته
حجمکمتربیشتر
به‌روزرسانیدستیخودکار
بوتبدون تأثیرممکن است کند کند
Sandboxingندارددارد
نسخه‌های چندگانهپشتیبانی محدودپشتیبانی کامل
منبعمخازن Ubuntu/PPASnap Store
Rollbackندارددارد

کجا از کدام استفاده کنیم؟

از APT برای ابزارهای سیستمی، کتابخانه‌ها و برنامه‌های پایدار استفاده کنید. از Snap برای برنامه‌های کاربردی با به‌روزرسانی مکرر (مرورگر، IDE، Docker) استفاده کنید.

ابزار App Center#

Ubuntu 24.04 به بعد، از ابزار گرافیکی App Center (مشتری snap-store) استفاده می‌کند که هم بسته‌های Snap و هم بسته‌های deb را در یک رابط ارائه می‌دهد:

# اجرای App Center از ترمینال
snap-store

خطاهای رایج#

۱. خطای lock در APT#

E: Could not get lock /var/lib/dpkg/lock-frontend
   It is held by process 12345 (apt)

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

sudo killall apt apt-get dpkg
sudo rm /var/lib/apt/lists/lock
sudo rm /var/cache/apt/archives/lock
sudo rm /var/lib/dpkg/lock-frontend
sudo dpkg --configure -a

۲. Snap سرعت بوت را کم کرده#

راه‌حل:

# غیرفعال‌کردن به‌روزرسانی خودکار موقت
sudo snap set system refresh.hold="$(date --date='60 days' +%Y-%m-%dT%H:%M:%S%:z)"
 
# یا نصب نسخهٔ deb برنامه‌ها به‌جای Snap
# مثلاً نصب Firefox از PPA Mozilla Team
sudo add-apt-repository ppa:mozillateam/ppa -y
sudo apt install -y firefox-esr

۳. Snap نمی‌تواند نصب شود#

error: cannot install "code": classic confinement requires --classic

راه‌حل: پرچم --classic را اضافه کنید:

sudo snap install code --classic

۴. snap find کند است#

راه‌حل: اتصال اینترنت را بررسی کنید. اگر پشت پروکسی هستید:

sudo snap set system proxy.http="http://proxy:8080"
sudo snap set system proxy.https="http://proxy:8080"

۵. برنامهٔ Snap به فایل‌های سیستم دسترسی ندارد#

راه‌حل: با interfaceهای snap مشکل را حل کنید:

# مشاهدهٔ interfaceهای یک snap
snap connections code
 
# اتصال دستی یک interface
sudo snap connect code:removable-media

خلاصه و مرحلهٔ بعد#

APT و Snap دو سیستم مدیریت بستهٔ Ubuntu با فلسفه‌های متفاوت‌اند. APT برای بسته‌های کلاسیک سیستم و Snap برای برنامه‌های کانتینری با وابستگی‌های ایزوله. درک تفاوت این دو به شما کمک می‌کند انتخاب درست را برای هر نیاز داشته باشید.

به‌عنوان گام بعدی:

اشتراک‌گذاری:

این صفحه در تاریخ ۹ تیر ۱۴۰۵ به‌روزرسانی شده است.