ضروریات مدیریت بسته اوبونتو و دبیان

مدیریت بسته ها یکی از ویژگی های اساسی یک سیستم لینوکس است. قالب بسته بندی و ابزارهای مدیریت بسته از توزیعی به توزیع دیگر متفاوت است، اما اکثر توزیع ها از یکی از دو مجموعه اصلی ابزار استفاده می کنند.

برای توزیع‌های مبتنی بر لینوکس Red Hat Enterprise (مانند خود RHEL و راکی لینوکس)، قالب بسته‌بندی RPM و ابزارهای بسته‌بندی مانند rpm و yum رایج هستند. خانواده اصلی دیگر که توسط دبیان، اوبونتو و توزیع‌های مرتبط استفاده می‌شود، از قالب بسته‌بندی .deb و ابزارهایی مانند apt و dpkg استفاده می‌کنند.

در سال‌های اخیر، مدیریت بسته‌های کمکی بیشتری طراحی شده‌اند که به‌طور موازی با ابزارهای core apt و dpkg اجرا می‌شوند: برای مثال، snap قابلیت حمل و سبکی بیشتری را فراهم می‌کند، و Homebrew که از macOS پورت شده است، ابزارهای خط فرمانی را ارائه می‌کند که می‌توان با آنها نرم افزار ها را نصب کرد که توسط کاربران فردی برای جلوگیری از تضاد با بسته های سیستم استفاده می شود.

در این راهنما، با برخی از رایج ترین ابزارهای مدیریت بسته که مدیران سیستم در سیستم های دبیان و اوبونتو استفاده می کنند آشنا خواهید شد. این راهنما زمانی که شما نیاز دارید که بدانید چگونه یک وظیفه مدیریت بسته را در این سیستم ها انجام دهید می تواند به عنوان یک مرجع سریع استفاده شود.

پیش نیازها

مرحله 1 - مروری بر ابزارهای مدیریت بسته دبیان

اکوسیستم دبیان/اوبونتو از چندین ابزار مدیریت بسته مختلف برای مدیریت نرم افزار روی سیستم استفاده می کند.

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

apt

دستور apt احتمالاً بیشترین استفاده از مجموعه ابزارهای بسته بندی apt است. هدف اصلی آن برقراری ارتباط با مخازن راه دور است که توسط تیم بسته بندی توزیع نگهداری می شود و برای انجام اقدامات بر روی بسته های موجود است.

مجموعه apt به طور کلی با کشیدن اطلاعات از مخازن راه دور به حافظه پنهان نگهداری شده در سیستم محلی عمل می کند. همچنین از دستور apt برای تازه کردن کش محلی استفاده می شود و برای تغییر وضعیت بسته به معنی نصب یا حذف یک بسته از سیستم نیز استفاده می شود.

به طور کلی، apt برای به روز رسانی حافظه پنهان محلی و ایجاد تغییرات در سیستم لایو استفاده می شود.

 

توجه: در نسخه های قبلی اوبونتو، دستور هسته apt به عنوان apt-get شناخته می شد. در حال حاضر ساده شده است، اما همچنان می‌توانید با استفاده از apt-get از روی عادت یا برای سازگاری با نسخه های قبلی استفاده کنید.

apt-cache

یکی دیگر از اعضای مهم مجموعه apt، apt-cache است. این ابزار از حافظه پنهان محلی برای پرس و جو کردن درباره اطلاعات در مورد بسته های موجود و ویژگی های آنها استفاده می کند.

به عنوان مثال، هر زمان که می خواهید یک بسته خاص یا ابزاری را جستجو کنید که عملکرد خاصی را انجام دهد، apt-cache جای خوبی برای شروع است. همچنین می تواند برای یوزر آموزنده باشد که چه نسخه, بسته دقیقی توسط یک رویه مورد هدف قرار می گیرد. هنچنین اطلاعات وابستگی و نوع معکوس آن حوزه دیگری است که apt-cache در آن مفید است.

dpkg

در حالی که ابزارهای قبلی بر مدیریت بسته های نگهداری شده در مخازن متمرکز بودند، دستور dpkg می تواند برای کار بر روی بسته های .deb منفرد نیز استفاده شود. ابزار dpkg در واقع مسئول اکثر کارهای پشت صحنه دستورات بالا است. apt در حالی که dpkg با خود بسته ها تعامل دارد، خانه داری اضافی را فراهم می کند.

