'\" t .\" Title: makepkg-template .\" Author: [بخش "نویسندگان" را ببینید] .\" Generator: DocBook XSL Stylesheets vsnapshot .\" Date: 2026-05-06 .\" Manual: راهنمای Pacman .\" Source: Pacman 7.1.0 .\" Language: Persian .\" .TH "MAKEPKG\-TEMPLATE" "1" "2026\-05\-06" "Pacman 7\&.1\&.0" "راهنمای Pacman" .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH "نام (NAME)" makepkg-template \- ابزار الگوسازی برای ساخت بسته .SH "خلاصه دستور (SYNOPSIS)" .sp \fImakepkg\-template\fR [options] .SH "توضیحات (DESCRIPTION)" .sp \fImakepkg\-template\fR اسکریپتی برای آسان‌تر کردن نگه‌داری چندین فایل PKGBUILD مشابه است\&. این ابزار به شما امکان می‌دهد بیشتر کدهای PKGBUILD را به یک فایل الگو (template) منتقل کنید و با استفاده از نشانگرها (markers)، در صورت تغییر الگو، امکان به‌روزرسانی درجا (in\-place) فایل‌های PKGBUILD موجود را فراهم می‌سازد\&. .sp فایل‌های الگو می‌توانند شامل هر کدی باشند که در یک PKGBUILD مجاز است\&. می‌توانید آنها را مانند فایل‌های خارجی در نظر بگیرید که با "\&." یا "source" گنجانده می‌شوند، اما این فایل‌ها توسط \fImakepkg\-template\fR درون خود PKGBUILD جای‌گذاری (inline) می‌شوند تا هنگام ساخت بسته، نیازی به فایل الگو نداشته باشید\&. .sp نشانگرها کامنت‌های بش (bash) به شکل زیر هستند: .sp .if n \{\ .RS 4 .\} .nf # template start; key=value; key2=value2; \&.\&.\&. .fi .if n \{\ .RE .\} .sp و .sp .if n \{\ .RS 4 .\} .nf # template end; .fi .if n \{\ .RE .\} .sp کلیدهایی که در حال حاضر استفاده می‌شوند عبارتند از: name (اجباری) و version\&. نام‌های الگو محدود به نویسه‌های الفبایی\-عددی، "@"، "+"، "\&."، "\-" و "_" هستند\&. نسخه‌ها نیز تنها به اعداد و "\&." محدود می‌شوند\&. .sp برای ایجاد اولیه، یک میان‌بر تک‌خطی وجود دارد که نیازی به نشانگر پایانی ندارد: .sp .if n \{\ .RS 4 .\} .nf # template input; key=value; .fi .if n \{\ .RE .\} .sp استفاده از این میان‌بر باعث می‌شود \fImakepkg\-template\fR در اولین اجرا، آن را با نشانگرهای آغاز و پایان و کدهای الگو جایگزین کند\&. .sp فایل‌های الگو باید در یک شاخه ذخیره شوند و نام فایل‌ها باید به صورت "$template_name\-$version\&.template" باشد و یک پیوند نمادین (symlink) به نام "$template_name\&.template" به جدیدترین الگو اشاره کند\&. اگر نسخه در نشانگر مشخص نشده باشد، \fImakepkg\-template\fR به‌طور خودکار از مقصدِ "$template_name\&.template" استفاده می‌کند، در غیر این صورت نسخه مشخص‌شده استفاده خواهد شد\&. این امر در صورتی که به الگو اعتماد داشته باشید، راستی‌آزمایی فایل‌های PKGBUILD غیرقابل‌اعتماد را آسان‌تر می‌کند\&. شما کدهای غیرالگو را بررسی می‌کنید و سپس دستوری شبیه به این را اجرا می‌نمایید: .sp .if n \{\ .RS 4 .\} .nf diff \-u <(makepkg\-template \-o \-) PKGBUILD .fi .if n \{\ .RE .\} .sp فایل‌های الگو همچنین ممکن است شامل نشانگرهایی باشند که منجر به الگوهای تودرتو در PKGBUILD حاصل شوند\&. اگر در یک الگو از نشانگرها استفاده می‌کنید، لطفاً نسخه‌ای را که با آن استفاده/آزمایش کرده‌اید در نشانگر start/input تعیین کنید تا دیگران بتوانند به‌درستی آن را از روی الگوها بازسازی کنند\&. .SH "گزینه‌ها (OPTIONS)" .PP \fB\-p, \-\-input\fR .RS 4 خواندن اسکریپت ساخت build script به جای مقدار پیش‌فرض\&. .RE .PP \fB\-o, \-\-output\fR .RS 4 نوشتن فایل به‌روزشده در build script به جای بازنویسی روی فایل ورودی\&. .RE .PP \fB\-n, \-\-newest\fR .RS 4 همیشه از جدیدترین فایل الگوی موجود استفاده شود\&. .RE .PP \fB\-\-template\-dir\fR .RS 4 تغییر شاخه‌ای که در آن به دنبال فایل‌های الگو می‌گردیم\&. این گزینه می‌تواند چندین بار مشخص شود که در این صورت فایل‌های یافت‌شده در شاخه‌ای که در آخر ذکر شده باشد اولویت خواهند داشت\&. .RE .SH "مثال PKGBUILD (EXAMPLE PKGBUILD)" .sp .if n \{\ .RS 4 .\} .nf pkgname=perl\-config\-simple pkgver=4\&.58 pkgrel=1 pkgdesc="simple configuration file class" arch=(\*(Aqany\*(Aq) license=(\*(AqPerlArtistic\*(Aq \*(AqGPL\*(Aq) depends=(\*(Aqperl\*(Aq) source=("http://search\&.cpan\&.org/CPAN/authors/id/S/SH/SHERZODR/Config\-Simple\-${pkgver}\&.tar\&.gz") sha256sums=(\*(Aqdd9995706f0f9384a15ccffe116c3b6e22f42ba2e58d8f24ed03c4a0e386edb4\*(Aq) _distname="Config\-Simple" .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf # template start; name=perl\-module; version=1\&.0; _distdir="${_distname}\-${pkgver}" url="https://metacpan\&.org/release/${_distname}" options+=(\*(Aq!emptydirs\*(Aq) .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf build() { cd "$srcdir/$_distdir" perl Makefile\&.PL INSTALLDIRS=vendor make } .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf check() { cd "$srcdir/$_distdir" make test } .fi .if n \{\ .RE .\} .sp .if n \{\ .RS 4 .\} .nf package() { cd "$srcdir/$_distdir" make DESTDIR="$pkgdir" install } # template end; .fi .if n \{\ .RE .\} .SH "همچنین ببینید (SEE ALSO)" .sp \fBmakepkg\fR(8), \fBPKGBUILD\fR(5) .sp برای اطلاعات به‌روز در مورد pacman و ابزارهای مرتبط با آن، به وبگاه pacman در https://archlinux\&.org/pacman مراجعه کنید\&. .SH "اشکالات (BUGS)" .sp باگ؟ حتماً شوخی می‌کنید؛ هیچ باگی در این نرم‌افزار وجود ندارد\&. اما اگر احیاناً اشتباه کرده باشیم، لطفاً آن‌ها را با اطلاعات مشخصی مانند خط فرمان، ماهیت باگ و حتی پایگاه داده بسته در صورت امکان، در سامانه ردیابی مشکلات در https://gitlab\&.archlinux\&.org/pacman/pacman/\-/issues گزارش دهید\&. .SH "نویسندگان (AUTHORS)" .sp نگه‌دارندگان فعلی: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Allan McRae .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Andrew Gregory .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Morgan Adamiec .RE .sp مشارکت‌کنندگان عمده پیشین: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Judd Vinet .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Aurelien Foret .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Aaron Griffin .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Dan McGee .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Xavier Chantry .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Nagy Gabor .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Dave Reisner .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} Eli Schwartz .RE .sp برای مشارکت‌کنندگان دیگر، از git shortlog \-s روی مخزن pacman\&.git استفاده کنید\&.