MAKEPKG-TEMPLATE(1) راهنمای Pacman MAKEPKG-TEMPLATE(1)

makepkg-template - ابزار الگوسازی برای ساخت بسته

makepkg-template [options]

makepkg-template اسکریپتی برای آسان‌تر کردن نگه‌داری چندین فایل PKGBUILD مشابه است. این ابزار به شما امکان می‌دهد بیشتر کدهای PKGBUILD را به یک فایل الگو (template) منتقل کنید و با استفاده از نشانگرها (markers)، در صورت تغییر الگو، امکان به‌روزرسانی درجا (in-place) فایل‌های PKGBUILD موجود را فراهم می‌سازد.

فایل‌های الگو می‌توانند شامل هر کدی باشند که در یک PKGBUILD مجاز است. می‌توانید آنها را مانند فایل‌های خارجی در نظر بگیرید که با "." یا "source" گنجانده می‌شوند، اما این فایل‌ها توسط makepkg-template درون خود PKGBUILD جای‌گذاری (inline) می‌شوند تا هنگام ساخت بسته، نیازی به فایل الگو نداشته باشید.

نشانگرها کامنت‌های بش (bash) به شکل زیر هستند:

# template start; key=value; key2=value2; ...

و

# template end;

کلیدهایی که در حال حاضر استفاده می‌شوند عبارتند از: name (اجباری) و version. نام‌های الگو محدود به نویسه‌های الفبایی-عددی، "@"، "+"، "."، "-" و "_" هستند. نسخه‌ها نیز تنها به اعداد و "." محدود می‌شوند.

برای ایجاد اولیه، یک میان‌بر تک‌خطی وجود دارد که نیازی به نشانگر پایانی ندارد:

# template input; key=value;

استفاده از این میان‌بر باعث می‌شود makepkg-template در اولین اجرا، آن را با نشانگرهای آغاز و پایان و کدهای الگو جایگزین کند.

فایل‌های الگو باید در یک شاخه ذخیره شوند و نام فایل‌ها باید به صورت "$template_name-$version.template" باشد و یک پیوند نمادین (symlink) به نام "$template_name.template" به جدیدترین الگو اشاره کند. اگر نسخه در نشانگر مشخص نشده باشد، makepkg-template به‌طور خودکار از مقصدِ "$template_name.template" استفاده می‌کند، در غیر این صورت نسخه مشخص‌شده استفاده خواهد شد. این امر در صورتی که به الگو اعتماد داشته باشید، راستی‌آزمایی فایل‌های PKGBUILD غیرقابل‌اعتماد را آسان‌تر می‌کند. شما کدهای غیرالگو را بررسی می‌کنید و سپس دستوری شبیه به این را اجرا می‌نمایید:

diff -u <(makepkg-template -o -) PKGBUILD

فایل‌های الگو همچنین ممکن است شامل نشانگرهایی باشند که منجر به الگوهای تودرتو در PKGBUILD حاصل شوند. اگر در یک الگو از نشانگرها استفاده می‌کنید، لطفاً نسخه‌ای را که با آن استفاده/آزمایش کرده‌اید در نشانگر start/input تعیین کنید تا دیگران بتوانند به‌درستی آن را از روی الگوها بازسازی کنند.

-p, --input <build script>

خواندن اسکریپت ساخت build script به جای مقدار پیش‌فرض.

-o, --output <build script>

نوشتن فایل به‌روزشده در build script به جای بازنویسی روی فایل ورودی.

-n, --newest

همیشه از جدیدترین فایل الگوی موجود استفاده شود.

--template-dir <dir>

تغییر شاخه‌ای که در آن به دنبال فایل‌های الگو می‌گردیم. این گزینه می‌تواند چندین بار مشخص شود که در این صورت فایل‌های یافت‌شده در شاخه‌ای که در آخر ذکر شده باشد اولویت خواهند داشت.

pkgname=perl-config-simple
pkgver=4.58
pkgrel=1
pkgdesc="simple configuration file class"
arch=('any')
license=('PerlArtistic' 'GPL')
depends=('perl')
source=("http://search.cpan.org/CPAN/authors/id/S/SH/SHERZODR/Config-Simple-${pkgver}.tar.gz")
sha256sums=('dd9995706f0f9384a15ccffe116c3b6e22f42ba2e58d8f24ed03c4a0e386edb4')
_distname="Config-Simple"
# template start; name=perl-module; version=1.0;
_distdir="${_distname}-${pkgver}"
url="https://metacpan.org/release/${_distname}"
options+=('!emptydirs')
build() {
        cd "$srcdir/$_distdir"
        perl Makefile.PL INSTALLDIRS=vendor
        make
}
check() {
        cd "$srcdir/$_distdir"
        make test
}
package() {
        cd "$srcdir/$_distdir"
        make DESTDIR="$pkgdir" install
}
# template end;

makepkg(8), PKGBUILD(5)

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

باگ؟ حتماً شوخی می‌کنید؛ هیچ باگی در این نرم‌افزار وجود ندارد. اما اگر احیاناً اشتباه کرده باشیم، لطفاً آن‌ها را با اطلاعات مشخصی مانند خط فرمان، ماهیت باگ و حتی پایگاه داده بسته در صورت امکان، در سامانه ردیابی مشکلات در https://gitlab.archlinux.org/pacman/pacman/-/issues گزارش دهید.

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

•Allan McRae <allan@archlinux.org>
•Andrew Gregory <andrew.gregory.8@gmail.com>
•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>
•Eli Schwartz <eschwartz@archlinux.org>

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

2026-05-06 Pacman 7.1.0