MAKEPKG(8) راهنمای Pacman MAKEPKG(8)

makepkg - ابزار ساخت بسته

makepkg [options] [ENVVAR=value] [ENVVAR+=value] ...

دستور makepkg اسکریپتی برای خودکارسازی ساخت بسته‌ها است. نیازمندی‌های استفاده از این اسکریپت، یک بستر nix* با قابلیت ساخت بسته و یک اسکریپت ساخت سفارشی برای هر بسته‌ای است که می‌خواهید بسازید (شناخته‌شده با عنوان PKGBUILD). برای جزئیات مربوط به نحوه ایجاد اسکریپت‌های ساخت خود، PKGBUILD(5) را ببینید.

مزیت ساخت بر پایه اسکریپت این است که کار تنها یک‌بار انجام می‌شود. هنگامی که اسکریپت ساخت یک بسته را داشته باشید، makepkg باقی کارها را انجام خواهد داد: دانلود و اعتبارسنجی فایل‌های منبع، بررسی وابستگی‌ها، پیکربندی تنظیمات زمان ساخت، ساخت بسته، نصب بسته درون یک ریشه موقت، اعمال سفارشی‌سازی‌ها، تولید فراداده (meta-info)، و بسته‌بندی کل مجموعه جهت استفاده pacman.


نکته

makepkg به‌طور پیش‌فرض از لوکال (locale) کنونی شما استفاده می‌کند و هنگام ساخت بسته‌ها آن را لغو نمی‌کند. اگر می‌خواهید خروجی ساخت خود را هنگام درخواست کمک یا برای اهداف دیگر با دیگران به اشتراک بگذارید، شاید مایل باشید دستور "LC_ALL=C makepkg" را اجرا کنید تا گزارش‌ها و خروجی شما محلی‌سازی نشوند.

-A, --ignorearch

نادیده گرفتن فیلد معماری (arch) ناقص یا ناموجود در اسکریپت ساخت. این گزینه برای بازسازی بسته‌ها از سورس در مواردی است که PKGBUILD ممکن است کمی قدیمی باشد و با فیلد arch=('yourarch') به‌روزرسانی نشده باشد.

-c, --clean

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

--config <file>

استفاده از یک فایل پیکربندی جایگزین به‌جای پیش‌فرض /etc/makepkg.conf.

-d, --nodeps

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

-e, --noextract

عدم استخراج فایل‌های منبع یا عدم اجرای تابع ()prepare (در صورت وجود)؛ استفاده از هرگونه منبعی که هم‌اکنون در دایرکتوری $srcdir/ موجود است. این گزینه زمانی کاربردی است که بخواهید وارد $srcdir/ شده و کد را به‌صورت دستی وصله (patch) یا دستکاری کنید، سپس از نتیجه یک بسته بسازید. به یاد داشته باشید که ساخت یک وصله ممکن است راه‌حل بهتری باشد تا به دیگران نیز اجازه دهد از PKGBUILD شما استفاده کنند.

--verifysource

برای هر فایل منبع در آرایه source در PKGBUILD، در صورت نیاز فایل را دانلود کرده و بررسی‌های صحت و یکپارچگی را انجام می‌دهد. هیچ‌گونه استخراج یا ساختی انجام نمی‌شود. وابستگی‌های مشخص‌شده در PKGBUILD مدیریت نخواهند شد مگر اینکه از --syncdeps استفاده شود. برای انجام ساخت‌های آفلاین بعدی بسیار مفید است.

-f, --force

اگر یک بسته ساخته‌شده از قبل در دایرکتوری PKGDEST (تنظیم‌شده در makepkg.conf(5)) وجود داشته باشد، که ممکن است پیش‌فرض آن دایرکتوری جاری باشد، makepkg بسته‌ای نخواهد ساخت. این گزینه امکان رونویسی روی بسته ساخته‌شده را فراهم می‌کند.

-g, --geninteg

برای هر فایل منبع در آرایه source از PKGBUILD، فایل را در صورت نیاز دانلود کرده و بررسی‌های یکپارچگی را تولید می‌کند. بررسی‌های یکپارچگیِ تولیدشده توسط بررسی‌های موجود در PKGBUILD تعیین می‌شوند، و در صورت عدم وجود آن‌ها، به مقدار آرایه INTEGRITY_CHECK در makepkg.conf(5) رجوع می‌شود. این خروجی می‌تواند با استفاده از دستور "makepkg -g >> PKGBUILD" برای اعتبارسنجی منبع به درون PKGBUILD شما هدایت شود.

