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
--noarchive
عدم
ایجاد
آرشیو در
پایان
فرآیند
ساخت. این
گزینه
میتواند
برای
آزمایش
تابع ()package یا در
صورتی که
توزیع مقصد
شما از pacman
استفاده
نمیکند
مفید باشد.
--nocheck
عدم
اجرای تابع
()check در PKGBUILD یا عدم
رسیدگی به
checkdepends.
--noprepare
عدم
اجرای تابع
()prepare در PKGBUILD.
--sign
--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
مشخصشده
وجود ندارد
یا امضای
بسته با
شکست مواجه
شد.
باگ؟
حتماً شوخی
میکنید؛
هیچ باگی در
این
نرمافزار
وجود ندارد.
اما اگر
احیاناً
اشتباه
کرده
باشیم، یک
گزارش باگ
با بیشترین
جزئیات
ممکن در بخش
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
استفاده
کنید.