APT — مدیریت بسته در Debian
آموزش کامل APT در Debian: نصب، حذف، بهروزرسانی، جستجو، مدیریت کش، hold، و رفع خطاهای رایج apt.
APT (Advanced Package Tool) سیستم مدیریت بستهٔ Debian است و قلب تپندهٔ این توزیع بهشمار میرود. APT نصب، حذف، بهروزرسانی و حل وابستگیهای بستههای با پسوند .deb را بر عهده دارد. در این آموزش با دستورات و امکانات APT آشنا میشوید.
APT چیست؟
APT لایهای بالاتر از dpkg (مدیریت بستهٔ سطح پایین Debian) است که کارهای پیچیده را ساده میکند:
- حل خودکار وابستگیها
- دانلود بستهها از مخازن شبکهای
- تأیید امضای GPG بستهها
- مدیریت چند مخزن بهصورت همزمان
- ارتقای هوشمند سیستم
apt در برابر apt-get
دستور apt (جدیدتر، با خروجی رنگی و پیشرفت کاربرپسند) برای استفادهٔ تعاملی طراحی شده، در حالی که apt-get و apt-cache برای اسکریپتها مناسبترند. در اسکریپتهای پایدار از apt-get استفاده کنید، اما در ترمینال apt راحتتر است.
دستورات پایهٔ APT
۱. بهروزرسانی فهرست بستهها
# دریافت فهرست بستههای جدید از مخازن
sudo apt update
# خروجی نمونه:
# Hit:1 http://deb.debian.org/debian bookworm InRelease
# Hit:2 http://deb.debian.org/debian bookworm-updates InRelease
# Get:3 http://deb.debian.org/debian-security bookworm-security InRelease
# Reading package lists... Done
# Building dependency tree... Done
# Reading state information... Done
# All packages are up to date.تفاوت update و upgrade
apt update فقط فهرست بستهها را بهروز میکند و هیچ بستهای نصب نمیکند. apt upgrade بستههای نصبشده را به نسخههای جدید ارتقا میدهد. این دو را با هم اشتباه نگیرید.
۲. نصب بستهٔ جدید
# نصب یک بسته
sudo apt install nmap
# نصب چند بسته همزمان
sudo apt install nmap wireshark tcpdump
# نصب بدون پرسش تأیید
sudo apt install -y nmap
# نصب نسخهٔ خاص
sudo apt install nmap=7.93+git20240122-1
# نصب از مخزن خاص
sudo apt install -t bookworm-backports linux-image-amd64۳. بهروزرسانی بستهها
# ارتقای بستههای نصبشده (حذف هیچ بستهای انجام نمیشود)
sudo apt upgrade
# ارتقای کامل (ممکن است بستههای قدیمی را حذف کند)
sudo apt full-upgrade
# ارتقا با تأیید خودکار
sudo apt upgrade -y| دستور | رفتار | مناسب برای |
|---|---|---|
apt upgrade | نصب نسخههای جدید، حذف نمیکند | بهروزرسانی روزانه |
apt full-upgrade | ممکن است بستهها را حذف/جایگزین کند | ارتقای بزرگ، توزیع |
۴. جستجوی بسته
# جستجو در فهرست بستهها
apt search nmap
# خروجی:
# nmap/stable 7.93+git20240122-1 amd64
# The Network Mapper
# nmapnc/stable 7.93+git20240122-1 all
# ...۵. نمایش اطلاعات بسته
# اطلاعات کامل یک بسته
apt show nmap
# خروجی:
# Package: nmap
# Version: 7.93+git20240122-1
# Priority: optional
# Section: net
# Maintainer: Debian Security Tools <team+pkg-security@tracker.debian.org>
# Depends: libc6 (>= 2.34), libgcc-s1 (>= 3.0), liblua5.3-0, ...
# Description: The Network Mapper
# Nmap is a utility for network exploration or security auditing.۶. حذف بسته
# حذف بسته (نگهداشتن فایلهای پیکربندی)
sudo apt remove nmap
# حذف کامل بسته و فایلهای پیکربندی
sudo apt purge nmap
# حذف بستههای یتیم (وابستگیهای غیرضروری)
sudo apt autoremove
# حذف کامل + یتیمها
sudo apt purge --auto-remove nmapجدول دستورات رایج APT
| دستور | توضیح |
|---|---|
sudo apt update | بهروزرسانی فهرست بستهها |
sudo apt upgrade | ارتقای بستههای نصبشده |
sudo apt full-upgrade | ارتقای کامل با حذف در صورت نیاز |
sudo apt install pkg | نصب بسته |
sudo apt install -y pkg | نصب بدون پرسش تأیید |
sudo apt remove pkg | حذف بسته |
sudo apt purge pkg | حذف کامل بسته و تنظیمات |
sudo apt autoremove | حذف وابستگیهای یتیم |
sudo apt autoclean | پاکسازی کش بستههای قدیمی |
sudo apt clean | پاکسازی کامل کش |
apt search name | جستجوی بسته |
apt show pkg | نمایش اطلاعات بسته |
apt list --installed | لیست بستههای نصبشده |
apt list --upgradable | بستههای قابل ارتقا |
apt depends pkg | وابستگیهای بسته |
apt rdepends pkg | بستههایی که به این وابستهاند |
dpkg -L pkg | لیست فایلهای یک بسته |
dpkg -S file | بستهٔ صاحب یک فایل |
مدیریت کش APT
APT بستههای دانلودشده را در /var/cache/apt/archives/ نگه میدارد. با گذشت زمان، این پوشه میتواند فضای زیادی اشغال کند:
# مشاهدهٔ حجم کش
sudo du -sh /var/cache/apt/archives/
# پاکسازی بستههای قدیمی (نسخههای قبلی)
sudo apt autoclean
# پاکسازی کامل کش
sudo apt cleanپاکسازی دورهای
پس از هر apt upgrade یا نصب نرمافزار بزرگ، sudo apt autoremove && sudo apt clean را اجرا کنید تا فضای دیسک اشغال نشود.
نصب بستهٔ .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 در مخازن میگردد.
لیست بستههای نصبشده
# لیست تمام بستههای نصبشده
apt list --installed | head
# جستجوی بستهٔ خاص
apt list --installed | grep nmap
# ذخیرهٔ لیست برای پشتیبانگیری
apt list --installed > installed-packages.txt
# بازیابی روی سیستم دیگر
sudo apt install $(awk -F/ '/^nmap/{print $1}' installed-packages.txt)قفلکردن نسخهٔ بسته (Hold)
گاهی لازم است نسخهٔ یک بسته را ثابت نگه دارید تا با بهروزرسانی ارتقا نیابد:
# قفلکردن نسخهٔ یک بسته
sudo apt-mark hold linux-image-amd64
# مشاهدهٔ بستههای قفلشده
apt-mark showhold
# رفع قفل
sudo apt-mark unhold linux-image-amd64احتیاط با hold
قفلکردن نسخهٔ بستهها میتواند بهروزرسانیهای امنیتی را مسدود کند. فقط در صورت ضرورت از این قابلیت استفاده کنید و بستههای قفلشده را بهطور منظم بررسی کنید.
مشاهدهٔ بستههای قابل ارتقا
# پس از apt update، بستههای قابل ارتقا را ببینید
apt list --upgradable
# خروجی نمونه:
# firefox-esr/stable-security 115.8.0esr-1~deb12u1 amd64 [upgradable from: 115.7.0esr-1~deb12u1]
# openssl/stable-security 3.0.13-1~deb12u1 amd64 [upgradable from: 3.0.11-1~deb12u2]جستجوی پیشرفته
# جستجو در نام بستهها فقط
apt search --names-only nmap
# جستجو با regex
apt search '^nmap$'
# لیست بستههای موجود در دستهٔ خاص
apt list "nmap*"
# مشاهدهٔ سیاست نسخهها
apt-cache policy nmapخطاهای رایج APT
۱. خطای lock
E: Could not get lock /var/lib/dpkg/lock-frontend
It is held by process 12345 (apt)دلیل: یک فرآیند APT دیگر در حال اجراست. راهحل:
# صبر کنید تا فرآیند قبلی تمام شود
# یا در صورت یخزدگی، فرآیند را متوقف کنید
sudo kill 12345
# یا اگر نشد:
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۲. وابستگیهای شکسته
The following packages have unmet dependencies:
nmap : Depends: liblinear3 (>= 1.6) but it is not installable
E: Unable to correct problems, you have held broken packages.راهحل:
# تلاش برای رفع خودکار وابستگیها
sudo apt --fix-broken install
# اگر حل نشد، مخازن را بررسی و بهروز کنید
sudo apt update
sudo apt full-upgrade
# بررسی بستههای قفلشده
apt-mark showhold۳. خطای GPG در مخزن
W: An error occurred during the signature verification.
GPG error: ... NO_PUBKEY 0E98404D386FA1D9راهحل:
# نصب مجدد keyring رسمی Debian
sudo apt install -y debian-archive-keyring
# یا وارد کردن کلید دستی
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 0E98404D386FA1D9apt-key منسوخ شده است
از Debian 12 به بعد، apt-key add منسوخ شده است. روش صحیح، قرار دادن کلیدها در /etc/apt/keyrings/ و ارجاع به آنها در خط مخزن است. برای جزئیات به آموزش مخازن مراجعه کنید.
۴. فضای دیسک ناکافی
E: You don't have enough free space in /var/cache/apt/archives/راهحل:
# پاکسازی کش
sudo apt clean
# بررسی فضای دیسک
df -h
# پاکسازی بستههای یتیم
sudo apt autoremove --purge۵. Hash Sum mismatch
E: Failed to fetch ... Hash Sum mismatchراهحل:
# پاکسازی cache
sudo rm -rf /var/lib/apt/lists/*
sudo apt updateخلاصه و مرحلهٔ بعد
APT سیستم قدرتمند و انعطافپذیر مدیریت بسته در Debian است. با یادگیری چند دستور پایه، میتوانید تمام نیازهای نرمافزاری خود را برطرف کنید. بهخاطر داشته باشید که apt update فقط فهرست را بهروز میکند و apt upgrade بستهها را ارتقا میدهد.
بهعنوان گام بعدی:
- آموزش مخازن Debian را برای پیکربندی sources.list ببینید
- آموزش dpkg و aptitude را برای ابزارهای سطح پایینتر بخوانید
- آموزش بهروزرسانی سیستم را برای روتین نگهداری دنبال کنید
این صفحه در تاریخ ۹ تیر ۱۴۰۵ بهروزرسانی شده است.