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’ و اگر مجوز مورد نظر شما در این مسیر موجود نبود باید یک سری مراحل طی شود.

  1. فایل یا فایلهای لیسانس باید در مسیر روبه رو اضافه شود /user/shore/licenses/pkgname/license.
  2. اگر در یک فایل .tar تعدادی فایل با مجوز مختلف وجود دارد و نمی توان برای فایل .tar مجوز خاص در نظر گرفت ، باید مجوزهای مختلف را به آن اضافه کنید .
  3. به license ها یک license جدید اضافه کنید . در صورت تمایل میتوانید مجوزی که خودتان ساختید را با مجوزهای دیگر جایگزین کنید “cystem:name of license” در صورتی که از یک مجوز در دو یا بسته یا بیشتر ، از یک منزل مورد استفاده اند و به لیست مجوزهای بسته اضافه نمی شوند با توجه به آرایه ی مجوزها ، مجوزهای فوق به عنوان مجوزهای مشرتک و رایج در نظر گرفته شده است کد:اما از نظر فنی هر یک از مجوزهای خاص است، زیرا کپی رایت خود را دارد. هر بسته با یکی از این چهار مجوز نصب می شود باید در دایرکتوری زیر قرار گیرد کد:

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

مجوزها:

اگر پس از تحقیق درباره ی این موضوع نتوانستید مجوز مناسب را انتخاب کنید این متغییر را با مقدار nknewn مقدار می کنید د راین صورت برای اطلاع از چگونگی در دسترس بودن نرم افزار با شما تماس برقرار خواهد شد.
نکته: برخی از سازندگان نرم افزار با ایجاد یک فایل Readne.txt شرایط چگونگی استفاده از نرم افزار را برای کاربر شرح می دهند.

Groups

این متغییر نشان دهنده ی این است که نرم افزار جزو کدام دسته از نرم افزارها است. به عنوان مثال هنگامی که شما kdebase را نصب می کنید. تمام نرم افزارهای متعلق به kdc نصب می شوند.

Depends

آرایه ای از نام بسته های است که نرم افزار قبل از اجرا به آن ها نیاز دارد. اگر نرم افزار حداقل نیاز به یکی از این وابستگی ها برای اجرا دارد باید از عملگر =< برای اشاره به آن استفاده کنید برای مثال depens=(‘foobar>=1.8.0’) شما به لیست بسته های که قبلاً توسط نرم افزار دیگر نصب شده اند احتیاج ندارید و لازم نیست بهاین امتیازات آنان را نیز اضافه کنید. برای مثال gtk2 به glibs glib2 نیاز دارد اما نیاز به اضافه کردن glibc در لیست نیست. زیرا جزو احتیاجات glib 2 است.

Makedepends

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

اخطار: هنگامی که توسط makepkge بسته ای ساخته می شدند گروه base-deve 1 به طور پیس فرض نصب می شود اما ممکن است به آرایه ی 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

شامل نام بسته هایی است که تغیرات داشته و از آن برای پیگیری تغییرات بسته های نصب شده روی سیستم استفاده می شود کد:

نکته: فایل تغییرات در مسیر userlsharel موجود است.

Soure

آرایه ای از فایل هاس مورد نیاز برای ساخت بسته است. آن باید شامل محل منبع که نرم افزار در آن موجود است باشد که اغلب این محل با آدرس هایی که از Http و ftp استفاده می کنند معلوم می شود این ماغیر قبلاً در pkymane و pkgiver مورد استفاده قرار می گرفت. برای مثال کد:

نکته: اگر شما فایل هایی دارید که بر روی gly قابل دانلود نیستند (برای مثال : self-made) شما به سادکی آن ها را در همان دایرکتوری که pkgbauil را در آن قرار داده اید اضافه کنید و نام آن را به این آرایه اضافه کنید. در واقع امرهایی که شما در این آرایه استفاده می کنید باید در مسیر pkgbuild باشند. Makepkg فایل هایی که در این آرایه اند را یا در لیست دانلود قرار می دهد یا وجود آن ها را بررسی می کند و در صورت نبودن آن ها عملیات ساخت لغو خواهد شد.

noextract

یک آرایه است که لیستی از فایل هایی را که در sourse موجود است و از حالت فشرده خارج نشده اند را در خودنگری دارد این اغلب در مورد فایل های فشرده ای که در مسیر /user/bin/bsdtar هستند رخ می دهد.در این موارد unzip باید به خط اول لیست احتباجات در تابع build اضافه شود به صورت زیر کد:توجه داشته باشید تا هنگامی که آدرس هایی آرایه ی sourse در حالت فشرده است نیاز ما به نام فایل ها است بنابراین شما در چنین شرایطی باید کار زیر را انجام دهید . کد:شما برای خارج کردن هر جیزی از حالت فشرده می توانید از این روش جالب استفاده کنید.


Md5sums

هنگامی که فایل های موجود در آرایه ی sourse در دسترس هستند حالتی هر فایل به طور خودکار تولید شده و مقایسه می شود با مقدار این آرایه به همان ترتیبی که در آرایه ی sourse هستند.شما می توانید این مجموعه را به سرعت و به سادگی با دستور makepkg-g در مسیری که pkbuild قرار دارد بسازید
نکته: الگوریتم MD5 دارای نفس است و حتی الامکان از روش دیگری استفاده کنید.

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 اطمینان حاصل کنید.