PKGBUILD
PKGBUILDها فایلهاییاند که با استفاده از آنها میتوان توضیحات مربوط به بستههای ساخته شده و جزییتات نحوه نصب را به نمایش گذاشت. در ساخت بستههای آرچ از makepkg استفاده میشود و توضیحات مربوط با آنها در فایلهای PKGBUILD ذخیره میشود. هنگامی که makepkg اجرا میشود در مسیر جاری (مسیر یکه makepkg در آن نصب شده است) به دنبال فایل PKGBUILD میگردد و سپس با استفاده از دستورالعملهای داخل آن شروع به کامپایل یا ساخت فابلهای بسته میکند. بسته بدست آمده شامل فابلهای باینری و دستورالعمل نصب بستهها است که به راحتی توسط پکمن اجرا میشوند.
متغیرها
متغیرهای زیر در فایلهای PKGBUILD یافت میشوند. البته این عمل برای تعریف متغیر در PKGBUILD مشترک است ولی تا زمانی که از دستورهای بش استفاده شود اجباری نیست.
pkgname
اسم بستهها، این اسامی باید شامل حروف الفبایی باشد. و از حروف کوچک در آن استفاده شود.برای سازگاری نام بسته، باید با نام فایل نرمافزار یکسان باشد.برای مثال: اگر نام فایل است باید نام pkgname باشد.
pkgver
ورژن بسته. مقدار آن را نیز توسط نویسندهی بسته بنابر شمارهی توزیع، تعداد بازنگریها و ... تنظیم میشود.در ورژن میشود از حروف و اعداد استفاده کرد اما نمیتوان از خط فاصله(-) استفاده کرد و میتوان به جای آن از آندرلاین(زیرخط) استفاده کرد.برای این کار اگر بستهای با ورژن دارید آن را به تغییر نام دهید.برای مثال:
pkgrel
شماره ی انتشار بسته . این شماره کاربران را از تفاوت بین ورژن های مخلف آگاه می سازد.هنگامی که بسته برای اولین بار در دسترس است شماره انتشار آن 1 است. این برای بهینه سازی فایل های pkgbuild در نظر گرفته شده و با انتشار دوباره ی بسته به مقدار آن یک واحد اضافه می شود هنگامی که ورژن جدید از برنامه منتشر می شود شماره ی انتشار تغییر نمی کند.
Cpoch
یک عدد صحیح است که نشان دهنده ی طول عمر انتشار در مقابل انتشار های دیگر است. همچنین باعث می شود تا تنظیمات نسخه های ناسازگار با هم عوض شود، به ورژن های پایین تر wngrade شود، ایجاد تغییرات در شماره گذاری و ... به طور پیش فرض این مقدار دارای عدد صفر است. اگر دراین باره اطلاعات کافی ندایرد از تغغیرات در این بخش بپرهیزید.
Arch
مجموعه ای از معماری های است که در فایل pkobuild موجود است این معماری ها شامل vi188 x86-64 است. مقدار هیچ (any) برای معماری های مستقل به کار می رود شما می توانید به معماری مورد نظرتان در طول ساخت با دستور crash دسترسی داشته باشید از این کار حتی در هنگام تعریف متغیرها هم استفاده می شود. مثال : کد:
url
آدرس سایت رسمی عرضه کنندگان نرم افزار داخل pac
مجوز(license)
مجوزی است که تحت آن نرم افزار ارائه شده است. مخزن core را در نظر بگیرید . مجوز بسته هایی که در آن هستند از مسیر /urv/share/licenses/conmon قابل دسترسی اند. برای مثال : اگر مجوز های مورد نظر شما در مسیر زیر موجود است، مقدار این متغیر باید با نام پوشه ی …../gpl مورد نظر مقدار می شود. برای مثال license.’gpL’ و اگر مجوز مورد نظر شما در این مسیر موجود نبود باید یک سری مراحل طی شود.
- فایل یا فایلهای لیسانس باید در مسیر روبه رو اضافه شود /user/shore/licenses/pkgname/license.
- اگر در یک فایل .tar تعدادی فایل با مجوز مختلف وجود دارد و نمی توان برای فایل .tar مجوز خاص در نظر گرفت ، باید مجوزهای مختلف را به آن اضافه کنید .
- به license ها یک license جدید اضافه کنید . در صورت تمایل میتوانید مجوزی که خودتان ساختید را با مجوزهای دیگر جایگزین کنید “cystem:name of license” در صورتی که از یک مجوز در دو یا بسته یا بیشتر ، از یک منزل مورد استفاده اند و به لیست مجوزهای بسته اضافه نمی شوند با توجه به آرایه ی مجوزها ، مجوزهای فوق به عنوان مجوزهای مشرتک و رایج در نظر گرفته شده است کد:اما از نظر فنی هر یک از مجوزهای خاص است، زیرا کپی رایت خود را دارد. هر بسته با یکی از این چهار مجوز نصب می شود باید در دایرکتوری زیر قرار گیرد کد:
برخی از بسته ها ممکن است تحت یک مجوز خاص ارائه نشوند در این موارد طبق مثال زیر رفتار می کنیم ، کد: علاوه بر این مجوز gpL دارای نسخه های جدید و ورژن های مختلفی است و نرم افزارهایی که دارای این مجوزاند از قرارداد زیر پیروی می کنند.
مجوزها:
اگر پس از تحقیق درباره ی این موضوع نتوانستید مجوز مناسب را انتخاب کنید این متغییر را با مقدار nknewn مقدار می کنید د راین صورت برای اطلاع از چگونگی در دسترس بودن نرم افزار با شما تماس برقرار خواهد شد.Groups
این متغییر نشان دهنده ی این است که نرم افزار جزو کدام دسته از نرم افزارها است. به عنوان مثال هنگامی که شما kdebase را نصب می کنید. تمام نرم افزارهای متعلق به kdc نصب می شوند.
Depends
آرایه ای از نام بسته های است که نرم افزار قبل از اجرا به آن ها نیاز دارد. اگر نرم افزار حداقل نیاز به یکی از این وابستگی ها برای اجرا دارد باید از عملگر =< برای اشاره به آن استفاده کنید برای مثال depens=(‘foobar>=1.8.0’) شما به لیست بسته های که قبلاً توسط نرم افزار دیگر نصب شده اند احتیاج ندارید و لازم نیست بهاین امتیازات آنان را نیز اضافه کنید. برای مثال gtk2 به glibs glib2 نیاز دارد اما نیاز به اضافه کردن glibc در لیست نیست. زیرا جزو احتیاجات glib 2 است.
Makedepends
آرایه ای از نام بسته هایی است که در هنگام ساخت نرم افزار نیاز است ولی پس از نصب آن، مورد استفاده قرار نمی گیرد.
Ckeckdepends:
آرایهای از بسته ها است که هنگام تست به کار می روند و مورد نیازاند و بعد از استفاده ای ندارند. این بسته ها هنگامی به کار می روند که از تابع chec() استفاده می شود.
Optdepends:
آرایه ای از بسته ها است که برای اجرای نرم افزار لازم نیست ولی اگر بخواهیم بهنرم افزار ویژگی های دیگری اضافه کنیم مورد استفاده خوهند بود. در مثال زیر شرح کوتاهی از این مورد را می بینیم کد:
Pvovides
Conflicts
آرایه ای از نام بسته ها که در صورت نصب ممکن است مشکل بوجود آورند. تمامی بسته هایی که نامشان در این متغییر وجود دارند باید حذف شوند شما همچنین می توانید خصوصیات این بسته ها را در یک قالب معین بهعنوان امتیازات مطرح کنید.
Repace
آرایه ای از نام بسته های است که باید جایگزین بسته های منسوخ شده شوند پس از بروز رسانی پایگاه داده با دستور pecman بلافاصله عمل جایگزینی صورت می گیرد. اگر شما یک نسخه ی جایگزین از بستهای که در حال موجود است را ارائه می کنید حتماً از متغییر confints استفاده کنید تا از مشکلات احتمالی جلوگیری کند.آرایه ای از فابل های پشتیبانی است به صورت filename.pacsar که هنگامی که بسته ها پاک شدند از بروز مشکل جلوگیری می کنند. این معمولاً برای بسته هایی به کار می رود که مکان آن ها در اینجاست : /etc این مسیر، مسیر پایداری نیست، مقداری pacnew and pacsavefile را مطالعه کنید
Optius
این آرایه اجازه می دهد تا شما از یک سری رفتار که به صورت پیش فرض رخ می دهد جلوگیری کنید. این رفتار ها اغلب توسط makpkg تعیین می شوند که از مسیر /ete/makepkg.cont قابل دسترسی است برای تنظیم یک ویژگی، نام ان را اضافه کنید به این فضا. برای معکوس کردن رفتار پیش فرض در مقابل آن option گزینه ! را قرار دهید. گزینه های زیر ممکن است در آرایه قرار گیرد- Stvip : اگر شما غالباً از دیباگر و یا library های خاص استفاده می کنید توصیه می شود این گزینه را غیر فعال کنید.-Libtoel : اجازه می دهد تا از libtoel (ابزارهای خاص) در بسته هایمان استفاده کنیم.-Einptydirs : اجازه می دهد تا دایرکتوری بسته خالی شود.-Zipman : صفات و اطلاعات را با استفاده از gzip فشرده می کند.-Ecash : در طول ساخت از ecash استفاده می شود. بیشتر در شکل منفی از آن استفاده می شود . برای تعمیر بسته های خراب .-Distcc : ویژگی های آن مثل ecash است و برای تعمیر مورد استفاده قرار می گیرد.-Buildflags : ویژگی های آن مثل ecash است و برای تعمیر مورد استفاده قرار می گیرد اولی دارای کاربرد های خاص است و تفاوت هایی با ecash و distec دارد.-Makeflags : ویژگی هایی مانند buildflog دارد.
install
نام فایل های install هستند که به بسته ها اضافه می شود. Paeman این ویژگی را دارد که اسکریپ پکیج های خاص را ذخیره و اجرا کند هنگامی که آن در فایل نصب است، در چنین می تواند یک بسته را حذف و یا به روزرسانی کند. اسکریپته ها شامل توابعی اند که در زمان هاس خاص اجرا می شوند که این توابع به شرح زیر است.-Prc-install : این اسکریپت ها به درستی اجرا می شوند قبل از اینکه فایل ها از حالت فشردگی خارج شوند یک آرگومان در یافت می کند که ورژن بسته ی جدید است.-Post-install : این اسکریپت بعد از اینکه فایل ها از حالت فشردگی خارج شدند اجرا می شود ویک آرگومان دریافت می کند که ورژن بسته جدید است .-Pre-upgrade : این اسکریپت قبل از اینکه فایل ها از حالت فشردگی خارج شدند اجرا می شود ویک آرگومان دریافت می کند: 1 که ورژن بسته قدیمی است .-pst-uggrade : این اسکریپت بعد از اینکه فایل ها از حالت فشردگی خارج شدند اجرا می شود ویک آرگومان دریافت می کند: 1 که ورژن بسته قدیمی است .-pre-remove : این اسکریپت قبل از اینکه فایل ها پاک شوند اجرا می شود ویک آرگومان دریافت می کند: ورژن بسته قدیمی است .-post-remove : این اسکریپت بعد از اینکه فایل ها پاک شوند اجرا می شود ویک آرگومان دریافت می کند: ورژن بسته قدیمی است.
changelog
شامل نام بسته هایی است که تغیرات داشته و از آن برای پیگیری تغییرات بسته های نصب شده روی سیستم استفاده می شود کد:
Soure
آرایه ای از فایل هاس مورد نیاز برای ساخت بسته است. آن باید شامل محل منبع که نرم افزار در آن موجود است باشد که اغلب این محل با آدرس هایی که از Http و ftp استفاده می کنند معلوم می شود این ماغیر قبلاً در pkymane و pkgiver مورد استفاده قرار می گرفت. برای مثال کد:
noextract
یک آرایه است که لیستی از فایل هایی را که در sourse موجود است و از حالت فشرده خارج نشده اند را در خودنگری دارد این اغلب در مورد فایل های فشرده ای که در مسیر /user/bin/bsdtar هستند رخ می دهد.در این موارد unzip باید به خط اول لیست احتباجات در تابع build اضافه شود به صورت زیر کد:توجه داشته باشید تا هنگامی که آدرس هایی آرایه ی sourse در حالت فشرده است نیاز ما به نام فایل ها است بنابراین شما در چنین شرایطی باید کار زیر را انجام دهید . کد:شما برای خارج کردن هر جیزی از حالت فشرده می توانید از این روش جالب استفاده کنید.
Md5sums
هنگامی که فایل های موجود در آرایه ی sourse در دسترس هستند حالتی هر فایل به طور خودکار تولید شده و مقایسه می شود با مقدار این آرایه به همان ترتیبی که در آرایه ی sourse هستند.شما می توانید این مجموعه را به سرعت و به سادگی با دستور makepkg-g در مسیری که pkbuild قرار دارد بسازیدsha1sums
این آرایه نوع دیگری از md5sums است ، اما این امر دارای نقاط منحنی است . بنابراین شما باید جایگزین قوی تری برای آن پیدا کنید.برای ساختن و استفاده ی از checksum ها از تنظیم شدن گزینه ی integrity-check در فایل /ete/makepky-conf اطمینان حاصل کند.
sha256sums, sha384sums, sha512sums
آرایه ای از sha 2 chcceknum هایی که بهترتیب وزن حدود256 یا 384 یا 512 بیت دارند. این ها م یتوانند جایگزین بهتری برای md 5 sums باشند زیرا عملیات ساختن را بهتر انجام می دهند برای فعال سازی و ساختن یااستفادهکردن آن ها باید از تنظیم شدن گزینه ی integrity-check در فایل /ctc/makgpky.conf اطمینان حاصل کنید.