--skipinteg

عدم انجام هرگونه بررسی یکپارچگی (چک‌سام و PGP) روی فایل‌های منبع.

--skipchecksums

عدم اعتبارسنجی چک‌سام‌های فایل‌های منبع.

--skippgpcheck

عدم بررسی امضاهای PGP فایل‌های منبع.

-h, --help

نمایش نحو و گزینه‌های خط فرمان.

--holdver

هنگام استفاده از منابع VCS (PKGBUILD(5))، هیچ‌کدام از سورس‌های دریافت‌شده فعلی به آخرین بازبینی به‌روزرسانی نخواهند شد.

-i, --install

نصب یا ارتقای بسته پس از یک ساخت موفق با استفاده از pacman(8).

-L, --log

فعال‌سازی ثبت وقایع (لاگین)؛ این گزینه از برنامه tee برای ارسال خروجی هر یک از توابع PKGBUILD هم به کنسول و هم به یک فایل متنی در دایرکتوری ساخت با نام pkgbase-pkgver-pkgrel-arch-<function>.log استفاده می‌کند. همان‌طور که در بالا ذکر شد، لاگ‌ها محلی‌سازی خواهند شد، بنابراین اگر می‌خواهید خروجی لاگ را با دیگران به اشتراک بگذارید، بهتر است لوکال خود را متناسب با آن تنظیم کنید.

-m, --nocolor

غیرفعال کردن رنگ در پیام‌های خروجی.

-o, --nobuild

دانلود و استخراج فایل‌ها، اجرای تابع ()prepare، اما عدم ساخت آن‌ها. همراه با گزینه --noextract زمانی مفید است که بخواهید فایل‌ها را در $srcdir/ پیش از ساخت دستکاری کنید.

-p <buildscript>

خواندن اسکریپت بسته buildscript به‌جای مقدار پیش‌فرض PKGBUILD؛ ببینید PKGBUILD(5). فایل buildscript باید در دایرکتوری‌ای قرار داشته باشد که makepkg از آنجا فراخوانی می‌شود.

-r, --rmdeps

پس از ساخت موفقیت‌آمیز، هرگونه وابستگی نصب‌شده توسط makepkg در طول حل خودکار و نصب وابستگی‌ها با -s را حذف می‌کند.

-R, --repackage

بسته‌بندی مجدد محتویات بسته بدون ساخت مجدد بسته. این گزینه زمانی مفید است که برای مثال، یک وابستگی یا فایل نصب را در PKGBUILD خود فراموش کرده باشید و خودِ ساخت تغییری نکند.

-s, --syncdeps

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

-S, --source

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

-V, --version

نمایش اطلاعات نسخه.

-C, --cleanbuild

حذف دایرکتوری $srcdir پیش از ساخت بسته.

--allsource

بسته را در عمل نمی‌سازد، بلکه یک تاربال منبع‌محور می‌سازد که شامل همه منابع، از جمله آن‌هایی که معمولاً از طریق makepkg دانلود می‌شوند، است. این گزینه برای ارسال یک تاربال یکتا به برنامه‌ای دیگر نظیر chroot یا سازنده راه دور کاربرد دارد. همچنین الزامات پروانه GPL را هنگام توزیع بسته‌های باینری برآورده می‌سازد.

--check

اجرای تابع ()check در PKGBUILD، با بازنویسی تنظیمات در makepkg.conf(5).

--noarchive

عدم ایجاد آرشیو در پایان فرآیند ساخت. این گزینه می‌تواند برای آزمایش تابع ()package یا در صورتی که توزیع مقصد شما از pacman استفاده نمی‌کند مفید باشد.

--nocheck

عدم اجرای تابع ()check در PKGBUILD یا عدم رسیدگی به checkdepends.

--noprepare

عدم اجرای تابع ()prepare در PKGBUILD.

--sign

امضای بسته حاصل با gpg، با نادیده گرفتن تنظیمات در makepkg.conf(5).

--nosign

عدم ایجاد امضا برای بسته ساخته‌شده.

--key <key>

مشخص کردن کلیدی برای استفاده هنگام امضای بسته‌ها، با نادیده گرفتن تنظیمات GPGKEY در makepkg.conf(5). اگر در هیچ‌کدام مشخص نشده باشد، از کلید پیش‌فرض دسته‌کلید (keyring) استفاده خواهد شد.

