linux

مدیریت بسته Package Management در لینوکس

ستاره غیر فعالستاره غیر فعالستاره غیر فعالستاره غیر فعالستاره غیر فعال
 

امروزه اکثر سیستم عامل‌های شبه یونیکس، هر کدام مکانیزم متمرکزی به منظور یافتن نرم افزار‌های مختلف و نصب آن‌ها بر روی سیستم ارائه نموده‌اند. سیستم عامل لینوکس نیز از این قاعده مستثنی نمی‌باشد. نرم افزارها معمولا در قالب بسته‌هایی (Packages) ارائه شده و در مخازن (Repositories) نگه داری می‌شوند. کار با این بسته‌ها را اصطلاحاً مدیریت بسته Package Management می‌گویند. این بسته‌ها گاهی اجزای پایه‌ای از یک سیستم عامل را تشکیل می‌دهند؛ و یا می‌توانند شامل کتابخانه‌ها، برنامه‌های کاربردی، سرویس‌ها و مستندات مختلف باشند.

 

مدیریت بسته Package Management

یک مدیر بسته (Package Manager)، می‌تواند کاری بیش از نصب یک نرم افزار بر روی سیستم انجام دهد (برای مثال، می‌تواند نرم افزارهای نصب شده بر روی سیستم را به روز رسانی کند). مخازن بسته‌ها (Package Repositories)، به ما این اطمینان را می‌دهند که بسته‌های موجود در آن‌ها، به طور کامل توسط توسعه دهندگان مختلف بررسی و تایید شده است. اما ممکن است مخازن رسمی یک توزیع لینوکس، پاسخ گوی نیازهای ما نباشد؛ چرا که برخی از بسته‌ها در نسخه‌های پایدار یک توزیع لینوکس، ممکن است منسوخ شده باشند (درحالی که ما به آخرین نسخه‌ی یک نرم افزار نیاز داریم). با این اوصاف، مدیریت بسته‌ها یک مهارت اساسی برای هر برنامه نویس و مدیر سیستم (System Administrator) است که قصد استفاده از لینوکس را دارد.

 

نگاهی کوتاه به مدیر بسته‌های مختلف

یک بسته‌ی نرم افزاری، آرشیوی از فایل‌های باینری کامپایل شده، منابع مورد نیاز برای ساخت نرم افزار و اسکریپت‌هایی به منظور نصب و راه اندازی نرم افزار است. یک بسته، همچنین شامل لیستی از بسته‌ها در قالب وابستگی‌هایی (Dependencies) می‌باشد که برای اجرای نرم افزار مورد نظر، ابتدا باید آن وابستگی‌ها بر روی سیستم نصب شوند. اکثر ابزارهایی که در ادامه آن‌ها را معرفی می‌کنیم، در هنگام نصب یک بسته، آن را از مخازن دریافت کرده و وابستگی‌هایش را رفع می‌کنند و سپس به نصب آن می‌پردازند.

 

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

در دبیان (Debian) و توزیع‌های مبتنی بر آن مانند اوبونتو (Ubuntu) و مینت (Mint)، فرمت بسته‌ها deb می‌باشد. ابزار APT (Advanced Packaging Tool) دستوراتی به منظور کارهای مختلف با بسته‌ها – از جمله نصب، به روز رسانی، حذف و یافتن بسته‌ها در مخازن – را فراهم کرده است. دستورات مربوط به APT، به عنوان دستورات front-end و سطح بالا برای ابزار‌ِ سطح پایین dpkg عمل می‌کنند (با استفاده از dpkgg می‌توان فایل بسته‌هایی که بر روی سیستم قرار دارند را نصب نمود). همچنین می‌توان از دستورات apt-get و apt-cache (نسخه‌ی قدیمیِ دستور aptt) برای مدیریت بسته‌ها در اکثر توزیع‌های مبتنی بر دبیان استفاده کرد.

فدورا (Fedora) و سنت او اس (CentOS) و سایر توزیع‌های خانواده‌ی Red Hat از بسته‌هایی با فرمت rpm استفاده می‌کنند. در CentOS از ابزار yum به منظور مدیریت بسته‌های موجود در مخازن و همچنین بسته‌های موجود بر روی سیستم استفاده می‌شود (از ابزار سطح پایین rpmm نیز می‌توان فایل بسته‌هایی که بر روی سیستم قرار دارند را نصب نمود). در نسخه‌های اخیر فدورا (فدورا ۲۲ به بعد) از دستور dnf بجای yum استفاده می‌شود. البته dnf در نسخه‌ی  ۱۸ فدورا معرفی شد و در نسخه‌ی ۲۲۲ به صورت پیش‌فرض از آن استفاده می‌شود.

توزیع‌های SLES و OpenSUSE نیز از بسته‌هایی با فرمت rpm استفاده کرده و از دستور rpm در این توزیع‌ها هم می‌توان استفاده نمود. در این توزیع‌ها از ابزارهای YaST و Zypper برای مدیریت بسته‌ها استفاده می‌شود (در این مقاله با کارایی zypperr آشنا می‌شویم).

بسته‌هایی با فرمت tar.xz یا tar.gz و یا tar.bz2 نیز وجود دارند که آن‌ها را می‌توان بر روی تمام توزیع‌ها نصب نمود. آرچ (Arch) و توزیع‌های مبتنی بر آن مانند مانجارو (Manjaro) نیز از بسته‌هایی با فرمت pkg.tar.gz یا pkg.tar.xz و یا pkg.tar.bz2 استفاده می‌کنند. به منظور مدیریت بسته‌ها در این توزیع‌ها از ابزار pacman استفاده می‌شود.

