نحوه مدیریت پکیجها با apt , yum , dnf و pkg در سرور مجازی
۹ بهمن ۱۴۰۳
مقدمه
اکثر سیستمعاملهای مدرن مشابه یونیکس، مکانیزم متمرکزی برای پیدا کردن و نصب نرمافزار ارائه میدهند. یک نرمافزار، معمولاً به صورت مجموعهای از پکیجها توزیع میشود که این پکیجها در repositoryها قرار دارند. کار با پکیجها را اصطلاحاً package management عنوان میکنند. پکیجها همراه با کتابخانههای مشترک (shared libraries)، برنامهها (applications)، خدمات (services)، و مستندات (documentation)، اجزای اصلی یک سیستمعامل را تشکیل میدهند.
یک سیستم مدیریت پکیج، کار بیشتری از نصب یکباره نرمافزار انجام میدهد. این سیستم ابزارهایی برای ارتقا نسخه پکیجهای نصبشده قبلی، فراهم میکند. repositoryهای بستهها کمک میکنند تا اطمینان حاصل شود که کد برای استفاده در سیستم شما، تایید شده است و نسخههای نصبشده نرمافزار، توسط توسعهدهندگان (developers) و package maintainers نیز، تایید شدهاند.
هنگام پیکربندی سرورها یا محیطهای توسعه، اغلب لازم است که به repositoryهای رسمی، فراتر از آن چیزی که هست؛ نگاه کنید. پکیجها در نسخه پایدار (stable release) یک توزیع، ممکن است قدیمی باشند. با این حال، دانستن اصول مدیریت پکیج (package management)، یک مهارت حیاتی برای مدیران سیستم (system administrators) و توسعهدهندگان است.
این مقاله، یک مرجع سریع برای یادگیری اصول پیدا کردن، نصب و ارتقا پکیجها در انواع مختلف توزیعها، است و به شما کمک زیادی خواهد کرد.
مروری اجمالی بر سیستمهای مدیریت پکیجها
بیشتر سیستمهای پکیجینگ، حول مجموعهای از فایلهای پکیج ساخته شدهاند. یک فایل پکیج معمولاً یک آرشیو است که شامل برنامههای کامپایلشده و دیگر منابع مورد استفاده توسط نرمافزار، همراه با اسکریپتهای نصب است. پکیجها همچنین شامل متادیتاهای (metadata) ارزشمندی از جمله وابستگیهای (dependencies) آنها (لیستی از پکیجهای دیگر که برای نصب و اجرای آنها نیاز است)، هستند.
در حالی که عملکرد و مزایای پکیج منیجرها به طور کلی مشابه است، ابزارها و فرمت پکیجها بسته به پلتفرم، متفاوت است:
- در Debian / Ubuntu: پکیجهای
.deb
توسط apt و dpkg نصب میشوند. - در Rocky / Fedora / RHEL: پکیجهای
.rpm
توسط yum نصب میشوند. - در FreeBSD: پکیجهای
.txz
توسط pkg نصب میشوند
در Debian و سیستمهای مبتنی بر آن، مانند Ubuntu و Linux Mint و Raspbian، فرمت یک فایل پکیج، .deb
است. apt، که یک ابزار پکیجینگ پیشرفته است، دستورات مورد استفاده برای عملیاتهای معمول مانند جستجوی repositoryها، نصب مجموعهای از پکیجها و وابستگیهای آنها، و مدیریت ارتقاها را فراهم میکند. دستورات apt به عنوان یک front-end برای ابزار سطح پایینتر dpkg عمل میکند (که نصب فایلهای .deb
اختصاصی را بر روی سیستم local انجام میدهد و گاهی مستقیماً فراخوانی میشود).
اکثر نسخههای جدید مبتنی بر Debian، شامل یک دستور apt واحد هستند که رابط کاربری مختصر و یکپارچهای برای انجام عملیاتهای معمول (که قبلاً توسط دستورات خاصتری مانند apt-get و apt-cache انجام میشد)، ارائه میدهند.
Rocky Linux و Fedora و دیگر اعضای خانواده Red Hat از فایلهای RPM استفاده میکنند. این سیستمها قبلاً از یک پکیج منیجر به نام yum استفاده میکردند. در نسخههای جدیدتر Fedora و سیستمهای مبتنی بر آن، dnf جایگزین yum شده است. dnf یک نسخه مدرن است که بیشتر ویژگیهای yum را حفظ کرده است.
سیستم پکیجینگ توزیعهای FreeBSD، با دستور pkg مدیریت میشوند. FreeBSD همچنین مجموعه Ports را ارائه میدهد، که یک ساختار دایرکتوری در local است و ابزارهایی دارد که به کاربر این امکان را میدهد تا پکیجها را به طور مستقیم از منبع با استفاده از Makefileها دریافت، کامپایل و نصب کند. معمولاً استفاده از pkg بسیار راحتتر است، اما گاهی ممکن است پکیجی، از قبل کامپایل نشده باشد، یا ممکن است نیاز به تغییر گزینههای زمان کامپایل داشته باشد.
نحوه بهروزرسانی فهرست پکیجها
بیشتر سرورهای مجازی، یک پایگاه داده از پکیجهای موجود در repositoryهای راهدور، در local نگهداری میکنند. بهتر است قبل از نصب یا ارتقا پکیجها، این پایگاه داده بهروزرسانی شود. به عنوان یک استثنا جزئی، dnf قبل از انجام برخی عملیاتها، برای بهروزرسانیها چک میشود، اما شما میتوانید هر زمان که خواستید از آن بپرسید که آیا بهروزرسانیها در دسترس هستند یا خیر.
- برای توزیعهای Debian / Ubuntu: دستور
sudo apt update
- برای توزیعهای Rocky / Fedora / RHEL: دستور
dnf check-update
- برای پکیجهای FreeBSD: دستور
sudo pkg update
- برای FreeBSD Ports: دستور
sudo portsnap fetch update
نحوه ارتقا پکیجهای نصبشده
اطمینان از این که تمام نرمافزارهای نصبشده روی یک سرور مجازی، بدون سیستم پکیجینگ، بهروز باقی بمانند، کار سختی خواهد بود. شما باید تغییرات upstream و هشدارهای امنیتی مربوط به صدها پکیج مختلف را پیگیری کنید. یک پکیج منیجر، شاید تمامی مشکلات شما را هنگام ارتقا نرمافزار حل نکند، اما این امکان را به شما میدهد که بیشتر اجزای سیستم را با چند دستور، بهروز و سالم نگهداشته باشید.
در FreeBSD، ارتقا portهای نصبشده میتواند تغییرات مخربی را ایجاد کند یا نیاز به پیکربندی دستی داشته باشد؛ بهتر است قبل از ارتقا با portmaster
، فایل /usr/ports/UPDATING
را مطالعه کنید.
- برای Debian / Ubuntu: اجرای دستور
sudo apt upgrade
- برای Rocky / Fedora / RHEL: اجرای دستور
sudo dnf upgrade
- برای پکیجهای FreeBSD: اجرای دستور
sudo pkg upgrade
نحوه پیداکردن یک پکیج
بیشتر توزیعهای لینوکس، یک رابط گرافیکی یا یک رابط مبتنی بر منو برای دیدن مجموعههای پکیجها ارائه میدهند. این رابطها، راه خوبی برای دیدن دستهبندیهای مختلف و کشف نرمافزارهای جدید هستند. اما، اغلب سریعترین و مؤثرترین روش برای یافتن یک پکیج، جستجو با ابزارهای خط فرمان است.
- برای Debian / Ubuntu: دستور
apt search search_string
- برای Rocky / Fedora / RHEL: دستور
dnf search search_string
- برای بستههای FreeBSD: دستور
pkg search search_string
توجه: در Rocky و Fedora یا RHEL، میتوانید عنوان و توضیحات پکیجها را با هم با استفاده از dnf search all
مشاهده کنید. اما FreeBSD، برای مشاهده توضیحات یک پکیج باید از دستور pkg search -D
استفاده کنید.
نحوه مشاهده اطلاعات در مورد یک بسته خاص
هنگام نصب یک پکیج، معمولاً مفید است که توضیحات دقیق آنها را بخوانید. این توضیحات معمولاً در کنار توضیحات قابل درک برای انسان، شامل متادیتا خاصی مانند شماره نسخه و لیست وابستگیهای پکیج نیز هستند.
- برای Debian / Ubuntu: دستور
apt show package
- برای Rocky / Fedora / RHEL: دستور
dnf info package
- برای پکیجهای FreeBSD: دستور
pkg info package
- برای FreeBSD Ports: دستور
cd /usr/ports/category/port && cat pkg-descr
نحوه نصب یک پکیج از repositoryها
پس از اینکه نام یک پکیج را یاد گرفتید، معمولاً میتوانید آن و وابستگیهایش را با یک دستور نصب کنید. به طور کلی، میتوانید چندین پکیج را به طور همزمان با پشت سر هم نوشتن آنها، نصب کنید:
- برای Debian / Ubuntu: دستور
sudo apt install package
- برای Rocky / Fedora / RHEL: دستور
sudo dnf install package
- برای بستههای FreeBSD: دستور
sudo pkg install package
نحوه نصب یک پکیج از فایلسیستم local
گاهی اوقات، حتی اگر نرمافزار به طور رسمی برای یک سیستمعامل خاص طراحی نشده باشد، یک توسعهدهنده ممکن است فایلهای مربوط به پکیج را برای دانلود ارائه دهد. معمولاً میتوانید این فایلها را با مرورگر وب خود یا از طریق curl
در خط فرمان دانلود کنید. پس از اینکه پکیج در سرورتان قرار گرفت، معمولاً میتوان آن را با یک دستور نصب کرد.
در سیستمهای مبتنی بر Debian، سیستم dpkg
، فایلهای مربوط به پکیجها را مدیریت میکند. اگر یک پکیج وابستگیهای برآورده نشده داشته باشد، gdebi
معمولاً میتواند آنها را از repositoryهای رسمی، دریافت کند.
در Rocky Linux و Fedora یا RHEL از dnf
برای نصب فایلهای مربوط به پکیجها استفاده میشود و dnf وابستگیهای مورد نیاز را نیز، مدیریت خواهد کرد.
برای Debian / Ubuntu: دستور sudo dpkg -i package.deb
برای Rocky / Fedora / RHEL: دستور sudo dnf install package.rpm
برای بستههای FreeBSD: دستور sudo pkg add package.txz
نحوه حذف یک یا چند پکیج نصبشده
از آنجایی که یک پکیج منیجر میداند که یک پکیج شامل چه فایلهایی است، معمولاً میتواند آنها را به شکل تمیزی، از سیستم حذف کند، اگر نرمافزار دیگری مورد نیاز نباشد.
برای Debian / Ubuntu: دستور sudo apt remove package
برای Rocky / Fedora / RHEL: دستور sudo dnf erase package
برای بستههای FreeBSD: دستور sudo pkg delete package
نحوه دریافت راهنما
علاوه بر مستندات موجود در وب برای هر پکیج، به خاطر داشته باشید که صفحات راهنمای یونیکس (که معمولاً به عنوان man pages شناخته میشوند) برای اکثر دستورات از طریق shell در دسترس هستند. برای خواندن یک صفحه راهنما، از دستور man
استفاده کنید:
man page
در man، میتوانید با کلیدهای جهتنما (arrow keys) حرکت کنید، با زدن /
در متن جستجو کنید، و با زدن q
خارج شوید.
- برای Debian / Ubuntu: دستور
man apt
- برای Rocky / Fedora / RHEL: دستور
man dnf
- برای پکیجهای FreeBSD: دستور
man pkg
- برای FreeBSD Ports: دستور
man ports
نتیجهگیری
این مقاله، یک نمای کلی از عملیاتهایی بود که میتوان در سرورهای مجازی لینوکس انجام داد. اما این راهنما، تنها بخشی سطحی از این موضوع پیچیده را پوشش میدهد. دنیای مربوط به سرورهای مجازی، خیلی گسترده و بزرگ است و دریای یادگیری آن، ساحل ندارد.
در صورتی که نیازمند یک سرور مجازی دائمی و پرقدرت هستید؛ میتوانید از سرور مجازی ایران لیارا، استفاده کنید. VPS لیارا، یکی از بهترین VPSهای ایران است که با ارائه سرور مجازی لینوکسی، به شما این امکان را میدهد که با کمترین پیچیدگی و با بیشترین سرعت، به توسعه برنامههای خود بپردازید و برنامههای خود را در بهینهترین حالت ممکن، به کاربران خود، ارائه دهید.