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

Package چیست و منظور از Package Management System چیست ؟

پکیج در لینوکس چیست؟ مدیریت پکیج یا Package Management چیست؟ شاید تا به حال دقت کرده باشید که در مقالاتی که در خصوص معرفی توزیع های مختلف سیستم عامل لینوکس در توسینسو نوشتیم ، برخی اوقات اشاره می کردیم که فلان توزیع لینوکس از Package Manager ای به نام RPM و دیگر توزیع لینوکس از Package Manager ای به نام urpmi استفاده می کند.

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

اما ممکن است برای دوستان این سئوال پیش بیاید که اصلا Package Manager چیست و چرا ما از چنین سیستم مدیریتی برای نرم افزارهای خود در سیستم عامل ها استفاده می کنیم ؟ یک Package Manager یا Package Management system در واقع مجموعه ای از ابزارهای نرم افزاری ( Software Tools ) است که فرآیند نصب ، بروز رسانی ، پیکربندی و حذف بسته های نرم افزاری یا Software Package ها بر روی سیستم عامل های ما را بر عهده دارد.

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

Package Manager چیست و چه کاربردی دارد ؟

Package Manager چیست ؟

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

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

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

چرا باید Package ها را Manage یا مدیریت کنیم ؟

برای پاسخ به این سئوال اول باید دقیقا درک کنیم که مفهوم بسته نرم افزاری یا Software Package چیست ، در پاراگراف های قبلی کمی توضیح در این خصوص دادیم اما بهتر است دید ساده ترین به این موضوع داشته باشیم .خوب بیایید با هم کمی ساده فکر کنیم ، کامپیوترها برای پردازش اطلاعات ساخته شده اند ، برای انجام اینکار یک سری پیشنیازها وجود دارد که از آن جمله می توان به یک کامپیوتر سخت افزاری ( قاعدتا باید باشه با توهم پردازش انجام نمیشه D: ) .

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

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

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

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

  1. برنامه به اطلاعات برای پردازش نیاز دارد ، اطلاعاتی که دارای قالب مناسب ، نامگذاری مناسب و محل مناسب در سیستم باشند.
  2. برنامه به یک سری فایل پیکربندی یا configuration file نیز نیاز دارد. این فایل ها رفتار برنامه را کنترل می کنند و در ضمن امکان دلخواه سازی برنامه را نیز به ما می دهند. مشابه اطلاعات ، این فایل ها نیز بایستی دارای قالب مناسب و تعریف شده باشند ، نامگذاری مناسب و تعریف شده داشته باشند و بر روی محل مناسبی بر روی دیسک ذخیره شده باشند. ما در انجمن تخصصی فناوری اطلاعات ایران به اختصار به اینگونه فایل ها config file می گوییم.
  3. خود برنامه نیز از این موارد خارج نیست ، برنامه باید بر روی دیسک سیستم قرار گرفته باشد و ساختار نامگذاری مناسبی داشته باشد.حتی برنامه برای اینکه درست اجرا شود ممکن است به سایر برنامه ها به عنوان پیشنیاز ، نیاز داشته باشد.
منظور از Package در سیستم عامل لینوکس چیست

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

  • 1-بعد از اینکه شما مستندات برنامه های مورد نظرتان را مطالعه کردید و می خواهید از آنها استفاده کنید شما فایل نرم افزارها به همراه مستندات و config file های آنها را بر روی کامپیوتر خود کپی می کنید و مطمئن می شوید که همه آنها به درستی نامگذاری شده اند و در محل درستی در سیستم ذخیره سازی شده اند و فضای ذخیره سازی مناسبی هم برای نگهداری از آنها بر روی سیستم وجود دارد. حالا شما تغییرات مد نظرتان بر روی config file ها را انجام می دهید و در نهایت برنامه نصب یا setup برنامه مورد نظرتان را اجرا می کنید و این امکان را می دهید که هر اطلاعاتی که می خواهند از سیستم برای نصب کردن نرم افزار دریافت کنند ، شما در واقع در این حالت به کامپیوتر اجازه می دهید که خودش همه این کارها را انجام دهد.