برخلاف دستورات apt، dpkg توانایی حل خودکار وابستگی ها را ندارد. ویژگی اصلی آن امکان کار مستقیم با بسته‌های .deb و توانایی آن برای تشریح یک بسته و کسب اطلاعات بیشتر در مورد ساختار آن است. اگرچه می تواند اطلاعاتی در مورد بسته های نصب شده روی سیستم جمع آوری کند، اما نباید از آن به عنوان مدیر بسته اولیه استفاده کنید. در مرحله بعد، با بهترین شیوه های ارتقاء بسته آشنا خواهید شد.

مرحله 2 - به روز رسانی کش بسته و سیستم

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

به روز رسانی کش بسته محلی

مخازن راه دوری که ابزارهای بسته بندی شما برای اطلاعات بسته به آنها متکی هستند، همیشه به روز می شوند. با این حال، اکثر ابزارهای مدیریت بسته لینوکس، به دلایل تاریخی، برای کار مستقیم با حافظه پنهان محلی این اطلاعات طراحی شده اند. آن حافظه پنهان باید به طور دوره ای به روز شود.

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

برای به روز رسانی کش محلی، از دستور apt با دستور فرعی update استفاده کنید:

 

sudo apt update

 

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

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

دستور apt بین دو روش مختلف در بروز رسانی تمایز قائل می شود. اولین روش به‌روزرسانی (که در این بخش پوشش داده شده است) می‌تواند برای ارتقاء هر مؤلفه‌ای که نیازی به حذف مؤلفه ندارد استفاده شود. برای یادگیری نحوه به‌روزرسانی و اجازه دادن به apt برای حذف و تعویض اجزا در صورت لزوم، به بخش زیر مراجعه کنید.

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

 

sudo apt upgrade

 

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

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

 

sudo apt full-upgrade

 

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

مرحله 3 – دانلود و نصب بسته ها

جستجو برای بسته ها

اولین گام هنگام دانلود و نصب بسته ها اغلب جستجو در مخازن توزیع خود برای بسته هایی است که به دنبال آن هستید.

جستجوی بسته ها یکی از عملیاتی است که کش بسته را برای اطلاعات هدف قرار می دهد. برای انجام این کار، از search apt-cache استفاده کنید. به خاطر داشته باشید که قبل از جستجو برای بسته‌ها، باید با استفاده از update sudo apt، حافظه پنهان محلی شما بروز شده باشد:

 

apt-cache search package

 

از آنجایی که این روش فقط برای اطلاعات جستجو می کند، به امتیازات sudo نیاز ندارد. هر جستجویی که انجام شود به نام بسته ها و همچنین توضیحات کامل بسته ها نگاه می کند.

به عنوان مثال، اگر htop را جستجو کنید، نتایجی مانند زیر مشاهده خواهید کرد:

 

apt-cache search htop

 

Output
aha - ANSI color to HTML converter
htop - interactive processes viewer
libauthen-oath-perl - Perl module for OATH One Time Passwords

 

همانطور که می بینید، شما یک بسته به نام htop دارید، اما می توانید دو برنامه دیگر را نیز مشاهده کنید که هر کدام در قسمت توضیحات کامل بسته، htop را ذکر شده اند (توضیحات کنار خروجی فقط یک خلاصه کوتاه است).

یک بسته از Repos نصب کنید

برای نصب یک بسته از مخازن، و همچنین تمام وابستگی های لازم، می توانید از دستور apt با آرگومان install استفاده کنید.

آرگومان های این دستور باید نام بسته یا نام هایی باشد که در مخزن برچسب گذاری شده اند:

 

sudo apt install package

 

می توانید چندین بسته را به طور همزمان نصب کنید که با فاصله از هم جدا شده اند:

 

sudo apt install package1 package2

 

اگر بسته درخواستی شما به وابستگی‌های اضافی نیاز دارد، این بسته‌ها در خروجی استاندارد چاپ می‌شوند و از شما خواسته می‌شود که این روش را تأیید کنید. دستور مورد نظر چیزی شبیه به این خواهد بود:

 

sudo apt install apache2

 

Output
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  apache2-data
Suggested packages:
  apache2-doc apache2-suexec-pristine apache2-suexec-custom
  apache2-utils
The following NEW packages will be installed:
  apache2 apache2-data
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 236 kB of archives.
After this operation, 1,163 kB of additional disk space will be used.
Do you want to continue [Y/n]?

 

همانطور که می بینید، حتی اگر هدف نصب ما بسته apache2 بود، بسته apache2-data به عنوان یک وابستگی مورد نیاز است. در این حالت می توانید با فشردن Enter یا “Y” ادامه دهید یا با تایپ “n” فرایند را لغو کنید.

یک نسخه خاص از بسته را از طریق Repos نصب کنید

