مهدی
مهدی
خواندن ۳ دقیقه·۳ سال پیش

چطور یک بسته در دبیان نصب/آپگرید یا حذف می‌شود؟

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

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


  • اسکریپت های پیکربندی Configuration Scripts

قبل از اینکه فرایند هایی که گفتم رو ببینیم باید راجع به این اسکریپت ها بدونیم. این اسکریپت ها بخشی از اون meta-information هستن که قبلا توی این مقاله راجع بهشون صحبت کردیم. علاوه بر فایل کنترل ( control.tar.gz ) یک بسته دبیان ممکنه اسکریپت هایی رو هم همراه با خودش داشته باشه که توسط dpkg در زمان های متفاوت پردازش یک بسته صدا زده میشن و وظایف مهمی رو به عهده دارن.

دیتابیس دی‌پکیج dpkg database
تمام اسکریپت های پیکربندی بسته های نصب شده در /var/lib/dpkg/info/ با فرمت زیر دخیره شدند
اون فایل های سبز الان مورد بحث ماست
اون فایل های سبز الان مورد بحث ماست
همینطور که توی عکس می‌بینید، این اسکریپت ها با اسم پکیج همراه هستن و اسم اون بسته برای اون اسکریپت ها prefix شده.این پوشه همچنین فایلی رو با پسوند list. برای همه بسته ها داره که لیستی از فایل های متعلق به اون بسته رو نشون میده.

به طور کلی preinst script قبل از فرایند نصب و postinst بعد از اون اجرا میشن. و به همین ترتیب prerm قبل از حذف صدا و postrm بعد از اون زده میشن. آپدیت کردن یک بسته به این معنی‌ست که ورژن قبلی حذف و ورژن جدید نصب بشه. این اسکریپت های مخصوص توسط خود توسعه دهنده یا نگه‌دارنده بسته نوشته میشن. چون زیر و بم بسته رو میدونن و میدونن باید چجور با اون رفتار بشه!

دنباله های توصیف شده در این بخش اسکریپت های پیکربندی را با نام های خاصی صدا می کند ، مانند old-prerm یا new-postinst. اون ها به ترتیب اسکریپت های موجود در نسخه قدیمی بسته ( *-old ) و اسکریپت های جدید اند ( *-new ) هستند.

این دو لینک میتونن یک جلوه تصویری از فرایند های نصب/آپگرید و یا حذف به شما بدن:
https://people.debian.org/~srivasta/MaintainerScripts.html
https://www.debian.org/doc/debian-policy/ap-flowcharts.html

نصب و آپگرید

این چیزی هست که در نصب ( یا آپگرید ) بسته اتفاق میوفته:

  1. برای بروزرسانی دی‌پکیج old-prerm upgrade new-version رو صدا میزنه.
  2. هنوز برای بروزرسانی دی‌پکیج new-preinst upgrade old-version رو اجرا میکنه؛ برای اولین نصب هم new-preinst install رو اجرا میکنه. دی‌پکیج اگه بدونه که این بسته قبلا نصب و حذف شده ( و purge نشده ) ورژن قدیمی رو جلو واژه install میگذاره .
  3. الان فایل های بسته جدید استخراج یا باز میشن ( unpack ) اما اگر این فایل ها از قبل وجود داشته باشن، به صورت موقت یک بک آپ ازشون گرفته میشه و بعد با فایل های جدید جایگزین میشن.
  4. برای یک بروزرسانی دی‌پکیج old-postrm upgrade new-version رو اجرا میکنه.
  5. دی‌پکیج حالا همه فایل های مربوط به اون بسته رو‌ ( file list, configuration scripts, etc. ) بروزرسانی میکنه و اون بک آپ موقت رو حذف میکنه
  6. دی‌پکیج حالا فایل های پیکربندی ( configuration files ) رو آپدیت میکنه ، و از یوزر میپرسه که میتونه اتوماتیک این کار رو انجام بده یا نه.
  7. و در آخر، دی‌پکیج بسته رو با اجرا new-postinst configure last-version-configured پیکربندی ( configure ) میکنه .


حذف بسته

این اتفاقی هست که موقع حذف یک بسته میوفته.

  1. دی‌پکیج prerm remove رو صدا میزنه
  2. دی‌پکیج همه فایل های مربوط به اون بسته رو به جز‌ فایل های پیکربندی و اسکریپت های پیکربندی ( configuration files and configuration scripts ) رو حذف میکنه.
  3. دی‌پکیج حالا postrm remove رو اجرا میکنه. همه اسکریپت های پیکربندی به جز postrm حذف میشوند، اگر یوزر درخواست purge نکرده باشه پروسه همین جا متوقف میشه!
  4. برای پرج ( purge ) کامل یک بسته همه فایل های پیکربندی هم همراه با چند کپی ( فایل هایی با پسوند :‌ dpkg-tmp, dpkg-old, dpkg-new ) حذف میشوند، و بعد از آن دی‌پکیج postrm purge رو اجرا میکنه!



دیگر پست های من:

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