user@linux-tutorials: ~/tutorials/07-package-management — linux-tutorials

tutorials / linux / chapter-07.md · utf-8 ⬇ download chapter-07.md

فصل هفتم: مدیریت نرم‌افزارها در لینوکس

Linux Package Management

در فصل‌های گذشته با فایل‌ها، مجوزها، کاربران و ساختار داخلی لینوکس آشنا شدیم.

اکنون زمان آن رسیده است که یاد بگیریم چگونه نرم‌افزارها را در لینوکس نصب، حذف و مدیریت کنیم.

در هر سیستم‌عامل، نصب برنامه‌ها یکی از کارهای روزمره کاربران است.

در سیستم‌هایی مانند Windows معمولاً کاربران فایل نصب‌کننده را دانلود کرده و آن را اجرا می‌کنند.

اما در لینوکس، روش مدیریت نرم‌افزارها متفاوت است.

لینوکس از مفهومی به نام Package Management استفاده می‌کند.

Package Managerها وظیفه پیدا کردن، دانلود، نصب، به‌روزرسانی و حذف نرم‌افزارها را بر عهده دارند.

Package چیست؟

Package یا بسته نرم‌افزاری، مجموعه‌ای از فایل‌ها است که برای نصب یک نرم‌افزار آماده شده است.

یک Package معمولاً شامل:

  • فایل‌های برنامه
  • فایل‌های تنظیمات
  • اطلاعات مربوط به نسخه
  • وابستگی‌های نرم‌افزاری
  • دستورالعمل نصب

است.

[i]به زبان ساده: Package یک نسخه آماده از یک نرم‌افزار است که سیستم می‌تواند آن را مدیریت کند.

چرا لینوکس از Package Manager استفاده می‌کند؟

در گذشته نصب نرم‌افزار در لینوکس می‌توانست پیچیده باشد.

کاربر باید:

  • کد منبع برنامه را دریافت کند.
  • آن را کامپایل کند.
  • وابستگی‌ها را پیدا کند.
  • تنظیمات لازم را انجام دهد.

Package Managerها این فرآیند را ساده کردند.

مزایای Package Manager:

  • نصب سریع نرم‌افزارها
  • مدیریت وابستگی‌ها
  • دریافت نسخه‌های امن
  • حذف کامل برنامه‌ها
  • به‌روزرسانی آسان

Repository چیست؟

Repository یا مخزن نرم‌افزار، سروری است که Packageهای مختلف در آن قرار دارند.

وقتی شما دستوری مانند:

user@linux-tutorials: ~/ch-07BASH
apt install firefox

را اجرا می‌کنید، سیستم ابتدا Repositoryها را بررسی می‌کند، سپس Package مورد نظر را دانلود و نصب می‌کند.

ساختار کلی:

User
 |
 ▼
Package Manager
 |
 ▼
Repository
 |
 ▼
Package

تفاوت توزیع‌های لینوکس در Package Management

توزیع‌های مختلف لینوکس از Package Managerهای متفاوتی استفاده می‌کنند.

نمونه‌ها:

Debian و Ubuntu:

APT

Fedora و Red Hat:

DNF

Arch Linux:

Pacman
[i]در این کتاب تمرکز ما بر روی APT خواهد بود، زیرا Ubuntu و Debian از محبوب‌ترین توزیع‌های لینوکس هستند.

APT چیست؟

APT مخفف:

Advanced Package Tool

است.

APT ابزار اصلی مدیریت Package در سیستم‌های Debian-based است.

توسط APT می‌توان:

  • نرم‌افزار نصب کرد.
  • نرم‌افزار حذف کرد.
  • سیستم را به‌روزرسانی کرد.
  • اطلاعات Packageها را مشاهده کرد.

به‌روزرسانی لیست Packageها

قبل از نصب نرم‌افزار بهتر است لیست Packageها را به‌روز کنیم.

دستور:

user@linux-tutorials: ~/ch-07BASH
sudo apt update

این دستور:

  • Repositoryها را بررسی می‌کند.
  • لیست نسخه‌های جدید را دریافت می‌کند.
  • اطلاعات Packageها را به‌روزرسانی می‌کند.
[!]نکته مهم: این دستور خود نرم‌افزارها را آپدیت نمی‌کند؛ فقط اطلاعات موجود را تازه می‌کند.

ارتقای نرم‌افزارها

برای به‌روزرسانی Packageهای نصب شده:

user@linux-tutorials: ~/ch-07BASH
sudo apt upgrade

استفاده می‌کنیم.

این دستور نسخه‌های جدید نرم‌افزارهای نصب شده را دریافت و نصب می‌کند.

نصب نرم‌افزار با apt install

ساختار:

user@linux-tutorials: ~/ch-07BASH
sudo apt install package-name

مثال:

user@linux-tutorials: ~/ch-07BASH
sudo apt install git

در این فرآیند:

  1. APT Package را پیدا می‌کند.
  2. وابستگی‌ها را بررسی می‌کند.
  3. فایل‌ها را دانلود می‌کند.
  4. نرم‌افزار را نصب می‌کند.

حذف نرم‌افزار

برای حذف یک Package:

user@linux-tutorials: ~/ch-07BASH
sudo apt remove package-name

مثال:

user@linux-tutorials: ~/ch-07BASH
sudo apt remove git

در این حالت برنامه حذف می‌شود، اما ممکن است فایل‌های تنظیمات باقی بمانند.

حذف کامل نرم‌افزار

برای حذف برنامه همراه با تنظیمات:

user@linux-tutorials: ~/ch-07BASH
sudo apt purge package-name