اگر نیاز به نصب نسخه خاصی از یک بسته دارید، می توانید نسخه ای را که می خواهید با = هدف قرار دهید، مانند دستور زیر:

 

sudo apt install package=version

 

نسخه در این مورد باید با یکی از شماره های نسخه بسته موجود در مخزن مطابقت داشته باشد. این به معنای استفاده از طرح نسخه‌سازی به کار گرفته شده توسط توزیع شما است. با استفاده از apt-cache policy package می توانید نسخه های موجود را پیدا کنید :

 

apt-cache policy nginx

 

Output
nginx:
  Installed: (none)
  Candidate: 1.18.0-0ubuntu1.2
  Version table:
     1.18.0-0ubuntu1.2 500
        500 http://mirrors.digitalocean.com/ubuntu focal-updates/main amd64 Packages
        500 http://security.ubuntu.com/ubuntu focal-security/main amd64 Packages
     1.17.10-0ubuntu1 500
        500 http://mirrors.digitalocean.com/ubuntu focal/main amd64 Packages

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

بسیاری از بسته ها شامل اسکریپت های پیکربندی پس از نصب هستند که پس از اتمام نصب به طور خودکار اجرا می شوند. اینها اغلب شامل درخواست هایی برای سرپرست برای انتخاب پیکربندی هستند.

اگر نیاز دارید که این مراحل (و سایر مراحل) پیکربندی را در زمان دیگری انجام دهید، می توانید از دستور dpkg-reconfigure استفاده کنید. این دستور به بسته ارسال شده به آن نگاه می کند و هر دستور پس از پیکربندی موجود در مشخصات بسته را دوباره اجرا می کند:

 

sudo dpkg-reconfigure package

 

این به شما امکان می دهد که به همان فرمان هایی (و اغلب بیشتر) دسترسی داشته باشید که هنگام نصب اجرا کردید.

اجرای خشک عملیات بسته را انجام دهید

در بسیاری از مواقع، شما می خواهید قبل از انجام یک دستور، عوارض جانبی یک رویه را ببینید بدون اینکه واقعاً به اجرای دستور متعهد شوید. apt به شما اجازه می دهد تا پرچم -s را برای "شبیه سازی" یک رویه اضافه کنید.

به عنوان مثال، برای اینکه ببینید در صورت انتخاب یک بسته چه کاری انجام می شود، می توانید تایپ کنید:

 

apt install -s package

 

این به شما امکان می دهد تمام وابستگی ها و تغییرات سیستم خود را که در صورت حذف پرچم -s رخ می دهد، مشاهده کنید. یکی از مزایای این کار این است که می توانید بدون استفاده از sudo، نتایج فرآیندی را مشاهده کنید که معمولاً به امتیازات ریشه نیاز دارد.

به عنوان مثال، اگر می خواهید ارزیابی کنید که چه چیزی با بسته apache2 نصب می شود، می توانید تایپ کنید:

 

apt install -s apache2

 

Output
NOTE: This is only a simulation!
      apt needs root privileges for real execution.
      Keep also in mind that locking is deactivated,
      so don't depend on the relevance to the real current situation!
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  apache2-data
Suggested packages:
  apache2-doc apache2-suexec-pristine apache2-suexec-custom
  apache2-utils
The following NEW packages will be installed:
  apache2 apache2-data
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Inst apache2-data (2.4.6-2ubuntu2.2 Ubuntu:13.10/saucy-updates [all])
Inst apache2 (2.4.6-2ubuntu2.2 Ubuntu:13.10/saucy-updates [amd64])
Conf apache2-data (2.4.6-2ubuntu2.2 Ubuntu:13.10/saucy-updates [all])
Conf apache2 (2.4.6-2ubuntu2.2 Ubuntu:13.10/saucy-updates [amd64])

 

شما تمام اطلاعات مربوط به بسته ها و نسخه های نصب شده را بدون نیاز به تکمیل فرآیند واقعی دریافت می کنید.

این همچنین با رویه های دیگر مانند انجام ارتقاء سیستم کار می کند:

 

apt -s dist-upgrade

 

به طور پیش فرض، apt از کاربر برای تأیید بسیاری از فرآیندها می خواهد. این شامل نصب‌هایی می‌شود که به وابستگی‌های اضافی و ارتقاء بسته نیاز دارند.

برای دور زدن این ارتقاها و پذیرش پیش فرض هر یک از این دستورات، می توانید هنگام انجام این عملیات پرچم -y را پاس کنید:

 

sudo apt install -y package

 