--noconfirm

(ارسال‌شده به pacman) جلوگیری از انتظار pacman برای ورودی کاربر پیش از ادامه عملیات.

--needed

(ارسال‌شده به pacman) دستور به pacman برای نصب نکردن مجدد هدفی که از قبل به‌روز است. (استفاده‌شده به همراه -i / --install).

--asdeps

(ارسال‌شده به pacman) نصب بسته‌ها به‌عنوان وابستگی (نصب غیرصریح) (استفاده‌شده به همراه -i / --install).

--noprogressbar

(ارسال‌شده به pacman) جلوگیری از نمایش نوار پیشرفت توسط pacman؛ زمانی مفید است که خروجی makepkg را به یک فایل هدایت می‌کنید.

--packagelist

فهرست کردن نام فایل‌های بسته‌ای که بدون ساخت تولید می‌شوند. نام فایل‌های بسته فهرست‌شده شامل PKGDEST و PKGEXT هستند.

--printsrcinfo

تولید و چاپ فایل SRCINFO در خروجی استاندارد (stdout).

ابزار makepkg از ساخت نسخه‌های توسعه بسته‌ها بدون نیاز به به‌روزرسانی دستی pkgver در PKGBUILD پشتیبانی می‌کند. این کار قبلاً با استفاده از ابزار جداگانه versionpkg انجام می‌شد. برای جزئیات در مورد نحوه راه‌اندازی یک PKGBUILD توسعه، PKGBUILD(5) را ببینید.

ابزار makepkg طوری طراحی شده است که با ساخت‌های تکرارپذیر (Reproducible Builds) سازگار باشد. اگر متغیر محیطی SOURCE_DATE_EPOCH تنظیم شده باشد، به زیرفرآیندها منتقل می‌شود، و زمان‌های تغییر فایل‌های منبع و بسته و همچنین فراداده بسته بر اساس برچسب زمانی مشخص‌شده یکسان‌سازی می‌شوند.

اگر متغیر محیطی SOURCE_DATE_EPOCH تنظیم نشده باشد، makepkg از تاریخ شروع خود برای استفاده داخلی بهره می‌برد، اما زمان فایل‌های منبع را پیش از ساخت یکسان‌سازی نمی‌کند.

PACMAN

دستوری که برای بررسی وابستگی‌های مفقود و نصب یا حذف بسته‌ها استفاده خواهد شد. عملیات‌های -Qq، -Rns، -S، -T، و -U در pacman باید توسط این دستور پشتیبانی شوند. اگر این متغیر تنظیم نشده یا خالی باشد، makepkg به ‘pacman’ بازمی‌گردد.

MAKEPKG_CONF="/path/to/file"

استفاده از یک فایل پیکربندی جایگزین به‌جای پیش‌فرض /etc/makepkg.conf.

PKGDEST="/path/to/directory"

دایرکتوری که بسته‌های حاصل در آن ذخیره خواهند شد. مقدار متناظر تعریف‌شده در makepkg.conf(5) را نادیده می‌گیرد.

SRCDEST="/path/to/directory"

دایرکتوری که منابع دانلودشده در آن ذخیره خواهند شد. مقدار متناظر تعریف‌شده در makepkg.conf(5) را نادیده می‌گیرد.

SRCPKGDEST="/path/to/directory"

دایرکتوری که فایل‌های بسته منبع در آن ذخیره خواهند شد. مقدار متناظر تعریف‌شده در makepkg.conf(5) را نادیده می‌گیرد.

LOGDEST="/path/to/directory"

دایرکتوری که فایل‌های لاگ تولیدشده در آن ذخیره خواهند شد. مقدار متناظر تعریف‌شده در makepkg.conf(5) را نادیده می‌گیرد.

PACKAGER="John Doe <john@doe.com>"

رشته‌ای برای شناسایی ایجادکننده بسته حاصل. مقدار متناظر تعریف‌شده در makepkg.conf(5) را نادیده می‌گیرد.

BUILDDIR="/path/to/directory"

دایرکتوری که بسته در آن ساخته خواهد شد. مقدار متناظر تعریف‌شده در makepkg.conf(5) را نادیده می‌گیرد.

CARCH="(i686|x86_64)"

