ایجاد بسته‌ها

از ArchWiki پارسی
پرش به: ناوبری، جستجو


این مقاله یک راهنما برای کاربرانی است که می‌خواهند بسته‌های اختصاصی خود را با استفاده از سیستم ساخت "ports-like" آرچ‌لینوکس ایجاد کرده و هم‌چنین آنها را در AUR (نیز) قرار دهند. درواقع، بحث اصلی راجع‌به ایجاد یک PKGBUILD است؛ یک فایل متنی که مشروح اطلاعات بسته و روش نصب را در‌بر داشته و توسط makepkg برای ایجاد یک بسته دودوئی از کدمبدا اجرا می‌شود. برای مشاهده قوانین ایجاد یک بسته با کیفیت مطلوب، Arch packaging standards را ببینید.

نگاهی اجمالی

در آرچ‌لینوکس، بسته‌ها توسط یوتیلیتی makepkg و هم‌چنین اطلاعات ذخیره‌شده در یک فایل PKGBUILD ساخته ‌می‌شوند. وقتی makepkg اجرا می‌شود به‌دنبال یک فایل PKGBUILD در دایرکتوری جاری‌اش می‌گردد تا دستورات ثبت‌شده در آن را برای کامپایل یا درغیر اینصورت، ذخیره بسته‌های محتوی در یک فایل فشرده شده (pkgname.pkg.tar.xz) را اجرا کند. بسته به‌دست آمده حاوی فایل‌های دودوئی و همچنین دستورالعمل نصب است که به‌سهولت توسط pacman نصب خواهند شد.

یک بسته آرچ چیزی بیش از یک آرشیو tar یا 'tarball' نیست که با سوئیچ xz فشرده‌شده و حاوی فایل‌های زیر، تولید شده توسط makepkg است:

  • فایل‌های دودوئی برای نصب.
  • PKGINFO. : حاوی تمام اطلاعات مشروح راجع‌به داده‌ها و مستندات برای ارتباط صحیح با پکمن، وابستگی‌ها و غیره است.
  • MTREE. : حاوی هش‌ها و اعتبار‌های زمانی/تاریخی فایل‌هاست که در پایگاه داده محلی قرار داشته و پکمن توسط آنها می‌تواند بی عیب و نقصی بسته را تحقیق کند.
  • INSTALL. : یک فایل اختیاری که برای اجرای فرمان‌ها بعد از مرحله نصب/ارتقا/حذف استفاده‌می‌شود( و به‌شرطی وجود دارد که در PKGBUILD مشخص شده باشد).
  • Changelog. : یک فایل اختیاری که توسط حامی بسته نگه‌داری شده و تغییرات بسته در آن ذکر می‌شود( این فایل در تمام بسته‌ها موجود نیست).

آماده‌سازی

نرم‌افزار پیش‌نیاز

ابتدا اطمینان حاصل کنید که ابزارهای لازم، نصب‌ شده‌اند. نصب گروه‌بسته base-devel که حاوی make و ابزارهای دیگر برای کامپایل از کدمبدا است باید کافی باشد.

یکی از ابزارهای کلیدی برای ساختن بسته‌ها makepkg است که توسط pacman ارائه شده و کارهای زیر را انجام می‌دهد:

۱. بررسی می‌کند که آیا وابستگی‌های بسته نصب شده‌اند.

۲. فایل‌(های) کدمبدا را از سرور(های) مشخص دانلود می‌کند.

۳. فایل(های) کدمبدا را باز می‌کند.

۴. نرم‌افزار را کامپایل کرده و آن را در یک محیط fakeroot( ریشه جعلی) نصب می‌کند.

۵. نمادهای دودوئی‌ها و کتابخانه‌ها را برمیدارد.

۶. فایل حاوی اطلاعات بسته را تولید می‌کند که درکنار هر بسته وجود دارد.

۷. محیط fakeroot را به یک بسته فشرده می‌کند.

۸. فایل بسته در مرحله قبل را در دایرکتوری مقصد پیکربندی‌شده که به‌صورت پیشفرض، دایرکتوری‌ای است که این کارها در آن انجام می‌شوند ذخیره می‌کند.

دانلود و امتحان نصب

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

بسیاری از نویسندگان برنامه‌ها نصب برنامه را از طریق انجام مراحل سه‌گانه زیر تنظیم می‌کنند:


 ./configure
 make
 make install

این مرحله برای آن است که مطمئن شوید تا مراحل نصب و خود برنامه به‌درستی کار می‌کنند.

ایجاد یک PKGBUILD

با اجرای makepkg، این برنامه به دنبال یک PKGBUILD در دایرکتوری جاری‌اش می‌گردد. درصورت یافتن، طبق دستورالعمل‌هایی که در PKGBUILD آمده‌اند، ابتدا کدمبدا نرم‌افزار را دانلود کرده و سپس کامپایل خواهد کرد. دستورالعمل‌ها باید کاملا قابل تفسیر و خوانش توسط شل bash باشند. بعد از اجرای موفقیت‌آمیز این فرآیند، دودوئی‌های به‌دست‌آمده و اطلاعات توصیفی بسته مثل نسخه بسته و وابستگی‌ها در یک فایل با پسوند pkgname.pkg.tar.xz بسته خواهند شد که این فایل توسط فرمان <pacman -U <package file قابل نصب است.

برای شروع ایجاد یک بسته جدید، باید ابتدا یک دایرکتوری خالی (ترجیحا ‎~/abs/pkgname) ایجاد کرده، سپس به این دایرکتوری رفته و یک فایل PKGBUILD بسازید. حتی می‌توانید یک الگوی PKGBUILD را از آدرس ‎/usr/share/pacman/PKGBUILD.proto‎ کپی کرده یا حتی از PKGBUILD یک بسته مشابه استفاده کنید. مخصوصا اگر قرار است تغییرات جزئی انجام دهید، پیشنهاد آخری اولویت بیشتری برای انتخاب خواهد داشت.

اخطـــــــــــــــــــــار:

تعریف متغیرهای PKGBUILD

شرح مفصلی از متغیرهای PKGBUILD را می‌توان در مقاله PKGBUILD یافت.

makepkg دو متغیر تعریف می‌کند که شما باید از آن‌ها به‌عنوان قسمتی از فرآیند ساخت و نصب استفاده کنید:

srcdir

این متغیر به دایرکتوری‌ای اشاره می کند که makepkg تمام فایل‌های موجود در آرایه source فایل PKGBUILD را به توی ان دایرکتوری اکسترکت کرده یا لینک نرم (symlink) خواهد داد.

pkgdir

این متغیر به دایرکتوری‌ای اشاره می‌کند که makepkg بسته نصبی را در آنجا بسته می‌کند ( که به دایرکتوری ریشه بسته درحال ساخت تبدیل می‌شود).

... ادامه دارد.