در ادامه با دستورات مختلف این مدیر بسته‌ها آشنا می‌شویم.

 

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

اکثر توزیع‌ها از یک پایگاه داده‌‌ی محلی بر روی خود استفاده می‌کنند که در آن لیست بسته‌های موجود در مخازنی که باید بسته‌ها از آن‌ها دریافت شوند، قرار دارد. بهتر است قبل از نصب یک بسته بر روی سیستم، این لیست به روز شود. البته ابزارهای yum و dnf به طور خودکار قبل از نصب هر بسته‌ای، عمل به روز رسانی را انجام می‌دهند. همچنین بهتر است تمام نرم افزار‌های نصب شده بر روی سیستم به روز باشند. پس از به روز رسانی لیست بسته‌های موجود در مخازن، باید عمل به روز رسانی بسته‌های نصب شده بر روی سیستم انجام گیرد. با استفاده از دستورات زیر، می‌توان این کار را انجام داد:

 

# Debian/Ubuntu

sudo apt update; sudo apt upgrade

 

# CentOS/Fedora 22-

sudo yum update

 

# Fedora 22+

sudo dnf upgrade

 

# OpenSUSE/SLES

sudo zypper update

 

# Arch/Manjaro

sudo pacman -Syu

 

پیدا کردن یک بسته

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

# Debian/Ubuntu

apt search search_string

 

# CentOS/Fedora 22-

yum search search_string

 

# Fedora 22+

dnf search search_string

 

# OpenSUSE/SLES

zypper search search_string

 

# Arch/Manjaro

pacman -Ss search_string

 

مشاهده‌ی مشخصات کامل یک بسته

گاهی لازم است پیش از نصب بسته، برای دستیابی به اطلاعات بیشتر، توضیحات کاملی از یک بسته را مطالعه کنیم. این توضیحات می‌تواند شامل نسخه‌ی نرم افزار، لیست وابستگی‌های آن و سایر اطلاعات مفید دیگر نیز باشد. همچنین می‌توان اطلاعات مربوط به بسته‌های نصب شده بر روی سیستم را نیز به راحتی بدست آورد. با استفاده از دستورات زیر، می‌توان این اطلاعات را استخراج نمود:

 

# Debian/Ubuntu

apt show package # Display remote package information

dpkg -s package # Display local package information

 

# CentOS/Fedora 22-

yum info package # Display remote package information

rpm -qi package # Display local package information

 

# Fedora 22+

dnf info package # Display remote package information

rpm -qi package # Display local package information

 

# OpenSUSE/SLES

zypper info package # Display remote package information

rpm -qi package # Display local package information

 

# Arch/Manjaro

pacman -Si package # Display remote package information

pacman -Qi package # Display local package information

 

نصب یک بسته از مخازن

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

# Debian/Ubuntu

sudo apt install package

 

# CentOS/Fedora 22-

sudo yum install package

 

# Fedora 22+

sudo dnf install package

 

# OpenSUSE/SLES

sudo zypper install package

 

# Arch/Manjaro

sudo pacman -S package

 

نصب یک بسته از روی سیستم فایل محلی (Local Filesystem)

گاهی ممکن است بسته‌ی مورد نظر شما در مخازن رسمی وجود نداشته باشد، اما توسعه دهنده‌ی نرم افزار آن را در اینترنت برای دانلود قرار داده است. در نتیجه به راحتی می‌توان این بسته را از سایت مورد نظر دانلود کرده و پس از دریافت آن، تنها با استفاده از یک دستور آن را نصب کنیم:

# Debian/Ubuntu

sudo dpkg -i package.deb

# or

sudo apt install -y gdebi && sudo gdebi package.deb

# or

sudo apt install package.deb

 

# CentOS/Fedora 22-

sudo yum install package.rpm

# or

sudo rpm -ivh package.rpm

 

# Fedora 22+

sudo dnf install package.rpm

# or

sudo rpm -ivh package.rpm

 

# OpenSUSE/SLES

sudo zypper install package.rpm

# or

sudo rpm -ivh package.rpm

 

# Arch/Manjaro

sudo pacman -U package.pkg.tar.xz

 

حذف یک بسته از سیستم

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

# Debian/Ubuntu

sudo apt remove package

sudo apt-get autoremove # Remove unneeded packages

 

# CentOS/Fedora 22-

sudo yum remove package

 

# Fedora 22+

sudo dnf remove package

sudo dnf autoremove # Remove unneeded packages

 

# OpenSUSE/SLES

sudo zypper remove package

sudo zypper rm -u # Remove unneeded packages

 

# Arch/Manjaro

sudo pacman -Rs package

sudo pacman -Qdtq | sudo pacman -Rs - # Remove unneeded packages

 شما می‌توانید با خواندن مستندات هر کدام از این مدیر بسته‌ها در سیستم خود، اطلاعات جامع تری از قابلیت‌های مختلف هر کدام از آن‌ها و نحوه‌ی کار با آن‌ها بدست آورید. با استفاده از دستور man می‌توانید به این مستندات دست یابید:

This is just some code.

# Debian/Ubuntu

man apt

man dpkg

 

# CentOS/Fedora 22-

man yum

 

# Fedora 22+

man dnf

 

# OpenSUSE/SLES

man zypper

 

man rpm

 

# Arch/Manjaro

man pacman

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

 

 

تمام حقوق سایت برای سلام دیجی و نويسندگان آن محفوظ می باشد