اجبار به ساخت برای یک معماری خاص. مناسب برای کامپایل متقاطع (cross-compiling). مقدار متناظر تعریف‌شده در makepkg.conf(5) را نادیده می‌گیرد.

PKGEXT=".pkg.tar.gz", SRCEXT=".src.tar.gz"

فشرده‌سازی مورد استفاده هنگام ساخت بسته‌های کامپایل‌شده یا منبع را تعیین می‌کند. مقدار متناظر تعریف‌شده در makepkg.conf(5) را نادیده می‌گیرد.

GNUPGHOME="/path/to/directory"

دایرکتوری که دسته‌کلید gpg برای امضای بسته ساخته‌شده در آن ذخیره می‌شود.

GPGKEY="keyid"

مشخص کردن کلیدی برای استفاده هنگام امضای بسته‌ها، با نادیده گرفتن مقدار تنظیم GPGKEY در makepkg.conf(5).

SOURCE_DATE_EPOCH="<date>"

استفاده‌شده برای ساخت‌های تکرارپذیر (Reproducible Builds).

BUILDTOOL="<name>"

نام زیست‌بوم ابزاری که برای راه‌اندازی محیط ساخت استفاده می‌شود. برای تعریف یک مشخصه برای ساخت‌های تکرارپذیر استفاده می‌شود، مانند makepkg.conf(5) استفاده‌شده.

BUILDTOOLVER="<version>"

نسخه $BUILDTOOL استفاده‌شده.

برای جزئیات بیشتر در مورد پیکربندی makepkg با استفاده از فایل makepkg.conf، makepkg.conf(5) را ببینید.

در هنگام خروج، makepkg یکی از کدهای خطای زیر را برمی‌گرداند.

0

شرایط خروج عادی (موفقیت‌آمیز).

1

علت ناشناخته شکست.

2

خطا در فایل پیکربندی.

3

کاربر گزینه‌ای نامعتبر را مشخص کرده است.

4

خطا در تابع ارائه‌شده توسط کاربر در PKGBUILD.

5

عدم موفقیت در ایجاد یک بسته قابل استفاده.

6

یک فایل منبع یا کمکی مشخص‌شده در PKGBUILD مفقود است.

7

پوشه PKGDIR مفقود است.

8

عدم موفقیت در نصب وابستگی‌ها.

9

عدم موفقیت در حذف وابستگی‌ها.

10

کاربر تلاش کرده است makepkg را به‌عنوان کاربر ریشه (root) اجرا کند.

11

کاربر فاقد مجوزهای لازم برای ساخت یا نصب در مکان مشخص‌شده است.

12

خطا در تجزیه (parse) کردن PKGBUILD.

13

یک بسته از قبل ساخته شده است.

14

بسته در نصب با شکست مواجه شد.

15

برنامه‌های ضروری برای اجرای makepkg مفقود هستند.

16

کلید GPG مشخص‌شده وجود ندارد یا امضای بسته با شکست مواجه شد.

makepkg.conf(5), PKGBUILD(5), pacman(8)

برای اطلاعات جاری در مورد pacman و ابزارهای مرتبط با آن، به وبگاه pacman در https://archlinux.org/pacman/ مراجعه کنید.

باگ؟ حتماً شوخی می‌کنید؛ هیچ باگی در این نرم‌افزار وجود ندارد. اما اگر احیاناً اشتباه کرده باشیم، یک گزارش باگ با بیشترین جزئیات ممکن در بخش Pacman در سامانه ردیابی باگ Arch Linux ثبت کنید.

نگه‌دارندگان فعلی:

•Allan McRae <allan@archlinux.org>
•Andrew Gregory <andrew.gregory.8@gmail.com>
•Eli Schwartz <eschwartz@archlinux.org>
•Morgan Adamiec <morganamilo@archlinux.org>

مشارکت‌کنندگان عمده پیشین:

•Judd Vinet <jvinet@zeroflux.org>
•Aurelien Foret <aurelien@archlinux.org>
•Aaron Griffin <aaron@archlinux.org>
•Dan McGee <dan@archlinux.org>
•Xavier Chantry <shiningxc@gmail.com>
•Nagy Gabor <ngaba@bibl.u-szeged.hu>
•Dave Reisner <dreisner@archlinux.org>

برای مشارکت‌کنندگان دیگر، از git shortlog -s روی مخزن pacman.git استفاده کنید.

2022-11-21 Pacman 6.0.2