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 nmapdpkg -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، نصب نیست |
hi | hold شده | نصبشده اما ارتقا نمییابد |
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-upgradeaptitude چیست؟
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؟
| ویژگی | apt | aptitude |
|---|---|---|
| رابط 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 statsapt-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 installapt یا aptitude؟
در Debian مدرن، apt بهعنوان ابزار اصلی توصیه میشود. aptitude هنوز هم فعال است اما دیگر بهطور پیشفرض نصب نیست و برخی ویژگیهای apt (مانند apt list --upgradable) در aptitude تفاوت دارند. برای کاربر عادی apt کافی است.
خلاصه و مرحلهٔ بعد
dpkg ابزار پایهٔ مدیریت بسته در Debian است و برای نصب فایلهای .deb محلی و پرسوجو از بستههای نصبشده استفاده میشود. aptitude با رابط تعاملی پیشرفته و حل هوشمند تعارضها، گزینهای برای کاربران حرفهای است. ابزارهای apt-cache و apt-mark نیز قابلیتهای اضافی برای جستجو و نشانگذاری بستهها فراهم میکنند.
بهعنوان گام بعدی:
- آموزش APT را برای مدیریت روزمرهٔ بستهها مرور کنید
- آموزش مخازن Debian را برای پیکربندی sources.list ببینید
- آموزش بهروزرسانی سیستم را برای روتین نگهداری دنبال کنید
این صفحه در تاریخ ۹ تیر ۱۴۰۵ بهروزرسانی شده است.