## 📚 فهرست مطالب
1. مقدمه
2. معماری بستهها در لینوکس
3. YUM / DNF (CentOS, RHEL, Fedora)
4. RPM (CentOS, RHEL, Fedora)
5. APT-GET / APT-CACHE / APT (Debian, Ubuntu)
6. DPKG (Debian, Ubuntu)
7. Aptitude (Debian, Ubuntu)
8. Zypper (openSUSE, SLE)
9. مقایسه و بهترین کاربردها
10. نکات حرفهای و توصیههای امنیتی
11. جمعبندی
---
## 1. مقدمه
ابزارهای مدیریت بسته در لینوکس وظیفهی نصب، حذف، بهروزرسانی و جستجوی بستههای نرمافزاری را بر عهده دارند. هر توزیعِ لینوکسی ممکن است مجموعهی متفاوتی از ابزارها را ارائه دهد که روی دو ساختار رایج (`.rpm` و `.deb`) سوار هستند. در این مقاله، با جزئیات و مثالهای کاربردی، هر یک از این ابزارها را بررسی میکنیم.
---
## 2. معماری بستهها در لینوکس
- **RPM-based** (`.rpm`)
- توزیعها: RHEL, CentOS, Fedora, openSUSE
- ابزارها: RPM, YUM/DNF, Zypper
- **DEB-based** (`.deb`)
- توزیعها: Debian, Ubuntu و مشتقات
- ابزارها: DPKG, APT-GET/APT, Aptitude
هر بسته معمولاً شامل فایلهای باینری/متن، اسکریپتهای نصب/حذف (pre/post), و metadata برای وابستگیها، نسخه و توضیحات است.
---
## 3. YUM / DNF (CentOS, RHEL, Fedora)
- **معرفی**: YUM (Yellowdog Updater Modified)، DNF نسل جدید آن با کارایی و حل وابستگی بهتر
- **دستورات کلیدی**:
```bash
sudo yum install pkg # نصب
sudo yum update # بهروزرسانی کل سیستم
sudo yum remove pkg # حذف
yum search keyword # جستجو
yum info pkg # نمایش جزئیات
yum history # تاریخچه و undo
```
- **نکات**:
- استفاده از `/etc/yum.repos.d/` برای مخازن
- `yum history undo ID` برای بازگشت تراکنش
- در Fedora/CentOS 8 به بعد: معادل با `dnf`
---
## 4. RPM (CentOS, RHEL, Fedora)
- **معرفی**: ابزار لایه پایین جهت نصب مستقیم بستههای `.rpm`
- **دستورات کلیدی**:
```bash
sudo rpm -ivh pkg.rpm # نصب
sudo rpm -Uvh pkg.rpm # بهروزرسانی
sudo rpm -e pkg # حذف
rpm -qa # لیست نصبشدهها
rpm -qi pkg # جزئیات بسته
rpm -ql pkg # فایلهای بسته
rpm -qf /path/to/file # پیدا کردن بسته مالک فایل
```
- **نکات**:
- بدون حل خودکار وابستگی
- برای حل وابستگیها از YUM/DNF استفاده کنید
---
## 5. APT-GET / APT-CACHE / APT (Debian, Ubuntu)
- **معرفی**: APT ابزار جامع برای مدیریت بستههای `.deb`
- **دستورات کلیدی**:
```bash
sudo apt-get update # بروزرسانی لیست مخازن
sudo apt-get upgrade # بهروزرسانی بستهها
sudo apt-get install pkg # نصب
sudo apt-get remove pkg # حذف
sudo apt-get purge pkg # حذف بههمراه تنظیمات
sudo apt-get autoremove # حذف وابستگیهای بلااستفاده
sudo apt-get clean # پاکسازی کش
apt-cache search keyword # جستجو
apt-cache show pkg # جزئیات
```
- **نکات**:
- `apt` رابط مدرن: `sudo apt update && sudo apt install pkg`
- مدیریت مخازن در `/etc/apt/sources.list.d/`
---
## 6. DPKG (Debian, Ubuntu)
- **معرفی**: ابزار پایه برای بستههای `.deb`
- **دستورات کلیدی**:
```bash
sudo dpkg -i pkg.deb # نصب
sudo dpkg -r pkg # حذف
sudo dpkg -P pkg # حذف بههمراه تنظیمات
dpkg -l # لیست نصبشدهها
dpkg -L pkg # فایلهای بسته
dpkg -S /path/to/file # مالکیت فایل
sudo dpkg --configure -a # تعمیر نصب ناقص
sudo apt-get install -f # رفع وابستگی پس از dpkg -i
```
- **نکات**:
- بدون حل وابستگی
- برای اسکریپتها و نصب محلی مفید
---
## 7. Aptitude (Debian, Ubuntu)
- **معرفی**: رابط تعاملی و هوشمند برای APT
- **ویژگیها**:
- رابط ncurses برای مرور بستهها
- حل وابستگیهای هوشمند
- امکان lock/pin کردن نسخهها
- **دستورات کلیدی**:
```bash
sudo aptitude update
sudo aptitude install pkg
sudo aptitude remove pkg
sudo aptitude search keyword
sudo aptitude show pkg
```
- **نکات**:
- مناسب برای محیطهای تعاملی
- در اسکریپت کمتر کاربرد دارد
---
## 8. Zypper (openSUSE, SLE)
- **معرفی**: ابزار مدیریت بستهی RPM در SUSE
- **دستورات کلیدی**:
```bash
sudo zypper install pkg
sudo zypper remove pkg
sudo zypper update
zypper search keyword
zypper info pkg
zypper repos
sudo zypper addrepo URL alias
sudo zypper refresh
sudo zypper dist-upgrade
```
- **نکات**:
- قفل کردن بسته با `zypper addlock pkg`
- بازگردانی تراکنش با `zypper undo`
---
## 9. مقایسه و بهترین کاربردها
| ابزار | وابستگیها | تعامل کاربر | مناسب برای | اسکریپتنویسی | مدیریت مخازن |
|-------------|------------|-------------|----------------|--------------|--------------|
| RPM | خیر | خط فرمان | کنترل دقیق | ✅ | ❌ |
| YUM/DNF | بله | خط فرمان | سرور RHEL/CentOS| ✅ | ✅ |
| Zypper | بله | خط فرمان | SUSE/openSUSE | ✅ | ✅ |
| dpkg | خیر | خط فرمان | نصب محلی .deb | ✅ | ❌ |
| APT-GET/APT | بله | خط فرمان | Debian/Ubuntu | ✅ | ✅ |
| Aptitude | بله | تعاملی (ncurses)| محیط دسکتاپ | ❌ | ✅ |
---
## 10. نکات حرفهای و توصیههای امنیتی
- همیشه قبل از عملیات عمده **بکاپ** تهیه کنید.
- از **محیط تست** (VM یا container) برای آزمایش مخازن یا بستههای جدید استفاده کنید.
- دستورات حذف (`remove`/`purge`) را با دقت اجرا کنید تا پکیجهای کلیدی سیستم حذف نشوند.
- فایلهای پیکربندی مخازن را در پوشههای جداگانه نگه دارید (`/etc/apt/sources.list.d/`, `/etc/yum.repos.d/`, `/etc/zypp/repos.d/`).
- از قابلیت **history/undo** در YUM و Zypper برای بازگشت تراکنشهای ناخواسته بهره ببرید.
- بهروز نگه داشتن سیستم با **بهروزرسانیهای امنیتی** را در اولویت قرار دهید.
---
## 11. جمعبندی
مدیریت بسته در لینوکس، از لایههای پایین مانند RPM و dpkg تا لایههای بالاتر مانند YUM/DNF، APT و Zypper گسترده است. آشنایی با هر یک و استفادهی بهجا، میتواند بهرهوری و امنیت سیستمهای شما را به طرز چشمگیری افزایش دهد.