</>

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

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

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

Command Palette

Search for a command to run...

dpkg و aptitude در Debian

آموزش dpkg به‌عنوان مدیریت بستهٔ سطح پایین، aptitude به‌عنوان جایگزین TUI قدرتمند APT، و ابزارهای جانبی apt-cache و apt-mark.

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

در Debian دو لایهٔ مدیریت بسته وجود دارد: dpkg در پایین (نصب و پیکربندی بسته‌های .deb) و APT در بالا (حل وابستگی، دانلود از شبکه). علاوه بر این، aptitude یک رابط متنی پیشرفته (TUI) و جایگزین قدرتمند برای apt است. در این آموزش با این ابزارها آشنا می‌شوید.

معماری مدیریت بسته در Debian#

    کاربر
      │
      ├── apt / apt-get / apt-cache  ← لایهٔ بالا (شبکه، وابستگی)
      │
      ├── aptitude (TUI)             ← رابط تعاملی پیشرفته
      │
      └── dpkg                       ← لایهٔ پایین (نصب بسته‌های .deb)
             │
             └── فایل‌های بسته روی دیسک

dpkg چیست؟#

dpkg ابزار اصلی و سطح‌پایین مدیریت بسته در Debian است. APT در واقع از dpkg زیر پوست خود استفاده می‌کند. dpkg می‌تواند یک فایل .deb را نصب، حذف یا پیکربندی کند، اما وابستگی‌ها را حل نمی‌کند.

نصب، حذف و پیکربندی#

# نصب یک فایل .deb
sudo dpkg -i package.deb
 
# نصب چند فایل
sudo dpkg -i package1.deb package2.deb
 
# رفع وابستگی‌های گم‌شده پس از dpkg -i
sudo apt install -f
# یا
sudo apt --fix-broken install
 
# حذف بسته
sudo dpkg -r nmap
 
# حذف کامل (با فایل‌های پیکربندی)
sudo dpkg --purge nmap
# یا
sudo dpkg -P nmap

dpkg -i و وابستگی‌ها

dpkg -i وابستگی‌ها را حل نمی‌کند. اگر بسته به کتابخانه‌ای وابسته باشد که نصب نیست، نصب شکست می‌خورد. همیشه پس از dpkg -i، sudo apt install -f را اجرا کنید تا وابستگی‌ها به‌صورت خودکار نصب شوند.

جستجوی بسته و فایل#

# لیست تمام بسته‌های نصب‌شده
dpkg -l | head
dpkg -l | grep nmap
 
# اطلاعات بستهٔ نصب‌شده
dpkg -s nmap
 
# لیست فایل‌های یک بستهٔ نصب‌شده
dpkg -L nmap
 
# پیدا کردن بستهٔ صاحب یک فایل
dpkg -S /usr/bin/nmap
# خروجی: nmap: /usr/bin/nmap
 
# لیست فایل‌های یک فایل .deb (بدون نصب)
dpkg -c package.deb
 
# اطلاعات یک فایل .deb (بدون نصب)
dpkg -I package.deb

جدول دستورات dpkg#

دستورتوضیح
dpkg -i pkg.debنصب فایل deb
dpkg -r pkgحذف بسته (بدون تنظیمات)
dpkg -P pkgحذف کامل (با تنظیمات)
dpkg -lلیست بسته‌های نصب‌شده
dpkg -l pkgوضعیت یک بسته
dpkg -s pkgاطلاعات کامل بسته
dpkg -L pkgفایل‌های بستهٔ نصب‌شده
dpkg -S fileبستهٔ صاحب فایل
dpkg -c pkg.debمحتوای فایل deb
dpkg -I pkg.debاطلاعات فایل deb
dpkg --configure -aپیکربندی بسته‌های نیمه‌نصب
dpkg --get-selectionsلیست انتخاب‌ها

وضعیت بسته‌ها#

dpkg از کدهای وضعیت استفاده می‌کند که در خروجی dpkg -l دیده می‌شوند:

کدوضعیتتوضیح
iiنصب‌شدهInstalled و به‌درستی پیکربندی‌شده
rcحذف‌شدهRemoved اما فایل‌های پیکربندی مانده
unنامشخصUnknown، نصب نیست
hihold شدهنصب‌شده اما ارتقا نمی‌یابد
iUنیمه‌نصبUnpacked اما پیکربندی نشده
# پیدا کردن بسته‌های rc (حذف‌شده با تنظیمات مانده)
dpkg -l | grep ^rc
 
# پاک‌سازی همهٔ بسته‌های rc
dpkg -l | grep ^rc | awk '{print $2}' | sudo xargs dpkg --purge

پیکربندی بسته‌ها#

بسته‌ها در Debian دو مرحله دارند: unpack (استخراج فایل‌ها) و configure (اجرای اسکریپت postinst). اگر نصب در میانه شکسته شود:

# پیکربندی تمام بسته‌های نیمه‌نصب
sudo dpkg --configure -a
 
# پیکربندی یک بستهٔ خاص
sudo dpkg --configure nmap

پشتیبان‌گیری و بازیابی لیست بسته‌ها#

# ذخیرهٔ لیست بسته‌های نصب‌شده
dpkg --get-selections > packages.txt
 
# ذخیرهٔ کامل‌تر با apt
apt-mark showmanual > manual-packages.txt
 
# بازیابی روی سیستم دیگر
sudo dpkg --set-selections < packages.txt
sudo apt-get dselect-upgrade

aptitude چیست؟#