این دستور باغث میشود تا بسته و هرگونه وابستگی را بدون درخواست بیشتر از کاربر نصب کند. این می تواند برای رویه های ارتقا نیز استفاده شود:

 

sudo apt dist-upgrade -y

رفع وابستگی های شکسته و بسته ها

مواقعی وجود دارد که نصب ممکن است به دلیل وابستگی ها یا مشکلات دیگر با موفقیت به پایان نرسد. یکی از سناریوهای رایج که ممکن است این اتفاق بیفتد هنگام نصب بسته .deb با dpkg است که وابستگی ها را برطرف نمی کند.

دستور apt می تواند با ارسال فرمان -f این وضعیت را مرتب کند.

 

sudo apt install -f

 

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

بسته را از Repos دانلود کنید

موارد اصلی وجود دارد که ممکن است دانلود بسته از مخازن بدون نصب واقعی آن مفید باشد. می توانید این کار را با اجرای apt با آرگومان دانلود انجام دهید.

از آنجا که این فقط یک فایل را دانلود می کند و روی سیستم واقعی تأثیر نمی گذارد، هیچ امتیاز sudo مورد نیاز نیست:

 

apt download package

 

با این کار بسته(های) مشخص شده در دایرکتوری فعلی دانلود می شود.

یک بسته .deb نصب کنید

اگرچه اکثر توزیع‌ها نصب نرم‌افزار را از مخازن نگهداری شده خود توصیه می‌کنند، برخی از فروشندگان فایل‌های .deb خام را ارائه می‌کنند که می‌توانید آن‌ها را روی سیستم خود نصب کنید.

برای انجام این کار باید از dpkg استفاده کنید. dpkg عمدتاً برای کار با بسته های فردی استفاده می شود. تلاشی برای نصب از مخزن انجام نمی‌دهد و در عوض به دنبال بسته‌های .deb در فهرست فعلی یا مسیر ارائه شده می‌گردد:

 

sudo dpkg --install debfile.deb

 

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

 

sudo apt install -f

 

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

مرحله 4 - حذف بسته ها و حذف فایل ها

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

یک بسته را حذف نصب کنید

برای حذف یک بسته نصب شده، از apt remove استفاده می شود. با این کار اکثر فایل هایی که بسته روی سیستم نصب شده است، به جز یک استثنا قابل توجه حذف می شود.

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

برای تکمیل این عملیات، باید نام بسته ای را که می خواهید حذف کنید، وارد کنید:

 

sudo apt remove package

 

بسته به استثنای فایل های پیکربندی شما حذف نصب می شود.

یک بسته و همه فایل‌های پیکربندی مرتبط را حذف نصب کنید

اگر می‌خواهید یک بسته و همه فایل‌های مرتبط، از جمله فایل‌های پیکربندی را از سیستم خود حذف کنید، می‌توانید از apt purge استفاده کنید.

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

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

 

sudo apt purge package

 

اکنون، اگر زمانی نیاز به نصب مجدد آن بسته داشته باشید، از پیکربندی پیش فرض استفاده می شود.

دیگر نیازی نیست هر گونه وابستگی خودکار را حذف کنید
هنگام حذف بسته ها از سیستم خود با apt remove یا apt purge، هدف بسته حذف خواهد شد. با این حال، هر گونه وابستگی که به طور خودکار به منظور برآورده کردن الزامات نصب نصب شده است، باقی خواهد ماند.

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

 

sudo apt autoremove

 

اگر می‌خواهید همه فایل‌های پیکربندی مرتبط را از وابستگی‌هایی که حذف می‌شوند حذف کنید، میتوایند گزینه --purge را به دستور autoremove اضافه کنید. این کار فایل های پیکربندی را نیز پاک می کند، درست مانند دستور purge برای حذف هدفمندتر:

 

sudo apt --purge autoremove

پاک کردن فایل های بسته منسوخ شده

با اضافه شدن و حذف بسته‌ها از مخازن توسط نگهبانان بسته توزیع، برخی از بسته‌ها منسوخ می‌شوند.

ابزار apt با استفاده از دستور autoclean می‌تواند فایل‌های بسته موجود در سیستم محلی را که با بسته‌هایی که دیگر در دسترس نیستند را از مخازن حذف کند.

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

 

sudo apt autoclean

 

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

مرحله 5 - دریافت اطلاعات در مورد بسته ها

هر بسته حاوی مقدار زیادی ابرداده است که با استفاده از ابزارهای مدیریت بسته قابل دسترسی است. در این بخش چند راه متداول برای دریافت اطلاعات در مورد بسته های موجود و نصب شده نشان داده می شود.