به نظر می رسد گزینه اول چندان هم بد نباشد ، اما تصور کنید که در این فرآیند دستی شما قرار است چه تعداد فایل را همیشه زیر نظر داشته باشید . در یک سیستم عامل لینوکس معمولی احتمال وجود بیشتر از 20 هزار فایل وجود دارد. با وجود این همه فایل طبیعتا شما نیز باید مستندات بسیار زیادی را مطالعه کنید ، فایل های زیادی را کپی کنید و پیکربندی های زیادی را انجام دهید،اما چه اتفاقی می افتد اگر یک نسخه جدید از یک برنامه معرفی شود ؟ تازه نسخه جدید از همان نرم افزاری که قبلا بر روی سیستم نصب کرده اید ! برخی افراد در اینجاست که به این نتیجه می رسند که از گزینه دوم به نام Package Manager باید استفاده کنند.

  • 2-خوب در گزینه اول شما مجبور بودید همه آن 20 هزار فایل را بصورت دستی تحلیل کنید اما اگر شما به کامپیوتر خود در زمینه پردازش اطلاعات اطمینان دارید و می دانید که کامپیوترها برای انجام پردازش های سنگین و البته نگهداری حجم عظیمی از اطلاعات ساخته شده اند ، می توانید براحتی مدیریت کردن و نظارت کردن بر روی این 20 هزار فایل را به عهده کامپیوتر خود بگذارید و خیالتان راحت باشد که کامپیوتر در این زمینه به درستی کار خود را انجام خواهد داد. این دقیقا همان کاری است که یک سیستم به نام Package Manager انجام می دهد. یعنی مدیریت این همه فایلی که در سیستم عامل وجود دارد ، همه و همه بر عهده Package Manager خواهد بود. اما بیایید کمی ساده تر Package را تعریف کنیم .

Package چیست ؟

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

همه اشیاء موجود در یک Package دارای نامگذاری و برچسب مشخص برای شناسایی محتویات Package هستند. این دقیقا همان چیزی است که یک Package Management System یا Package Manager انجام می دهد. معمولا یک Package Management system تمامی فایل های مرتبط با یک برنامه اعم از فایل خود برنامه ، داده های آن ، مستندات و config file هایآن را در فایل یک فایل بسته بندی می کند و یک قالب یا Format خاص نیز برای این بسته قرار می دهد که ما آن را به عنوان Package File می شناسیم.

Package Management System در لینوکس چیست

انواع و اقسام Package File وجود دارد که توسط هر سیستم عاملی بر حسب نوع سازنده آن متفاوت است ، برای مثال در سیستم عامل لینوکس Red Hat ما از ساختار Package File ای به نام RPM استفاده می کنیم که پسوند همه فایل هایی که توسط این سیستم مدیریت بسته های نرم افزاری ارائه می شوند rpm. است و مخفف Red Hat Package Management می باشد.

در خصوص انواع Package File ها به امید خدا در یک مطلب دیگر در انجمن تخصصی فناوری اطلاعات ایران بصورت تخصصی تر صحبت می کنیم. وقتی شما یک RPM Package را نصب می کنید به نظر شما چه چیزایی را نصب کرده اید ؟ در واقع محتویات یک Package File معمولا شامل یکی از انواع نرم افزارهای زیر می باشد :

  • اولین نوع از یک Package File مجموعه ای از یک یا چند برنامه است که یک وظیفه تعریف شده را برای ما انجام می دهند ، برای مثال اکثر افراد اینگونه از Package ها را به عنوان Application Package می شناسند ، نرم افزارهایی مثل Word Processor ها ، زبان های برنامه نویسی و ... در این قبیل از دسته بندی ها قرار می گیرند که بسته نوع اول نام دارد و اکثرا برای کاربران این نوع بسته های نرم افزاری قابل لمس و کار کردن است.
  • دومین نوع از یک Package File در واقع بسته نرم افزاری است که جزوی از سیستم عامل است و برای اضافه کردن امکانات به سیستم عامل بدون متوجه شدن کاربر استفاده می شود ، برای مثال اجرای اسکریپت های سیستم عامل ، اجرای دستورات Shell ، نصب نرم افزار جانبی برای عملکرد بهتر مرورگر اینترنتی و ... از این نوع بسته های نرم افزاری هستند که برای کاربر قابل لمس نیستند اما در نهایت در حال سرویس دهی به کاربران هستند.

مزایای استفاده از Package

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

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

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

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

Package در لینوکس به چه معناست

وقتی صحبت از صدها یا شاید هزاران برنامه بر روی یک سیستم بکنیم ، درست است که با استفاده از Package ها فرآیند نصب و راه اندازی آنها و حذف آنها ساده تر می شود اما از جهتی یکی از مهمترین مواردی که باید به آن توجه کنیم این است که مراقب تمامی Package هایی که بر روی سیستم نصب شده اند نیز باید باشیم .

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

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

در خصوص لینوکس RPM را مثال زدیم اما در خصوص سیستم عامل ویندوز می توانیم فایل های Cabinet که با پسوند .cab معرفی می شوند را عنوان کنیم ، به امید خدا در مقالات بعدی در خصوص انواع Package Manager ها در لینوکس مطالبی را ارائه خواهیم داد. اگر در این خصوص سئوالی دارید یا نظر یا انتقادی دارید خوشحال می شویم در ادامه مطلب از آن استفاده کنیم.


محمد نصیری
محمد نصیری

بنیانگذار انجمن تخصصی فناوری اطلاعات ایران ، هکر کلاه خاکستری ، کارشناس امنیت اطلاعات و ارتباطات

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

نظرات