aptitude یک رابط متنی (TUI) پیشرفته برای مدیریت بسته در Debian است که از APT و dpkg زیر پوست استفاده می‌کند، اما امکانات اضافی فراهم می‌کند:

  • رابط تعاملی با مرور و جستجو
  • حل هوشمندتر وابستگی‌ها
  • نمایش پیشنهاد برای رفع تعارض
  • نگه‌داشت تاریخچهٔ عملیات
  • پشتیبانی از apt-shelf برای کاربران حرفه‌ای

نصب aptitude#

sudo apt install aptitude

اجرای رابط متنی#

# اجرای TUI
sudo aptitude
 
# جستجوی مستقیم
aptitude search nmap
 
# نمایش اطلاعات بسته
aptitude show nmap
 
# نصب بسته
sudo aptitude install nmap
 
# حذف بسته
sudo aptitude remove nmap
 
# به‌روزرسانی فهرست
sudo aptitude update
 
# ارتقای سیستم
sudo aptitude safe-upgrade
sudo aptitude full-upgrade

چرا aptitude؟#

ویژگیaptaptitude
رابط TUIندارددارد
حل تعارضمحدودهوشمند با پیشنهاد
why commandندارددارد
پیشنهاد بستهمحدوددارد
کار با بسته‌های یتیمautoremoveنگه‌داشت هوشمند
مناسب اسکریپتبلهکمتر

دستور why در aptitude#

یکی از قابلیت‌های منحصربه‌فرد aptitude، دستور why است که نشان می‌دهد چرا یک بسته نصب شده است:

aptitude why firefox-esr
# خروجی:
# i   firefox-esr Depends libgtk-3-0
# i A libgtk-3-0   Depends libcairo2
# ...

این خروجی نشان می‌دهد زنجیرهٔ وابستگی‌ای که firefox-esr را روی سیستم نگه داشته است.

aptitude برای کاربر پیشرفته

اگر اغلب با وابستگی‌های پیچیده یا تعارض‌ها سر و کار دارید، aptitude با رابط تعاملی و حل هوشمند تعارض‌ها می‌تواند بسیار مفید باشد. اما برای اسکریپت‌ها و روتین ساده، apt کافی است.

apt-cache — جستجوی پیشرفته#

apt-cache ابزار جستجو و پرس‌وجو از مخزن APT است (بدون نصب):

# جستجوی بسته
apt-cache search nmap
 
# جستجوی دقیق در نام
apt-cache search --names-only '^nmap$'
 
# اطلاعات بسته
apt-cache show nmap
 
# سیاست نسخه‌ها
apt-cache policy nmap
 
# نمایش وابستگی‌ها
apt-cache depends nmap
 
# بسته‌هایی که به nmap وابسته‌اند
apt-cache rdepends nmap
 
# نمایش آماری مخزن
apt-cache stats

apt-mark — مدیریت نشان‌گذاری#

apt-mark ابزاری برای مدیریت نشان‌گذاری بسته‌هاست:

# قفل‌کردن نسخهٔ بسته (hold)
sudo apt-mark hold linux-image-amd64
 
# لیست بسته‌های قفل‌شده
apt-mark showhold
 
# رفع قفل
sudo apt-mark unhold linux-image-amd64
 
# بسته‌هایی که کاربر دستی نصب کرده
apt-mark showmanual
 
# بسته‌هایی که به‌عنوان وابستگی نصب شده‌اند
apt-mark showauto
 
# تبدیل بستهٔ دستی به خودکار (برای autoremove)
sudo apt-mark auto nmap

خطاهای رایج#

۱. شکسته شدن نصب با dpkg#

dpkg: error processing archive package.deb (--install):
  dependency problems - leaving unconfigured
Errors were encountered while processing:
  package.deb

راه‌حل:

# رفع وابستگی‌ها
sudo apt install -f
# یا
sudo apt --fix-broken install
 
# پیکربندی بسته‌های نیمه‌نصب
sudo dpkg --configure -a

۲. بسته‌های rc مانده#

# مشاهدهٔ بسته‌های rc
dpkg -l | grep ^rc
 
# پاک‌سازی همهٔ آن‌ها
dpkg -l | awk '/^rc/ {print $2}' | sudo xargs dpkg --purge

۳. dpkg locked#

dpkg: error: dpkg frontend lock is locked by another process

راه‌حل:

# پیدا کردن فرآیند قفل‌کننده
sudo lsof /var/lib/dpkg/lock-frontend
 
# صبر کنید یا متوقف کنید
sudo kill -9 PID
sudo dpkg --configure -a

۴. aptitude در حالت تعارض گیر می‌کند#

اگر aptitude در حالت تعارض گیر کرد:

# در TUI، گزینهٔ ! را بزنید و دستور زیر را تایپ کنید:
!apt-get -f install

apt یا aptitude؟

در Debian مدرن، apt به‌عنوان ابزار اصلی توصیه می‌شود. aptitude هنوز هم فعال است اما دیگر به‌طور پیش‌فرض نصب نیست و برخی ویژگی‌های apt (مانند apt list --upgradable) در aptitude تفاوت دارند. برای کاربر عادی apt کافی است.

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

dpkg ابزار پایهٔ مدیریت بسته در Debian است و برای نصب فایل‌های .deb محلی و پرس‌وجو از بسته‌های نصب‌شده استفاده می‌شود. aptitude با رابط تعاملی پیشرفته و حل هوشمند تعارض‌ها، گزینه‌ای برای کاربران حرفه‌ای است. ابزارهای apt-cache و apt-mark نیز قابلیت‌های اضافی برای جستجو و نشان‌گذاری بسته‌ها فراهم می‌کنند.

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

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

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