بسیاری از بخشهای مرکزی یک توزیع لینوکسی و بسیاری از اپلیکیشن های آن از طریق سیستمی تحت عنوان Package Management System نصب میشوند. هر پکیجی حاوی فایلها و تنظیماتی است که آن را در توزیع مد نظر قابل استفاده میسازد. توجه داشته باشیم که در سیستم عامل گنو/لینوکس پکیج ها میتوانند به یکدیگر وابسته باشند. برای مثال، برای نصب پکیجی تحت وب که با زبان برنامه نویسی PHP نوشته شده باشد، ما به پکیج PHP نیازمندیم.
طیف گسترده یی از سیستمهای مدیریت پکیج در لینوکس وجود دارند که برخی از آنها بر پایه ی خانواده ی توزیعهای Debian هستند و برخی دیگر که از RPM استفاده می کنند. این دو سیستم هرگز با هم سازگاری ندارند اما از دید کلی، شباهتهایی با یکدیگر دارند:
همانطور که در تصویر فوق ملاحظه میشود، هر دو گروه از سیستمهای مدیریت پکیج از ابزارهایی در دو سطح مختلف تشکیل شدهاند: ابزاری سطح پایین (همچون dpkg یا rpm) که مسئول کارهایی از قبیل اجرای اسکریپت ها، نصب کردن نرمافزار به صورت صحیح و غیره است و ابزاری سطح بالا (همچون apt-get و یا yum) که ابزاری برای کار کردن با چندین پکیج مختلف است و مسئولیت دانلود پکیج ها از Vendor (وندور یا توسعهدهنده ی نرم افزار) و همچنین مد نظر قرار دادن وابستگیهای پکیج است.
در بسیاری از مواقع بهخصوص برای کاربران مبتدی، صرفاً نیاز به ابزارهای سطح بالا داریم که خود این ابزارهای سطح بالا مسئول فراخوانی ابزار سطح پایین مربوطه در صورت نیاز است.
پیش از این هم گفتیم که یکی از وظایف ابزار مدیریت پکیج سطح بالا، مدیریت Dependency (دیپندنسی یا وابستگی) است؛ به عبارت دیگر، در صورتی که تمایل به نصب پکیج یا نرم افزاری داشته باشیم که برای اجرای صحیح نیاز به نصب تعدادی نرمافزار دیگر -وابستگی های دیگر- داشته باشد، این ابزار اقدام به مدیریت نصب وابستگیها خواهد کرد:
Advanced Packaging Tool که به اختصار apt گفته می شود، سیستم مدیریت پکیج سطح بالای خانواده ی توزیعهای دبیانی است. این سیستم به منزله ی زیرساختی برای اپلیکیشن های مدیریت نرمافزار گرافیکی همچون Ubuntu Software است اما اساساً برنامه یی است که باید از طریق کامند لاین مورد استفاده قرار گیرد.
Yellodog Updater Modified که به اختصار yum گفته میشود، یک ابزار مدیریت پکیج اپن سورس برای کامند لاین است که برای توزیعهای لینوکسی مبتنی بر RPM یا بهتر بگوییم خانواده ی توزیعهای فدورا استفاده میشود. لازم به ذکر است که از این ابزار هم به صورت کامند لاینی و هم از طریق رابط گرافیکی میتوان استفاده نمود.
Zypper یک سیستم مدیریت پکیج برای توزیع openSUSE است که اساساً بر پایه ی RPM است. Zypper تا حد بسیار زیادی شبیه به yum است.
مدیریت پکیج ها در توزیع اوبونتو
برای نصب، آپدیت، حذف و … در توزیع اوبونتو، ابتدا پنجره ی Terminalرا باز می کنیم. برای دستیابی به لیستی از پکیج هایی که روی سیستم مان نصب شده، دستور زیر را وارد می کنیم:
dpkg -l
خروجی دستور فوق به این شکل است که کلیه ی پکیج های نصب شده روی سیستم را در معرض دیدمان قرار میدهد. برای جستجو کردن یک پکیج خاص -مثلا lynx- از طریق کامند لاین، دستور زیر را وارد می کنیم:
apt-cache search lynx
خروجی این دستور نتایج مرتبط با کلیدواژه ی lynx است. برای نصب این نرم افزار، از دستور زیر استفاده میکنیم اما پیش از نصب توجه داشته باشیم که کارهایی از قبیل نصب، حذف، تغییر در تنظیمات و … در لینوکس نیازمند به داشتن سطح دسترسی روت است. برای این منظور، در ابتدای دستورات مد نظر خود، کامند sudo را وارد می کنیم:
sudo apt-get install lynx
ابتدا از ما پسورد روت درخواست میشود که به محض وارد کردن و فشردن دکمه ی اینتر، گرفتن اطلاعات اولیه ی این پکیج شروع می شود:
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages were automatically installed and are no longer required:
libcdaudio1 libfaac0 libpcre3-dev libpcre32-3 libslv2-9 linux-headers-4.4.0-21 linux-headers-4.4.0-21-generic
linux-headers-4.4.0-22 linux-headers-4.4.0-22-generic linux-headers-4.4.0-24 linux-headers-4.4.0-24-generic
linux-image-4.2.0-35-generic linux-image-4.4.0-21-generic linux-image-4.4.0-22-generic linux-image-4.4.0-24-generic
linux-image-extra-4.2.0-35-generic linux-image-extra-4.4.0-21-generic linux-image-extra-4.4.0-22-generic
linux-image-extra-4.4.0-24-generic pkg-php-tools
Use 'sudo apt autoremove' to remove them.
The following additional packages will be installed:
lynx-common
The following NEW packages will be installed:
lynx lynx-common
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 1,048 kB of archives.
After this operation, 2,675 kB of additional disk space will be used.
Do you want to continue? [Y/n]
همانطور که در خط آخر ملاحظه می شود، از کاربر سؤال میشود که آیا مطمئن هست که قصد نصب این نرمافزار را دارا است که در این مرحله می بایست حرف y را وار نموده و کلید اینتر را بفشاریم (البته به خاطر داشته باشیم هر زمانی که گزینه یی با حرف بزرگ نوشته شده بود -مثلا در خط آخر حرف Y که به صورت بزرگ نوشته شده است- در صورتی که حرف Y را وارد نکنیم و دکمه ی اینتر را بفشاریم، این گزینه پیش فرض قلمداد می شود و مد نظر قرار داده خواهد شد):
Get:1 http://us.archive.ubuntu.com/ubuntu xenial/universe i386 lynx-common all 2.8.9dev8-4ubuntu1 [411 kB]
Get:2 http://us.archive.ubuntu.com/ubuntu xenial/universe i386 lynx i386 2.8.9dev8-4ubuntu1 [638 kB]
Fetched 1,048 kB in 2s (356 kB/s)
Selecting previously unselected package lynx-common.
(Reading database ... 415767 files and directories currently installed.)
Preparing to unpack .../lynx-common_2.8.9dev8-4ubuntu1_all.deb ...
Unpacking lynx-common (2.8.9dev8-4ubuntu1) ...
Selecting previously unselected package lynx.
Preparing to unpack .../lynx_2.8.9dev8-4ubuntu1_i386.deb ...
Unpacking lynx (2.8.9dev8-4ubuntu1) ...
Processing triggers for mime-support (3.59ubuntu1) ...
Processing triggers for doc-base (0.10.7) ...
Processing 1 added doc-base file...
Registering documents with scrollkeeper...
Processing triggers for man-db (2.7.5-1) ...
Setting up lynx-common (2.8.9dev8-4ubuntu1) ...
Setting up lynx (2.8.9dev8-4ubuntu1) ...
update-alternatives: using /usr/bin/lynx to provide /usr/bin/www-browser (www-browser) in auto mode
مروگر تحت کامند لاین lynx با موفقیت نصب شد. برای تست کردن آن صرفاً کافی است که دستور lynx را در کامند لاین وارد کرده و اینتر کنید:
lynx
و یا در صورتی هم که یک یو آر ال خاص مد نظر داشته باشید، میتوانید آن را به صورت زیر وارد کنید:
lynx https://www.sokanacademy.com
که سایت سکان آکادمی را از طریق کامند لاین در معرض دید کاربر قرار خواهد داد. برای آگاهی از وضعیت پکیجی که جدیداً نصب شده است هم میتوانید از دستور زیر استفاده کنید:
apt-cache policy lynx
به عنوان خروجی این دستور داریم:
Installed: 2.8.9dev8-4ubuntu1
Candidate: 2.8.9dev8-4ubuntu1
Version table:
*** 2.8.9dev8-4ubuntu1 500
500 http://us.archive.ubuntu.com/ubuntu xenial/universe i386 Packages
100 /var/lib/dpkg/status
برای حذف این پکیج هم میتوان از دستور زیر استفاده کرد:
apt-get remove lynx
به عنوان خروجی دستور فوق داریم:
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages were automatically installed and are no longer required:
libcdaudio1 libfaac0 libpcre3-dev libpcre32-3 libslv2-9 linux-headers-4.4.0-21 linux-headers-4.4.0-21-generic
linux-headers-4.4.0-22 linux-headers-4.4.0-22-generic linux-headers-4.4.0-24 linux-headers-4.4.0-24-generic
linux-image-4.2.0-35-generic linux-image-4.4.0-21-generic linux-image-4.4.0-22-generic linux-image-4.4.0-24-generic
linux-image-extra-4.2.0-35-generic linux-image-extra-4.4.0-21-generic linux-image-extra-4.4.0-22-generic
linux-image-extra-4.4.0-24-generic pkg-php-tools
Use 'sudo apt autoremove' to remove them.
The following packages will be REMOVED:
lynx
0 upgraded, 0 newly installed, 1 to remove and 237 not upgraded.
After this operation, 1,888 kB disk space will be freed.
Do you want to continue? [Y/n]
از ما سؤال میشود که آیا از حذف این پکیج مطمئن هستیم؛ به منظور تایید، دکمه ی اینتر را می فشاریم:
(Reading database ... 415847 files and directories currently installed.)
Removing lynx (2.8.9dev8-4ubuntu1) …
پکیج با موفقیت حذف میگردد. اگر مجدد دستوری که برای آگاهی از وضعیت پکیج را استفاده کردیم وارد سازیم -apt-cache policy lynx- با خروجی زیر مواجه خواهیم شد:
lynx:
Installed: (none)
Candidate: 2.8.9dev8-4ubuntu1
Version table:
2.8.9dev8-4ubuntu1 500
500 http://us.archive.ubuntu.com/ubuntu xenial/universe i386 Packages
100 /var/lib/dpkg/statusapt-cache policy lynx
خروجی (Installed: (none حاکی از آن است که این پکیج دیگر روی سیستم نصب نیست.
کاربرد دستورات update و upgrade
برای آپدیت کردن پکیج های نصب شده روی سیستم، دو دستور پیش رو داریم: یکی apt-get update و دیگری apt-get upgrade. دستور apt-get update لیست پکیج های موجود را به همراه ورژن آنها آپدیت میکند اما هرگز اقدام به نصب یا آپگرید پکیج ها نمیکند اما این در حالی است که دستور apt-get upgrade واقعاً دست به نصب ورژن های جدیدتر پکیج هایی میزند که روی سیستم مان نصب هستند. در حقیقت، پس از آپدیت کردن لیست پکیج ها، سیستم مدیریت پکیج ها میفهمند که کدام یک از پکیج ها نیاز به آپدیت شدن دارند لذا الزامی است که ابتدا دستور update را اجرا کنیم سپس upgrade تا پکیج ها آپدیت شوند.