مثال:

user@linux-tutorials: ~/ch-07BASH
sudo apt purge nginx

جستجو در Packageها

برای پیدا کردن نرم‌افزار:

user@linux-tutorials: ~/ch-07BASH
apt search keyword

مثال:

user@linux-tutorials: ~/ch-07BASH
apt search python

لیستی از Packageهای مرتبط نمایش داده می‌شود.

مشاهده اطلاعات یک Package

برای دریافت اطلاعات:

user@linux-tutorials: ~/ch-07BASH
apt show package-name

مثال:

user@linux-tutorials: ~/ch-07BASH
apt show python3

اطلاعاتی مانند:

  • نسخه
  • توضیحات
  • حجم
  • وابستگی‌ها

نمایش داده می‌شود.

مشاهده Packageهای نصب شده

برای مشاهده لیست Packageها:

user@linux-tutorials: ~/ch-07BASH
apt list --installed

استفاده می‌شود.

مفهوم Dependency

یکی از مهم‌ترین وظایف Package Managerها مدیریت Dependency است.

Dependency یعنی یک نرم‌افزار برای اجرا شدن به نرم‌افزارهای دیگری نیاز دارد.

مثال:

یک برنامه ممکن است به:

  • کتابخانه خاص
  • ابزار سیستمی
  • نسخه مشخصی از یک Package

نیاز داشته باشد.

APT این وابستگی‌ها را به صورت خودکار مدیریت می‌کند.

dpkg چیست؟

dpkg ابزار سطح پایین مدیریت Package در Debian است.

APT در واقع از dpkg برای نصب Packageها استفاده می‌کند.

مهم‌ترین کاربرد:

نصب فایل‌های:

.deb

است.

نصب فایل deb با dpkg

مثال:

user@linux-tutorials: ~/ch-07BASH
sudo dpkg -i package.deb

بعد از نصب ممکن است وابستگی‌هایی ناقص باشند.

برای اصلاح:

user@linux-tutorials: ~/ch-07BASH
sudo apt install -f

استفاده می‌کنیم.

تفاوت apt و dpkg

apt dpkg
سطح بالا سطح پایین
مدیریت وابستگی‌ها را انجام می‌دهد وابستگی‌ها را خودکار حل نمی‌کند
از Repository استفاده می‌کند فایل محلی deb را نصب می‌کند
مناسب استفاده روزمره است برای مدیریت مستقیم Packageها استفاده می‌شود

پاک‌سازی Packageهای اضافی

گاهی Packageهایی باقی می‌مانند که دیگر استفاده نمی‌شوند.

برای حذف آن‌ها:

user@linux-tutorials: ~/ch-07BASH
sudo apt autoremove

استفاده می‌شود.

بررسی فضای Package Cache

APT فایل‌های دانلود شده را ذخیره می‌کند.

برای پاک کردن Cache:

user@linux-tutorials: ~/ch-07BASH
sudo apt clean

استفاده می‌کنیم.

نصب ابزارهای کاربردی اولیه

چند ابزار رایج:

نصب Git:

user@linux-tutorials: ~/ch-07BASH
sudo apt install git

نصب Python:

user@linux-tutorials: ~/ch-07BASH
sudo apt install python3

نصب curl:

user@linux-tutorials: ~/ch-07BASH
sudo apt install curl

نصب wget:

user@linux-tutorials: ~/ch-07BASH
sudo apt install wget

مدیریت نرم‌افزارها در زندگی واقعی

یک کاربر حرفه‌ای لینوکس دائماً با Package Manager کار می‌کند.

مثال‌ها:

توسعه‌دهنده:

  • نصب زبان‌های برنامه‌نویسی
  • نصب کتابخانه‌ها
  • نصب ابزارهای توسعه

مدیر سیستم:

  • نصب سرویس‌ها
  • به‌روزرسانی سرورها
  • مدیریت امنیت

متخصص امنیت:

  • نصب ابزارهای تحلیل
  • مدیریت ابزارهای تست

تمرین‌های فصل هفتم

[01]به‌روزرسانی Repository

user@linux-tutorials: ~/ch-07BASH
sudo apt update

[02]بررسی آپدیت‌ها

user@linux-tutorials: ~/ch-07BASH
sudo apt upgrade

[03]نصب یک برنامه

user@linux-tutorials: ~/ch-07BASH
sudo apt install tree

[04]مشاهده اطلاعات برنامه

user@linux-tutorials: ~/ch-07BASH
apt show tree

[05]حذف برنامه

user@linux-tutorials: ~/ch-07BASH
sudo apt remove tree

[06]پاک‌سازی Packageهای اضافی

user@linux-tutorials: ~/ch-07BASH
sudo apt autoremove

جمع‌بندی فصل هفتم

در این فصل یاد گرفتیم:

  • Package چیست.
  • Package Manager چه کاری انجام می‌دهد.
  • Repository چیست.
  • چگونه با APT نرم‌افزار نصب کنیم.
  • چگونه نرم‌افزارها را حذف و به‌روزرسانی کنیم.
  • تفاوت apt و dpkg چیست.
  • Dependencyها چگونه مدیریت می‌شوند.

مدیریت Packageها یکی از مهارت‌های ضروری هر کاربر حرفه‌ای لینوکس است.

بدون شناخت Package Management، مدیریت سیستم‌های لینوکسی بسیار دشوار خواهد بود.

[→]در فصل بعد وارد یکی از مهم‌ترین بخش‌های لینوکس می‌شویم: پردازش‌ها، سرویس‌ها و مدیریت منابع سیستم