برای نمایش اطلاعات دقیق در مورد یک بسته در مخازن توزیع خود، می توانید از  apt-cache show استفاده کنید. هدف این دستور نمایش یک نام بسته در مخزن است:

 

apt-cache show nginx

 

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

 

Output
Package: nginx
Architecture: all
Version: 1.18.0-0ubuntu1.2
Priority: optional
Section: web
Origin: Ubuntu
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Debian Nginx Maintainers <pkg-nginx-maintainers@lists.alioth.debian.org>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 44
Depends: nginx-core (<< 1.18.0-0ubuntu1.2.1~) | nginx-full (<< 1.18.0-0ubuntu1.2.1~) | nginx-light (<< 1.18.0-0ubuntu1.2.1~) | nginx-extras (<< 1.18.0-0ubuntu1.2.1~), nginx-core (>= 1.18.0-0ubuntu1.2) | nginx-full (>= 1.18.0-0ubuntu1.2) | nginx-light (>= 1.18.0-0ubuntu1.2) | nginx-extras (>= 1.18.0-0ubuntu1.2)
Filename: pool/main/n/nginx/nginx_1.18.0-0ubuntu1.2_all.deb
…

 

برای نمایش اطلاعات اضافی در مورد هر یک از نامزدها، از جمله فهرست کامل وابستگی‌های معکوس (لیستی از بسته‌هایی که به بسته درخواست شده بستگی دارد)، به جای آن از دستور showpkg استفاده کنید. این شامل اطلاعاتی در مورد رابطه این بسته با بسته های دیگر می شود:

 

apt-cache showpkg package

نمایش اطلاعات مربوط به یک بسته .deb

برای نمایش جزئیات یک فایل .deb، می توانید از پرچم --info با دستور dpkg استفاده کنید. هدف این دستور باید در مسیر فایل .deb باشد:

 

dpkg --info debfile.deb

 

این به شما برخی از متادیتا را در مورد بسته مورد نظر نشان می دهد. این شامل نام و نسخه بسته، معماری که برای آن ساخته شده است، اندازه و وابستگی های مورد نیاز، توضیحات و تضادها است.

برای فهرست بندی خاص وابستگی ها (بسته هایی که این بسته به آنها متکی است) و وابستگی های معکوس (بسته هایی که به این بسته متکی هستند)، می توانید از ابزار apt-cache استفاده کنید.

برای اطلاعات وابستگی معمولی، می توانید از دستور فرعی depends استفاده کنید:

 

apt-cache depends nginx

 

Output
nginx
 |Depends: nginx-core
 |Depends: nginx-full
 |Depends: nginx-light
  Depends: nginx-extras
 |Depends: nginx-core
 |Depends: nginx-full
 |Depends: nginx-light
  Depends: nginx-extras

 

این اطلاعات مربوط به هر بسته ای را نشان می دهد که به عنوان وابستگی سخت، پیشنهاد، توصیه یا تضاد فهرست شده است.

اگر می‌خواهید بدانید کدام بسته‌ها به یک بسته خاص بستگی دارند، می‌توانید آن بسته را به apt-cache rdepends منتقل کنید:

 

apt-cache rdepends package

نمایش نسخه های بسته نصب شده و موجود

اغلب، چندین نسخه از یک بسته در مخازن، با یک بسته پیش فرض وجود دارد. برای مشاهده نسخه های موجود یک بسته می توانید از apt-cache policy استفاده کنید:

 

apt-cache policy package

 

این به شما نشان می دهد که کدام نسخه نصب شده است (در صورت وجود)، بسته ای که به طور پیش فرض نصب می شود اگر نسخه ای را با دستور نصب مشخص نکنید، و جدولی از نسخه های بسته، کامل با وزنی که اولویت هر نسخه را نشان می دهد.

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

نمایش بسته های نصب شده با dpkg -l

برای نمایش بسته های نصب شده بر روی سیستم خود، چند گزینه مجزا دارید که از نظر فرمت و وضوح خروجی متفاوت است.

روش اول شامل استفاده از دستور dpkg یا dpkg-query با پرچم -l است. خروجی هر دوی این دستورات یکسان است. بدون هیچ آرگومان، لیستی از هر بسته نصب شده یا نیمه نصب شده روی سیستم را ارائه می دهد. خروجی به شکل زیر خواهد بود:

 

dpkg -l

 

