## 📦 مدیریت بستهها با RPM در CentOS، RHEL و Fedora
مدیریت بستهها یکی از مهمترین وظایف مدیران سیستم لینوکسی است. در توزیعهای مبتنی بر RedHat مثل **CentOS**، **RHEL** و **Fedora**، ابزار RPM (Red Hat Package Manager) برای نصب، بررسی و مدیریت بستهها استفاده میشود.
برخلاف YUM یا DNF، ابزار RPM به تنهایی قابلیت حل خودکار وابستگیها را ندارد، ولی در عوض کنترل مستقیمتر و دقیقتری به کاربر میدهد.
---
## 🧰 نصب بسته با RPM
### 📥 نصب بسته:
```bash
sudo rpm -ivh package-name.rpm
```
- `-i` برای نصب (install)
- `-v` برای نمایش اطلاعات
- `-h` برای نمایش نوار پیشرفت (hash)
### ⚠️ هشدار:
اگر بستهی نصبشده به بستههای دیگری وابسته باشد، rpm به تنهایی آنها را نصب نمیکند و باید به صورت دستی نصب شوند یا از YUM استفاده شود.
---
## 🔁 بهروزرسانی بسته
```bash
sudo rpm -Uvh package-name.rpm
```
- `-U` برای بهروزرسانی (update)
- اگر بسته وجود نداشته باشد، آن را نصب میکند.
---
## 📥 نصب یا بهروزرسانی (هوشمند)
```bash
sudo rpm -Fvh package-name.rpm
```
- `-F` = فقط در صورتی بهروزرسانی میکند که بستهای با همان نام قبلاً نصب شده باشد.
---
## ❌ حذف بسته
```bash
sudo rpm -e package-name
```
- نام بسته را از خروجی دستور `rpm -qa` میتوانید پیدا کنید.
---
## 🔍 بررسی بستهها
### 📦 نمایش تمام بستههای نصبشده:
```bash
rpm -qa
```
### 🔎 جستجوی بسته خاص:
```bash
rpm -qa | grep nginx
```
### 📖 اطلاعات بسته:
```bash
rpm -qi package-name
```
### 📁 لیست فایلهای داخل بسته:
```bash
rpm -ql package-name
```
---
## 🔍 بررسی اینکه فایل خاص متعلق به کدام بسته است:
```bash
rpm -qf /path/to/file
```
مثال:
```bash
rpm -qf /etc/nginx/nginx.conf
```
---
## ✅ بررسی وابستگیها
### نمایش وابستگیهای یک بسته:
```bash
rpm -qpR package-name.rpm
```
- `-q` = query
- `-p` = package file
- `-R` = requirements (وابستگیها)
---
## 🧪 اعتبارسنجی بسته نصبشده
بررسی اینکه فایلهای یک بسته تغییر کردهاند یا خیر:
```bash
rpm -V package-name
```
خروجی مثل این خواهد بود:
```
S.5....T. c /etc/nginx/nginx.conf
```
هر حرف نشاندهنده یک نوع تفاوت است.
---
## 📥 ساخت دیتابیس Local از فایلهای RPM نصبشده
برای زمانی که rpm خراب شده باشد یا مشکل در پایگاه دادهها باشد:
```bash
sudo rpm --rebuilddb
```
---
## 🛠 رفع وابستگیها (پیشنهاد حرفهای)
اگر هنگام نصب با پیام خطای “missing dependencies” مواجه شدید، به جای `rpm` از `yum` استفاده کنید تا وابستگیها خودکار حل شوند:
```bash
sudo yum install ./package.rpm
```
یا با ابزار `dnf` در نسخههای جدیدتر:
```bash
sudo dnf install ./package.rpm
```
---
## 📌 مقایسه سریع YUM vs RPM
| ویژگی | RPM | YUM |
|-------|-----|-----|
| نصب بسته | ✅ | ✅ |
| حذف بسته | ✅ | ✅ |
| بررسی جزئیات | ✅ | ✅ |
| نصب خودکار وابستگیها | ❌ | ✅ |
| مدیریت مخازن | ❌ | ✅ |
| مناسب برای اسکریپتنویسی سریع | ✅ | ❌ (کندتر) |
---
## 🎯 نتیجهگیری
اگر به دنبال کنترل دقیق روی بستهها هستید، `rpm` ابزار مناسبی است. ولی برای نصب آسان و خودکار با وابستگیها، `yum` یا `dnf` گزینههای بهتری هستند.