پکیج منیجر چیست؟

Image not Found

پکیج منیجر(مدیر بسته) یا سیستم مدیریت بسته ها به ما اجازه میده تا به راحتی نرم افزار هامون رو مدیریت کنیم, این پکیج منیجر توی یک بسته داخل سیستم های شبه یونیکس وجود داره.

برای اطلاع, OS X (سیستم عامل شرکت اپل) هم یک ورژن از یونیکس هست که پکیج منیجر معمولی یا سیستم مدیریت پکیج نصب شده نداره. خب در اصل یکی داره ولی به صورت گرافیکی هست که به اسم (app store) شناخته میشه .

ما چند تا پکیج منیجر شخص ثالث یا همون سیستم مدیریت بسته ها مثل (home brew) رو معرفی میکنیم . میشه گفت مدیر بسته یا سیستم مدیریت بسته ها یکی از بزرگترین پیشرفت هایی که لینوکس در صنعت ایجاد کرده است.( گفته : ایان مرداک , بنیان گذار پروژه دبیان).

مدیر بسته یا سیستم مدیریت بسته : پایه

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

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

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

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

تغییراتی که مدیر بسته باید برای نصب بسته روی سیستم انجام بده توسط اون بسته خوانده میشه و تبدیل میشه. مدیر بسته تشخیص میده که به نرم افزار(های) دیگر برای اجرا آن برنامه نیاز داره ( به اصطلاح وابستگی یا dependency, برای مثال یه کتابخانه ) اما بسته هنوز نصب نشده. یا هشدار میده یا میخواد اون وابستگی ها رو از مخازن بگیره و دوباره سعی میکنه که اون برنامه رو نصب بکنه.

اگه یه بسته نیاز داشته باشه تا حذف بشه مدیر بسته یک اطلاعاتی رو از اون بسته رو نشون میده و طبق تنظیمات اون بسته تغییر میده یا حذفش میکنه.

مدیر بسته یا سیستم مدیریت بسته : پیشرفته

خب ، بیاین اول در مورد سناریو های عملی فکر کنیم، بنابراین مشخص شد که Apple app store یک مدیر بسته متفاوت برای OS X هست. این اشتباهه که OS X هیچ مدیر بسته پیشفرضی نداره. ولی، به روشی که ما مدیر بسته ها رو میشناسیم — استفاده قدرتمند از خط فرمان — که توی OS X کاملا فعال نیست ، مجبوریم که Xterm و Homebrew را نصب کنیم. اگه علاقه دارید که ارتباط بینشون رو یاد بگیرید ، میتونید اینجا بخونید

همچنین ما میتونیم apt-get هم روی OS X نصب کنیم

مدیر بسته:

  1. معمولا بخشی از یک سیستم عامل است
  2. از یک پایگاه داده استفاده میکند
  3. میتواند تمام بسته های موجود در یک سیستم عامل را تایید و مدیریت کند

سیستم های کامپیوتری که به Dynamic library linking متکی هستند ، به جای عمل library linking کتابخانه های اجرایی سیستمی رو بین بسته ها و برنامه ها به اشتراک میزاره.

توی این سیستم ها روابط پیچیده ای بین بسته های مختلف که به نسخه های مختلف یک کتابخانه نیاز دارند که منجر به چالشی میشه به عنوان وابستگی جهنمی(dependency hell) برای سیستم عامل ویندوز.‌ این یکی از دلایل گرفتن صفحه ابی مرگ (BSOD) هستش.

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

  1. چک کردن checksum ها برای مطمعن شدن از اینکه نسخه دانلود شده با نسخه اصلی تفاوتی نداره
  2. بررسی امضای دیجیتال بسته
  3. نصب ، ارتقا و حذف ساده بسته
  4. رفع وابستگی ها برای اطمینان از درست کار کردن برنامه
  5. پیدا کردن اپدیت برای فراهم کردن اخرین نسخه بسته برای رفع مشکلات نرم افزار
  6. گروه بندی بر اساس عملکرد بسته و جلوگیری از سردر گمی در نصب یا نگهداری

احتمالا در مورد pip برای زبان پایتون، که نمونه ای از مدیر بسته در سطح برنامه است رو شنیدید. Cydia یک برنامه است برای استفاده از apt در ios که توسط جامعه فرار از زندان 😐( jail break ) توسعه داده میشه .

مدیر بسته های مختلفی مثل apt , yum, pacman, dpkg و …. وجود داره.

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

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

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

  1. pkgadd
  2. RPM Package Manager
  3. Debian package manager(dpkg)

برای مثال، yum به rpm به عنوان پشتوانه تکیه میکنه. yum قابلیت های rpm رو با اضافه کردن قابلیت هایی مثل پیکر بندی ساده برای نگهداری شبکه سیستم عامل افزایش میده. همچین این امکان هست که بسته های یک لینوکس دیگه رو به یه لینوکس دیگه تبدیل بکنیم