ویرگول
ورودثبت نام
مهدی
مهدی
خواندن ۴ دقیقه·۳ سال پیش

ساختار یک بسته کد منبع ( source package )

چه چیزی همه چیزه؟ خب شاید بخوایم جمله ای شبیه به جمله‌ی عبید زاکانی بگیم که میگه: «همه چیز همگان دانند، و همگان هنوز از مادر زاده نشده اند.» اما خب، سوال ما اینه چه چیزی همه چیزه نه اینکه چه چیز یا کسی همه چیز رو میدونه! این سوال در دنیای توزیع "دبیان گنو/لینوکس" جواب داره: بسته های منبع ( source packages. ) هر چیزی در دبیان از یک بسته منبع میاد، و چیزی که DM ها ( Debian Maintainers ) در واقع روش دارن فعالیت میکنن، همین source package ها هستن. خب فکر کنم دیگه اهمیت‌شون رو فهمیدید بریم که یه بررسی روشون داشته باشیم.



فرمت
یک بسته کد منبع معمولا شامل سه فایل با پسوند های

.dsc, .orig.tar.gz and .debian.tar.xz (or .diff.gz)

هستن. اونا امکان ساخت بسته های باینری رو به ما میدن که در این مقاله راجع بهشون صحبت کردم. فایل .dsc ( کنترل منبع دبیان debian source control ) یک فایل متنی کوتاه حاوی یک سرصفحه RFC 2822 است (درست مانند کنترل فایل که در مقاله اطلاعات همراه با بسته های باینری راجع بهش صحبت کردم) که بسته منبع و سایر فایل های مربوط بهش رو توضیح میده. این فایل توسط نگهدارنده ( maintainer ) آن امضا شده که اصالت اون رو تضمین می کند.

برای توضیح بهتر ما به یکی از این بسته های نیاز داریم برای دریافت یکی از بسته ها مثل تصویر زیر عمل کنید:
این بسته کد منبع مربوط به توزیعی رو برامون دانلود میکنه که در source.list ما آدرس دهی شده باشه ( ... deb-src ) و خودش هم اولش نوشته که این بسته توسط سیستم کنترل ورژن Git داره مدیریت میشه و در این آدرس هست و از این دستور استفاده کنید تا آخرین نسخه رو تغییرات رو دریافت کنید. سه خط پایین هم توسط dpkg انجام شدند که نشون میده به صورت خودکار داره برامون استخراجش میکنه
این بسته کد منبع مربوط به توزیعی رو برامون دانلود میکنه که در source.list ما آدرس دهی شده باشه ( ... deb-src ) و خودش هم اولش نوشته که این بسته توسط سیستم کنترل ورژن Git داره مدیریت میشه و در این آدرس هست و از این دستور استفاده کنید تا آخرین نسخه رو تغییرات رو دریافت کنید. سه خط پایین هم توسط dpkg انجام شدند که نشون میده به صورت خودکار داره برامون استخراجش میکنه


و چیزی که ما داریم این خواهد بود:

۴ خط آخر
۴ خط آخر

حالا بریم ببینیم توی فایل کنترل منبع دبیان چی هست:

همین‌طور که میبینید header های متفاوتی در این فایل وجود داره که اطلاعات مهمی رو در موردش ذکر کرده. توجه کنید که این بسته کد منبع هم پیشنیاز هایی داره :) در هدر Build-Depends چیز هایی ذکر شدند که کاملا متمایز از بسته باینری‌اش اند، زیرا آنها ابزارهای مورد نیاز برای کامپایل نرم افزار مورد نظر و ساخت بسته باینری آن را نشون می دهند.

در اینجا لازم به ذکر است که هیچ تناسبی بین نام بسته منبع و بسته (های) باینری که ایجاد می کند وجود ندارد. باید بدانیم که هر بسته منبع ممکنه چندین بسته باینری تولید کنه و به همین دلیل عه که فایل dsc. دارای فیلد Source و Binary است که صریح بسته منبع را نامگذاری کرده و لیست بسته های باینری را که تولید می کند ذخیره می کند.
فرمت های مختلف بسته منبع
در ابتدا تنها یک قالب بسته منبع وجود داشت. این فرمت 1.0 بود که یک آرشیو .orig.tar.gz را به یک وصله "diff.gz "debianization patch متصل میکرد.
از زمان Debian 6 Squeeze ، توسعه دهندگان Debian توانستند که از فرمت های جدیدی استفاده کنند که بسیاری از مشکلات قالب قدیمی قبلی را برطرف می کند. فرمت 3.0 (لحاف quilte) می تواند چندین بایگانی بالادستی ( upstream ) را در یک بسته منبع مختلف ترکیب کند: علاوه بر orig.tar.gz. معمول ، بایگانی های تکمیلی .orig-component.tar.gz را می توان گنجاند. این با نرم افزارهایی که در چندین جزء بالادستی توزیع شده اند اما برای آنها یک بسته منبع واحد مورد نظر است مفید است. این بایگانی ها همچنین می توانند با xz به جای gzip فشرده شوند، که باعث ذخیره فضای دیسک و منابع شبکه می شود. در نهایت ، وصله یکپارچه ، .diff.gz با بایگانی .debian.tar.xz جایگزین دستورالعمل تدوین و مجموعه ای از وصله های بالادستی که توسط نگهدارنده بسته کمک می شود ، جایگزین می شود.

فایل orig.tar.gz. آرشیوی هست که شامل سورس کدی است که توسط توسعه دهنده اصلی ارائه شده است.از نگهدارندگان بسته دبیان ( Debian package maintainers ) خواسته می شود که این آرشیو را تغییر ندهند تا بتوانند به راحتی منشاء و یکپارچگی فایل را (با مقایسه ساده با check sum ) بررسی کرده و به خواسته های برخی نویسندگان احترام بگذارند.


آرشیو debian.tar.xz. شامل همه تغییرات ایجاد شده توسط نگهدارنده دبیان است ، به ویژه افزودن یک پوشه دبیان حاوی دستورالعمل های مربوط به ساخت یک بسته باینری از آن.


استفاده در دبیان

بسته منبع پایه همه چیز در دبیان است. همه بسته های دبیان از یک بسته منبع تهیه می شوند و هرگونه اصلاح در بسته دبیان نتیجه تغییراتی است که در بسته منبع ایجاد شده است. نگهدارندگان دبیان با بسته منبع کار می کنند ، با این حال ، عواقب اقدامات خود را بر روی بسته های باینری می دانند. ثمرات کار آنها در بسته های اصلی موجود از دبیان یافت می شود.
وقتی نسخه جدیدی از یک بسته (بسته منبع و یک یا چند بسته باینری) روی سرور دبیان وارد می شود ، بسته منبع مهمترین چیز است. سپس توسط شبکه ای از ماشینهای معماری مختلف ( architecture like: amd64, arm64, ... ) برای کامپایل بر روی معماری های مختلف پشتیبانی شده توسط دبیان مورد استفاده قرار می گیرد.

https://buildd.debian.org/



خیلی خوب این هم از این. امیدوارم این اطلاعات بدردتون خورده باشه. این آخرین قسمت از مجموعه سیستم بسته بندی: ابزارها و اصول اساسی بود. در سری بعدی رشته مقالات میریم سراغ یکی از قدرتمندترین ابزار های مدیریت بسته به اسم APT.

شاد باشید :)

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