ضروریات مدیریت بسته اوبونتو و دبیان
مدیریت بسته ها یکی از ویژگی های اساسی یک سیستم لینوکس است. قالب بسته بندی و ابزارهای مدیریت بسته از توزیعی به توزیع دیگر متفاوت است، اما اکثر توزیع ها از یکی از دو مجموعه اصلی ابزار استفاده می کنند.
برای توزیعهای مبتنی بر لینوکس Red Hat Enterprise (مانند خود RHEL و راکی لینوکس)، قالب بستهبندی RPM و ابزارهای بستهبندی مانند rpm
و yum
رایج هستند. خانواده اصلی دیگر که توسط دبیان، اوبونتو و توزیعهای مرتبط استفاده میشود، از قالب بستهبندی .deb
و ابزارهایی مانند apt
و dpkg
استفاده میکنند.
در سالهای اخیر، مدیریت بستههای کمکی بیشتری طراحی شدهاند که بهطور موازی با ابزارهای core apt و dpkg اجرا میشوند: برای مثال، snap قابلیت حمل و سبکی بیشتری را فراهم میکند، و Homebrew که از macOS پورت شده است، ابزارهای خط فرمانی را ارائه میکند که میتوان با آنها نرم افزار ها را نصب کرد که توسط کاربران فردی برای جلوگیری از تضاد با بسته های سیستم استفاده می شود.
در این راهنما، با برخی از رایج ترین ابزارهای مدیریت بسته که مدیران سیستم در سیستم های دبیان و اوبونتو استفاده می کنند آشنا خواهید شد. این راهنما زمانی که شما نیاز دارید که بدانید چگونه یک وظیفه مدیریت بسته را در این سیستم ها انجام دهید می تواند به عنوان یک مرجع سریع استفاده شود.
پیش نیازها
- یک سرور اوبونتو 20.04 یا دبیان و یک کاربر غیر ریشه با امتیازات sudo. میتوانید در راهنمای راهاندازی سرور اولیه با Ubuntu 20.04 درباره نحوه راهاندازی کاربر با این امتیازات بیشتر بدانید.
مرحله 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