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

اگر کمی وقت خود را در جامعه لینوکس سپری کنیم، نظرات زیادی خواهیم شنید. مثل اینکه کدام یک از توزیعهای لینوکس بهترین است. مهمترین عامل تعیینکننده کیفیت توزیع سیستم مدیریت بستهها و سرزندگی جامعه پشتیبانی آن توزیع میباشد.
همانطور که زمان بیشتری را با لینوکس سپری میکنیم، خواهیم دید که دورنمای نرمافزاری آن شدیدا پویاست. همه چیز دائما در حال تغییر است. بیشتر توزیعهای درجه بالای لینوکس هر شش ماه یکبار نسخه جدید ارائه میکنند و بسیاری برنامههای آن هر روز بروزرسانی میشوند. به منظور بقا در این طوفان نرمافزاری، ما نیاز به ابزارهای خوبی برای مدیریت بستهها داریم.
مدیریت بسته، متدی به منظور نصب و نگهداری برنامهها بر روی سیستم است. امروزه افراد میتوانند همه نیازهای نرمافزاری خود را با نصب بستهها از سرور توزیعکننده لینوکس برطرف سازند. این شیوه با شیوه قدیمی متفاوت است که ابتدا Source Code دانلود، سپس کامپایل شده و پس از آن بر روی سیستم نصب میشد. نه اینکه کامپایل کردن و دسترسی به Source Code مشکلی داشته باشد. بلکه در حقیقت دسترسی به Source Code یکی از ویژههای برتر لینوکس است. دسترسی به Source Code این توانایی را به ما میدهد تا بتوانیم سیستم را امتحان و بهینه کنیم. تنها مسئله این است که دریافت بستههای از پیش کامپایل شده سریعتر و آسانتر است.
در ادامه نگاهی به برخی ابزارهای خط فرمان به منظور مدیریت بسته خواهیم انداخت. در حالی که بیشتر توزیعهای اصلی برنامههای گرافیکی پیچیدهای به منظور نگهداری سیستم ارائه میکنند، ولی مهم است که برنامههای خط فرمان را نیز بیاموزیم. ابزارهای خط فرمان قادرند وظایفی را انجام دهند که با استفاده از ابزارهای گرافیکی انجام دادن آنها دشوار است.
سیستمهای بستهبندی
توزیعهای مختلف از سیستمهای بستهبندی متفاوت استفاده میکنند و به عنوان یک قانون کلی یک بسته که برای یک توزیع در نظر گرفته شده است با توزیع دیگر سازگار نخواهد بود. بیشتر توزیعها دارای یکی از دو نوع تکنولوژی بسته هستند. دبیان .deb(Debian) و کلاه قرمز .rmp(Red Hat) برخی استثناها مثل Gentoo و Slackware و Foresight وجود دارد ولی بیشتر توزیعها از یکی از دو نوع سیستم اساسی استفاده میکنند که در جدول زیر نشان داده شده است:
سیستم بستهبندی | توزیع |
---|---|
Debian style (.deb) | Debian, Ubuntu, Xandros, Linspire |
Red Hat style (.rpm) | Fedora, CentOS, Red Hat Enterprise Linux, openSUSE, Mandriva, PCLinuxOS |
یک سیستم بسته چگونه کار میکند؟
شیوه توزیع نرمافزار که در صنعت خصوصی نرمافزار استفاده میشود معمولاً به این صورت است که فایل حاوی بسته نصبی نرمافزار را در داخل یک دیسک مثل CD و یا DVD به فروش میرسانند که این فایل دارای ویزاردی با رابط گرافیکی برای نصب بر روی سیستم میباشد.
لینوکس اینگونه کار نمیکند! در واقع همه نرمافزارها برای سیستمهای لینوکس بر روی اینترنت یافت میشود. بیشتر آنها توسط توزیعکنندههای لینوکس به صورت فایلهای پکیج (همان بستهها) ارایه شده و بقیه آنها به صورت کد منبع (Source Code) که نیاز به کامپایل و نصب دستی دارند ارائه میشود. بعداً درباره نحوه کامپایل و نصب نرمافزارها از روی Source صحبت خواهیم کرد.
فایلهای بسته (Package Files)
بخش اصلی نرمافزار در یک سیستم بستهبندی یک فایل بسته است. یک فایل بسته یک فایل فشرده است که مجموعهای از فایلهای بسته نرمافزاری است. یک بسته ممکن است شامل تعدادی برنامه و فایلهای داده که برنامهها را پشتیبانی میکند، باشد.
علاوه بر فایلهای نصبی بسته ممکن است شامل ابردادههایی درباره بسته نیز باشد مثل توضیحات متنی درباره محتویات بسته. به علاوه بسیاری از بستهها دارای اسکریپتهای قبل و بعد از نصب هستند که وظایف مورد نیاز قبل و بعد از نصب نرمافزار را بر عهده دارند.
فایلهای بسته توسط شخصی که نگهدار بسته (Package Maintainer) نامیده میشود، ایجاد میگردد که اغلب یکی از کارمندان کمپانی توزیعکننده است. نگهدار بسته، سورس برنامه را از برنامهنویس دریافت میکند آن را کامپایل (Compile) میکند، ابردادهها و اسکریپتهای ضروری را ایجاد کرده و به آن اضافه میکند. گاهی نگهدار بسته، تغییراتی در Source Code نیز ایجاد میکند تا یکپارچگی نرمافزار با دیگر بخشهای توزیع لینوکس بهینه شود.
مخازن (Repositories)
در حالی که برخی پروژههای نرمافزاری خودشان بستهبندی و توزیع نرمافزار را انجام میدهند ولی امروزه بیشتر بستهها توسط توزیعکنندگان و سوم شخصها ایجاد شده و منتشر میشوند. بستههای ایجاد شده در دسترس کاربران یک توزیع قرار میگیرند. درکجا قرار میگیرند؟ در داخل مخازن (Repositories) که شاید حاوی هزاران بسته باشد که هر کدام به صورت اختصاصی برای توزیع مورد نظر ایجاد و نگهداری میشود.
یک توزیع شاید حاوی چندین مخزن مختلف برای سطوح مختلف چرخه زندگی یک نرمافزار باشد. مثلا مخزنی برای بستههای آزمایشی وجود دارد که حاوی بستههایی است که فقط به منظور برنامهنویسان و آنهایی که در پی کشف ایراد در نرمافزار قبل از توزیع برای کاربران عادی هستند ایجاد شدهاند. همچنین دارای یک مخزن توسعه است که به منظور نگهداری پروژه در دست کار برای توسعهدهندگان قرار داده شده است.
یک توزیع ممکن است دارای مخازن (Repositories) سوم شخصی هم باشد. این مخازن اغلب برای تامین نرمافزارهایی که مشکل کپیرایت دارند استفاده میشوند.
متعلقات (Dependencies)
برنامهها به ندرت تنها هستند. آنها متکی به حضور دیگر اجزای نرمافزاری بوده تا کارشان تکمیل شود. فعالیتهای رایج مثل ورودی/خروجی بوسیله روتینهایی که توسط دیگر برنامهها به اشتراک گذاشته شده است رسیدگی میشود.
این روتینها در کتابخانههای اشتراکی (Shared Libraries) ذخیره میشوند. کتابخانههای اشتراکی سرویسهای ضروری را برای بیش از یک برنامه فراهم میکند. اگر یک بسته نیاز به یک منبع اشتراکی پیدا کرد گفته میشود که یک وابستگی دارد. سیستمهای مدرن مدیریت بسته همگی برخی از شیوههای مدیریت متعلقات را دارند تا مطمئن شوند وقتی یک بسته نصب شده است، همه تعلقاتش نیز به همراه آن نصب شده باشد.
ابزارهای بستهبندی سطح بالا و سطح پایین
سیستمهای مدیریت بسته معمولا شامل دو نوع ابزار هستند: ابزارهای سطح پایین که وظایفی مثل نصب و حذف فایلهای بسته را بر عهده دارند و ابزارهای سطح بالا که جستجوی ابرداده و متعلقات آن را انجام میدهند. در این مبحث نگاهی به ابزارهایی خواهیم انداخت که با استایل سیستمهای دبیان تامین میشوند (مثل اوبونتو و دیگر توزیعها).
جدول زیر انواع ابزارهای بستهبندی سطح بالا و سطح پایین را نشان میدهد:
توزیع | ابزارهای سطح پایین | ابزارهای سطح بالا |
---|---|---|
Debian style | dpkg | apt-get, aptitude |
Fedora, Red Hat Enterprise Linux, CentOS | rpm | yum |