Output
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name                                        Version                                 Architecture Description
+++-===========================================-=======================================-============-=====================================================================================================================
ii  account-plugin-generic-oauth                0.10bzr13.03.26-0ubuntu1.1              amd64        GNOME Control Center account plugin for single signon - generic OAuth
ii  accountsservice                             0.6.34-0ubuntu6                         amd64        query and manipulate user account information
ii  acl                                         2.2.52-1                                amd64        Access control list utilities
ii  acpi-support                                0.142                                   amd64        scripts for handling many ACPI events
ii  acpid                                       1:2.0.18-1ubuntu2                       amd64        Advanced Configuration and Power Interface event daemon
. . .

 

خروجی برای هر بسته در سیستم ادامه می یابد. در بالای خروجی، می توانید معانی سه کاراکتر اول هر خط را مشاهده کنید. کاراکتر اول وضعیت مطلوب بسته را نشان می دهد. می تواند به شکل زیر باشد:

  • u: ناشناس
  • i: نصب شد
  • r: حذف شد
  • p: پاکسازی شد
  • h: نسخه برگزار شد

کاراکتر دوم نشان دهنده وضعیت واقعی بسته بندی است که سیستم بسته بندی شناخته شده است. که می تواند به شکل زیر باشد:

  • n: نصب نشده است
  • i: نصب شده است
  • c: فایل های پیکربندی موجود هستند، اما برنامه حذف شده است.
  • u: بسته بندی نشده. فایل ها باز شده اند، اما هنوز پیکربندی نشده اند.
  • f: بسته نیمه نصب شده است، به این معنی که در قسمتی از نصب، خرابی وجود داشت که عملیات را متوقف کرد.
  • w: بسته در انتظار یک ماشه از یک بسته جداگانه است
  • p: بسته توسط بسته دیگری فعال شده است.

کاراکتر سوم که یک فضای خالی برای اکثر بسته ها خواهد بود، تنها یک گزینه بالقوه دیگر دارد:

  • r: این نشان می دهد که نیاز به نصب مجدد است. این معمولاً به این معنی است که بسته شکسته و در حالتی غیر کاربردی است.

بقیه ستون ها شامل نام بسته، نسخه، معماری و توضیحات هستند.

نمایش وضعیت های نصب بسته های فیلتر شده

اگر یک الگوی جستجو را بعد از الگوی -l اضافه کنید، dpkg همه بسته‌های (چه نصب شده یا نه) حاوی آن الگو را فهرست می‌کند. به عنوان مثال، می توانید کتابخانه های پردازش YAML را در اینجا جستجو کنید:

 

dpkg -l libyaml*

 

Output
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name            Version      Architecture Description
+++-===============-============-============-===================================
ii  libyaml-0-2:amd 0.1.4-2ubunt amd64        Fast YAML 1.1 parser and emitter li
ii  libyaml-dev:amd 0.1.4-2ubunt amd64        Fast YAML 1.1 parser and emitter li
un  libyaml-perl    <none>                    (no description available)
un  libyaml-syck-pe <none>                    (no description available)
ii  libyaml-tiny-pe 1.51-2       all          Perl module for reading and writing

 

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

یک راه جایگزین برای رندر کردن بسته هایی که روی سیستم شما نصب شده اند، dpkg –get-selections است.

این لیستی از تمام بسته های نصب یا حذف شده اما پاک نشده را ارائه می دهد:

 

dpkg --get-selections

 

برای تمایز بین این دو حالت، می توانید خروجی را از dpkg به awk پایپ کنید تا بر اساس حالت فیلتر کنید. برای مشاهده فقط بسته های نصب شده، تایپ کنید:

 

dpkg --get-selections | awk '$2 ~ /^install/'

 

برای دریافت لیستی از بسته های حذف شده که فایل های پیکربندی آنها پاک نشده است، می توانید در عوض دستور زیر را تایپ کنید:

 

dpkg --get-selections | awk '$2 !~ /^install/'

 

همچنین ممکن است بخواهید درباره خروجی فرمان پایپینگ از طریق awk اطلاعات بیشتری کسب کنید.

جستجوی بسته های نصب شده

برای جستجوی پایه بسته نصب شده خود برای یک بسته خاص، می توانید یک رشته فیلتر بسته را بعد از گزینه --get-selects اضافه کنید. این از تطبیق با حروف عام پشتیبانی می کند. مجدداً، هر بسته ای که نصب شده یا هنوز فایل های پیکربندی روی سیستم دارند را نشان می دهد:

 

dpkg --get-selections libz*

 

می توانید یک بار دیگر با استفاده از عبارات awk از بخش آخر فیلتر کنید.

لیست فایل های نصب شده توسط یک بسته

برای اینکه بفهمید یک بسته مسئولیت کدام فایل ها را دارد، می توانید از پرچم -L با دستور dpkg استفاده کنید:

 

dpkg -L package

 

با این کار مسیر مطلق هر فایلی که توسط بسته کنترل می شود چاپ می شود. این شامل هیچ فایل پیکربندی که توسط فرآیندهای درون بسته تولید می شود، نمی شود.

برای اینکه متوجه شوید کدام بسته مسئول یک فایل خاص در سیستم فایل شما است، می توانید مسیر مطلق را با پرچم -S به دستور dpkg منتقل کنید.

با این کار بسته ای که فایل مورد نظر را نصب کرده است چاپ می کند:

 

dpkg -S /path/to/file

 

به خاطر داشته باشید که هر فایلی که توسط اسکریپت های نصبی به جای خود منتقل می شود را نمی توان با این تکنیک به بسته متصل کرد.

پیدا کردن بسته ای که یک فایل را بدون نصب آن ارائه می دهد

با استفاده از dpkg، می توانید با استفاده از گزینه -S متوجه شوید که کدام بسته دارای یک فایل است. با این حال، مواقعی وجود دارد که ممکن است لازم باشد بدانید کدام بسته یک فایل یا دستور را ارائه می‌دهد، حتی اگر بسته مرتبط را نصب نکرده باشید.

برای انجام این کار، باید ابزاری به نام apt-file را نصب کنید. این نرم افزار پایگاه داده اطلاعات خود را حفظ می کند، که شامل مسیر نصب هر فایلی است که توسط یک بسته در پایگاه داده کنترل می شود.

بسته apt-file را به روزش معمول نصب کنید:

 

sudo apt update
sudo apt install apt-file

 

اکنون پایگاه داده ابزار را به روز کنید و با تایپ کردن فایل زیر را جستجو کنید:

 

sudo apt-file update
sudo apt-file search /path/to/file

 

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

مرحله 6 - انتقال لیست بسته ها بین سیستم ها

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

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

می توانید با هدایت کردن خروجی dpkg --get-selects به یک فایل متنی، لیست بسته های نصب شده را به یک فایل صادر کنید:

 

dpkg --get-selections > ~/packagelist.txt

 

همچنین ممکن است بخواهید درباره تغییر مسیر ورودی و خروجی اطلاعات بیشتری کسب کنید.

سپس این لیست را می توان در دستگاه دوم کپی کرد و وارد کرد.

همچنین ممکن است لازم باشد از لیست منابع و لیست کلید مورد اعتماد خود نسخه پشتیبان تهیه کنید. می توانید با ایجاد یک فهرست جدید و کپی کردن آنها از پیکربندی سیستم در /etc/apt/ از منابع خود نسخه پشتیبان تهیه کنید:

 

mkdir ~/sources
cp -R /etc/apt/sources.list* ~/sources

 

هر کلیدی که برای نصب بسته‌ها از مخازن شخص ثالث اضافه کرده‌اید را می‌توان با استفاده از apt-key exportall صادر کنید:

 

apt-key exportall > ~/trusted_keys.txt

 

اکنون می توانید فایل packagelist.txt، دایرکتوری sources و فایل trusted_keys.txt را برای وارد کردن به رایانه دیگری منتقل کنید.

وارد کردن لیست بسته های

اگر همانطور که در بالا نشان داده شد یک لیست بسته با استفاده از dpkg --get-selections ایجاد کرده اید، می توانید بسته ها را در رایانه دیگری با استفاده از دستور dpkg نیز وارد کنید.

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

 

sudo apt-key add ~/trusted_keys.txt
sudo cp -R ~sources/* /etc/apt/

 

در مرحله بعد، وضعیت تمام بسته های غیر ضروری را از رایانه جدید پاک کنید. این  کار اطمینان حاصل می کند که تغییرات را در یک صفحه تمیز اعمال می کنید. این کار باید با حساب ریشه یا امتیازات sudo انجام شود:

 

sudo dpkg --clear-selections

 

این کار همه بسته‌های غیر ضروری برای نصب را علامت‌گذاری می‌کند. شما باید لیست بسته های محلی را به روز کنید تا نصب شما برای همه نرم افزارهایی که قصد نصب آن را دارید در سوابق وجود داشته باشد. مراحل نصب و ارتقاء واقعی توسط ابزاری به نام dselect انجام می شود.

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

 

sudo apt update
sudo apt install dselect
sudo dselect update

 

در مرحله بعد، می توانید لیست بسته را در بالای لیست فعلی اعمال کنید تا پیکربندی کنید کدام بسته ها باید نگه داشته یا دانلود شوند:

 

sudo dpkg --set-selections < packagelist.txt

 

این حالت های بسته را درست تنظیم می کند. برای اعمال تغییرات، apt dselect-upgrade را اجرا کنید:

 

sudo apt dselect-upgrade

 

با این کار هر بسته لازم دانلود و نصب می شود. همچنین بسته‌های علامت‌گذاری شده برای لغو انتخاب را حذف می‌کند. در پایان، لیست بسته شما باید با رایانه قبلی مطابقت داشته باشد، اگرچه فایل های پیکربندی همچنان باید کپی یا اصلاح شوند. ممکن است بخواهید از ابزاری مانند etckeeper برای انتقال فایل های پیکربندی از دایرکتوری /etc استفاده کنید.

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

مرحله 7 - افزودن مخازن و PPA

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

جایگزینی برای مخازن سنتی در اوبونتو PPA یا آرشیو بسته های شخصی است. سایر مدل های لینوکس معمولاً از مفاهیم متفاوت اما مشابه مخازن شخص ثالث استفاده می کنند. معمولاً PPA ها دامنه کمتری نسبت به مخازن دارند و شامل مجموعه های متمرکزی از برنامه های کاربردی هستند که توسط مالک PPA نگهداری می شوند.

افزودن PPA به سیستم به شما این امکان را می دهد که بسته های موجود در آنها را با ابزارهای مدیریت بسته معمول خود مدیریت کنید. این کار می تواند برای ارائه بسته های به روزتر که در مخازن توزیع گنجانده نشده اند استفاده شود. مراقب باشید که فقط PPA هایی را اضافه کنید که به آنها اعتماد دارید، زیرا به یک نگهدارنده غیر استاندارد اجازه می دهید تا بسته هایی را برای سیستم شما بسازد.

برای افزودن PPA می توانید از دستور add-apt-repository استفاده کنید. هدف باید شامل برچسب ppa:، به دنبال آن نام مالک PPA در Launchpad، یک اسلش و نام PPA باشد:

 

sudo add-apt-repository ppa:owner_name/ppa_name

 

ممکن است از شما خواسته شود که کلید بسته بندی را بپذیرید. پس از آن، PPA به سیستم شما اضافه می شود و به شما امکان می دهد بسته ها را با دستورات apt معمولی نصب کنید. قبل از جستجو یا نصب بسته ها، مطمئن شوید که حافظه پنهان محلی خود را با اطلاعات مربوط به PPA جدید خود به روز کنید:

 

sudo apt update

 

همچنین می توانید پیکربندی مخزن خود را مستقیماً ویرایش کنید. می توانید فایل /etc/apt/sources.list را ویرایش کنید یا یک لیست جدید را در فهرست /etc/apt/sources.list.d قرار دهید. اگر به این مسیر دوم بروید، نام فایلی که ایجاد می کنید باید به .list ختم شود:

 

sudo nano /etc/apt/sources.list.d/new_repo.list

 

در داخل فایل می‌توانید با استفاده از فرمت زیر، مکان مخزن جدید را اضافه کنید:

 

/etc/apt/sources.list.d/new_repo.list

deb_or_deb-src url_of_repo release_code_name_or_suite component_names

 

بخش های مختلف مشخصات مخزن عبارتند از:

  • deb یا deb-src: نوع مخزن را مشخص می کند. مخازن معمولی با deb مشخص می شوند، در حالی که مخازن منبع با deb-src شروع می شوند.
  • url:;کد URL اصلی برای مخزن. این باید مکانی باشد که می توان مخزن را در آن پیدا کرد.
  • نام کد انتشار یا مجموعه: این معمولاً نام رمز انتشار توزیع شما است، اما می تواند هر نامی باشد که برای شناسایی مجموعه خاصی از بسته های ایجاد شده برای نسخه توزیع شما استفاده می شود.
  • نام مؤلفه ها: برچسب هایی برای انتخاب بسته هایی که می خواهید در دسترس داشته باشید. این اغلب تمایزی است که توسط نگهدارنده مخزن برای بیان چیزی در مورد قابلیت اطمینان یا محدودیت های مجوز نرم افزار موجود در آن ارائه می شود.

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

نتیجه

مدیریت بسته شاید مهمترین جنبه مدیریت یک سیستم لینوکس باشد. بسیاری از عملیات مدیریت بسته های دیگر وجود دارد که می توانید انجام دهید، اما این آموزش پایه ای از اصول اوبونتو را ارائه کرده است که بسیاری از آنها با تغییرات جزئی قابل تعمیم به سایر توزیع ها هستند.

 

منبع DigitalOcean 

 

۶۹۶
۱۴۰۲/۳/۹