SRCINFO(5) راهنمای فایل‌های پیکربندی SRCINFO(5)

SRCINFO - اطلاعات مربوط به منابع بسته‌های مبتنی بر ALPM

قالب SRCINFO یک قالب متنی است که متادیتای منبع بسته را توصیف می‌کند. این فایل‌ها .SRCINFO نامیده می‌شوند و در ریشه مخازن سورس که بسته‌های مبتنی بر ALPM از آن‌ها ساخته می‌شوند، قرار دارند. آن‌ها از فایل‌های PKGBUILD ایجاد می‌شوند تا در سناریوهایی که استفاده از bash امکان‌پذیر نیست، تجزیه امن متادیتا را ممکن سازند. قالب SRCINFO توسط برنامه‌هایی مانند نرم‌افزارهای مدیریت مخزن و رابط‌های کاربری وب سفارشی برای ارزیابی و نمایش اطلاعات منبع بسته‌ها استفاده می‌شود.

یک فایل SRCINFO شامل مجموعه‌ای از خطوط است که هر کدام اطلاعاتی را در مورد جنبه‌ای از منابع یک یا چند بسته ارائه می‌دهند (برای اطلاعات درباره بسته‌های تفکیک‌شده alpm-split-package را ببینید). خطوطی که با علامت ‘#’ شروع می‌شوند به عنوان توضیح (کامنت) در نظر گرفته شده و همیشه نادیده گرفته می‌شوند. خطوط خالی همیشه نادیده گرفته می‌شوند. فاصله‌های خالی ابتدای خطوط همیشه نادیده گرفته می‌شوند.

مگر در مواردی که خلاف آن ذکر شده باشد، اطلاعات موجود در یک فایل SRCINFO پوشش‌داده‌شده توسط مجموعه‌ای از ۹۵ نویسه اسکی قابل چاپ[1] در نظر گرفته می‌شود.

این قالب فایل بین سرایند بخش‌ها (که بخش‌های مشخصی را معرفی می‌کنند) و انتساب کلیدواژه‌ها که در آن بخش‌ها قابل استفاده هستند، تمایز قائل می‌شود. هر خط اطلاعاتی را کدگذاری می‌کند که یا بیانگر یک سرایند بخش است یا یک انتساب کلیدواژه.

قالب SRCINFO نیازمند تعریف یک بخش منفرد pkgbase و یک یا چند بخش pkgname است. در حالی که بخش pkgbase شامل متادیتای مشترک بین تمام بسته‌های ساخته‌شده از یک PKGBUILD است، بخش‌های pkgname برای اعلان متادیتای بسته و ارائه جایگزینی‌ها (overrides) به کار می‌روند که مختص هر بسته مربوطه است.

تمامی سرایندهای بخش شامل یک کلید هستند که بلافاصله با یک فاصله خالی، یک علامت ‘=’، یک فاصله خالی دیگر و یک مقدار دنبال می‌شود.

سرایند بخش برای یک بخش pkgbase باید از کلمه ‘pkgbase’ به عنوان کلید و یک alpm-package-base به عنوان مقدار استفاده کند. دقیقاً یک چنین سرایند بخشی باید در ابتدای یک فایل SRCINFO وجود داشته باشد.

سرایند بخش برای یک بخش pkgname باید از کلمه ‘pkgname’ به عنوان کلید و یک alpm-package-name به عنوان مقدار استفاده کند. حداقل یک چنین سرایند بخشی باید در یک فایل SRCINFO (یکی به ازای هر بسته ساخته‌شده از یک PKGBUILD) وجود داشته باشد، اما فقط پس از سرایند بخش pkgbase.

بخش pkgbase باید حداقل شامل انتساب‌هایی برای کلیدواژه‌های pkgver و pkgrel باشد، و در غیر این صورت می‌تواند شامل تمامی انتساب‌های کلیدواژه شناخته‌شده دیگر نیز باشد. انتساب‌های کلیدواژه موجود در این بخش، بر تمامی بخش‌های pkgname نیز اعمال می‌شوند.

یک بخش pkgname ممکن است صفر یا چند انتساب کلیدواژه داشته باشد. این بخش نباید شامل انتساب‌هایی برای کلیدواژه‌های epoch، pkgver، pkgrel، یا validpgpkeys باشد، و همچنین نباید شامل هیچ انتساب کلیدواژه‌ای باشد که اعلان‌های وابستگی ساخت یا آزمایش (برای جزئیات alpm-package-relation را ببینید)، اعلان‌های منبع (برای جزئیات alpm-package-source را ببینید) یا اعلان‌های مجموع مقابله‌ای (checksum) (برای جزئیات alpm-package-source-checksum را ببینید) را نشان می‌دهند. انتساب‌های کلیدواژه در یک بخش pkgname تنها بر بسته خاصی که آن بخش توصیف می‌کند اعمال می‌شوند. به طور دقیق‌تر، تمامی انتساب‌های کلیدواژه در یک بخش pkgname برای لغو، گسترش یا بازنویسی (override) انتساب‌های کلیدواژه موجود در بخش pkgbase استفاده می‌شوند. قوانین زیر اعمال می‌شوند:

•
کلیدواژه‌ای که قبلاً در بخش pkgbase تعریف شده است و ممکن است در یک بخش pkgname استفاده شود، می‌تواند
  • با انتساب یک مقدار خالی لغو شود (به عنوان مثال بخش pkgbase مقدار depends = bash را تعریف می‌کند و بخش pkgname مقدار depends = را تعریف می‌کند)، یا
  • با تعریف مجدد آن بازنویسی شود (به عنوان مثال بخش pkgbase مقدار depends = bash را تعریف می‌کند و بخش pkgname مقدار depends = zsh را تعریف می‌کند).
•
تمامی کلیدواژه‌هایی که اجازه چندین انتساب را می‌دهند و ممکن است در یک بخش pkgname استفاده شوند، می‌توانند ابتدا با افزودن تمامی انتساب‌های کلیدواژه موجود در بخش pkgbase و سپس افزودن انتساب‌های کلیدواژه بیشتر در یک بخش pkgname گسترش یابند (به عنوان مثال بخش pkgbase مقدار depends = bash را تعریف می‌کند و بخش pkgname مقادیر depends = bash و depends = bash-completion را تعریف می‌کند).

بسته به کلیدواژه ممکن است قوانین بیشتری اعمال شود.

تمامی انتساب‌های کلیدواژه به صورت یک کلید از فهرست زیر تعریف می‌شوند که بلافاصله با یک فاصله خالی، یک علامت ‘=’، یک فاصله خالی دیگر و یک مقدار دنبال می‌شود.

به طور پیش‌فرض، دقیقاً یک انتساب کلیدواژه به ازای هر کلیدواژه در یک SRCINFO مجاز است. به عنوان استثنا بر این قاعده، کلیدواژه‌های arch، backup، checkdepends، conflicts، depends، groups، license، makedepends، optdepends، options، provides، replaces، و همچنین کلیدواژه‌های مربوط به منابع شامل noextract، source، validpgpkeys، b2sums، md5sums، sha1sums، sha224sums، sha256sums، sha384sums، sha512sums و cksums می‌توانند صفر یا چند بار ارائه شوند.

به طور پیش‌فرض، انتساب‌های کلیدواژه بر تمام alpm-architectures هدف اعمال می‌شوند. برخی از کلیدواژه‌ها نیز ممکن است به روش‌های مختص معماری با الحاق علامت ‘_’ که بلافاصله با یک alpm-architecture (همه به جز any) دنبال می‌شود، ارائه شوند - برای جزئیات بخش مربوط به هر کلیدواژه را ببینید. این انتساب‌های کلیدواژه مختص معماری تنها بر معماری هدف خود اعمال می‌شوند.

توضیحات بسته. این انتساب کلیدواژه می‌تواند صفر یا یک بار در pkgbase و/یا در هر بخش pkgname ارائه شود. مقدار آن یک رشته UTF-8 با طول صفر یا بیشتر است (مانند A project used for something). توضیحات بسته نباید هیچ فاصله خالی در ابتدا یا انتهای خود داشته باشند، نباید شامل هیچ نویسه فاصله خالی به جز فاصله “ “ باشند و نباید فواصل متوالی داشته باشند.

هیچ قانون خاصی در مورد مقدار وجود ندارد، اما پیشنهاد می‌شود که “کوتاه” باشد و شامل نام بسته نباشد (به alpm-package-name مراجعه کنید).

مؤلفه نسخه بسته pkgver برای بسته(ها) (برای اطلاعات بیشتر در مورد مقدار مورد انتظار به alpm-pkgver مراجعه کنید). این انتساب کلیدواژه باید دقیقاً یک بار و منحصراً در بخش pkgbase ارائه شود.

مقدار آن یک alpm-pkgver است (مانند 1.0.0 یا 1:1.0.0).

مؤلفه نسخه انتشار pkgrel برای بسته(ها) (برای جزئیات بیشتر در مورد مقدار مورد انتظار به alpm-pkgrel مراجعه کنید).

این انتساب کلیدواژه باید دقیقاً یک بار و منحصراً در بخش pkgbase ارائه شود.

مؤلفه اختیاری epoch نسخه بسته برای بسته(ها) (برای جزئیات بیشتر در مورد مقدار مورد انتظار به alpm-epoch مراجعه کنید).

این انتساب کلیدواژه ممکن است صفر یا یک بار و منحصراً در بخش pkgbase ارائه شود.

نشانی اینترنتی (URL) پروژه بسته. این انتساب کلیدواژه ممکن است صفر یا یک بار در pkgbase و/یا در هر بخش pkgname ارائه شود.

مقدار آن یک نشانی اینترنتی معتبر یا یک رشته خالی است (مانند https://example.org).

نام یک alpm-install-scriptlet که برای اقدامات پیش و پس از نصب، ارتقا یا حذف یک بسته استفاده می‌شود. این انتساب کلیدواژه ممکن است صفر یا یک بار در pkgbase و/یا در هر بخش pkgname ارائه شود.

مقدار آن باید یک رشته UTF-8 باشد که نشان‌دهنده یک مسیر نسبی فایل است (مانند scriptlet.install).

نام فایلی که شامل اطلاعات تاریخچه تغییرات (changelog) برای یک بسته است. این انتساب کلیدواژه ممکن است صفر یا یک بار در pkgbase و/یا در هر بخش pkgname ارائه شود.

مقدار آن باید یک رشته UTF-8 باشد که نشان‌دهنده یک مسیر نسبی فایل است (مانند pkg.changelog).

معماری‌ای که برای یک بخش pkgname اعمال می‌شود. این انتساب کلیدواژه ممکن است یک یا چند بار در pkgbase و صفر یا چند بار در هر بخش pkgname ارائه شود.

مقدار آن یک alpm-architecture است (مانند x86_64 یا any). در صورت استفاده چندباره از این کلیدواژه، قوانین زیر اعمال می‌شوند:

  • هر مقدار باید یکتا باشد
  • اگر از مقدار any استفاده شود، هیچ مقدار دیگری نمی‌تواند در کنار آن استفاده شود، زیرا بدین معنی است که یک pkgname ممکن است روی هر معماری استفاده شود (که از نظر منطقی استفاده تنها روی یک معماری خاص را نفی می‌کند)

یک رشته اختیاری که نشان‌دهنده یک گروه در سطح توزیع است که بسته در آن قرار دارد (به alpm-package-group مراجعه کنید). گروه‌ها برای مثال توسط مدیران بسته برای گروه‌بندی بسته‌ها و امکان نصب دسته‌جمعی آن‌ها، یا توسط سایر نرم‌افزارهای مربوط برای نمایش اطلاعات این بسته‌ها استفاده می‌شوند.

این انتساب کلیدواژه می‌تواند صفر یا چند بار در pkgbase و همچنین در هر بخش pkgname ارائه شود. مقدار آن با یک رشته UTF-8 نشان داده می‌شود. اگرچه استفاده از یک رشته UTF-8 امکان‌پذیر است، اما اکیداً توصیه می‌شود به جای آن از قالب alpm-package-name برای مقدار استفاده شود، زیرا مدیران بسته ممکن است از groups برای نصب کل یک گروه از بسته‌ها استفاده کنند.

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

این انتساب کلیدواژه می‌تواند صفر یا چند بار در pkgbase و همچنین در هر بخش pkgname ارائه شود. مقدار آن نشان‌دهنده شناسه مجوز است که یک رشته با طول غیر صفر است (مانند GPL). اگرچه به جز طول آن محدودیت خاصی برای مقدار اعمال نمی‌شود، اما اکیداً توصیه می‌شود که به عبارات مجوز SPDX تکیه کنید (مانند GPL-3.0-or-later یا Apache-2.0 OR MIT). برای اطلاعات بیشتر به فهرست مجوزهای SPDX[5] مراجعه کنید.

وابستگی برای اجرای آزمون‌های پروژه بالادستی (upstream) بسته. یک checkdepends مختص معماری می‌تواند با استفاده از کلیدواژه‌ای متشکل از ‘checkdepends’ که بلافاصله با یک علامت ‘_’ و بلافاصله پس از آن با یک alpm-architecture دنبال می‌شود (همه alpm-architectures به جز any قابل استفاده هستند)، مانند checkdepends_aarch64 مشخص شود.

این انتساب کلیدواژه می‌تواند صفر یا چند بار، منحصراً در بخش pkgbase ارائه شود. مقدار آن یک alpm-package-relation از نوع وابستگی آزمون است (مانند example یا example=1.0.0).

وابستگی زمان ساخت بسته (مؤلفه مجازی یا بسته). یک makedepends مختص معماری می‌تواند با استفاده از کلیدواژه‌ای متشکل از ‘makedepends’ که بلافاصله با یک علامت ‘_’ و بلافاصله پس از آن با یک alpm-architecture دنبال می‌شود (همه alpm-architectures به جز any قابل استفاده هستند)، مانند makedepends_aarch64 مشخص شود.

این انتساب کلیدواژه می‌تواند صفر یا چند بار، منحصراً در بخش pkgbase ارائه شود. مقدار آن یک alpm-package-relation از نوع وابستگی ساخت است (مانند example یا example=1.0.0).

وابستگی زمان اجرای بسته (مؤلفه مجازی یا بسته). یک depends مختص معماری می‌تواند با استفاده از کلیدواژه‌ای متشکل از ‘depends’ که بلافاصله با یک علامت ‘_’ و بلافاصله پس از آن با یک alpm-architecture دنبال می‌شود (همه alpm-architectures به جز any قابل استفاده هستند)، مانند depends_aarch64 مشخص شود.

این انتساب کلیدواژه می‌تواند صفر یا چند بار در pkgbase و همچنین در هر بخش pkgname ارائه شود. مقدار آن یک alpm-package-relation از نوع وابستگی زمان اجرا است (مانند example یا example=1.0.0).

وابستگی اختیاری بسته (مؤلفه مجازی یا بسته). یک optdepends مختص معماری می‌تواند با استفاده از کلیدواژه‌ای متشکل از ‘optdepends’ که بلافاصله با یک علامت ‘_’ و بلافاصله پس از آن با یک alpm-architecture دنبال می‌شود (همه alpm-architectures به جز any قابل استفاده هستند)، مانند optdepends_aarch64 مشخص شود.

این انتساب کلیدواژه می‌تواند صفر یا چند بار در pkgbase و همچنین در هر بخش pkgname ارائه شود. مقدار آن یک alpm-package-relation از نوع وابستگی اختیاری است (مانند example یا example: this is a description).

یک مؤلفه مجازی یا بسته دیگر که این بسته ارائه می‌دهد (تأمین می‌کند). یک provides مختص معماری می‌تواند با استفاده از کلیدواژه‌ای متشکل از ‘provides’ که بلافاصله با یک علامت ‘_’ و بلافاصله پس از آن با یک alpm-architecture دنبال می‌شود (همه alpm-architectures به جز any قابل استفاده هستند)، مانند provides_aarch64 مشخص شود.

این انتساب کلیدواژه می‌تواند صفر یا چند بار در pkgbase و همچنین در هر بخش pkgname ارائه شود. مقدار آن یک alpm-package-relation از نوع تأمین (provision) است (مانند example یا example=1.0.0).

یک مؤلفه مجازی یا بسته دیگر که این بسته با آن تداخل دارد. یک conflicts مختص معماری می‌تواند با استفاده از کلیدواژه‌ای متشکل از ‘conflicts’ که بلافاصله با یک علامت ‘_’ و بلافاصله پس از آن با یک alpm-architecture دنبال می‌شود (همه alpm-architectures به جز any قابل استفاده هستند)، مانند conflicts_aarch64 مشخص شود.

این انتساب کلیدواژه می‌تواند صفر یا چند بار در pkgbase و همچنین در هر بخش pkgname ارائه شود. مقدار آن یک alpm-package-relation از نوع تداخل است (مانند example یا example=1.0.0).

یک مؤلفه مجازی یا بسته دیگر که این بسته هنگام نصب جایگزین آن می‌شود. یک replaces مختص معماری می‌تواند با استفاده از کلیدواژه‌ای متشکل از ‘replaces’ که بلافاصله با یک علامت ‘_’ و بلافاصله پس از آن با یک alpm-architecture دنبال می‌شود (همه alpm-architectures به جز any قابل استفاده هستند)، مانند replaces_aarch64 مشخص شود.

این انتساب کلیدواژه می‌تواند صفر یا چند بار در pkgbase و همچنین در هر بخش pkgname ارائه شود. مقدار آن یک alpm-package-relation از نوع جایگزینی است (مانند example یا example=1.0.0).

نام یک فایل منبع محلی (به alpm-package-source مراجعه کنید) از فایلی که نباید در هنگام ساخت بسته استخراج شود. هر مقدار باید یک نام فایل محلی معتبر از یک انتساب کلیدواژه موجود source را نشان دهد (مانند source = https://example.org/project-1.0.0.tar.gz و noextract = project-1.0.0.tar.gz). فایلی که با نام فایل ارائه شده مطابقت داشته باشد، در طول ساخت بسته به طور خودکار استخراج نمی‌شود، حتی اگر یک فایل فشرده باشد (مانند example.tar.gz یا example.zip).

این انتساب کلیدواژه می‌تواند صفر یا چند بار، منحصراً در بخش pkgbase ارائه شود.

گزینه‌ای که توسط ابزار ساخت بسته (یعنی makepkg؛ گزینه‌های پیش‌فرض در OPTIONS از makepkg.conf تعریف شده‌اند) هنگام ساخت بسته استفاده می‌شود. این انتساب کلیدواژه می‌تواند صفر یا چند بار در بخش pkgbase یا در یک بخش pkgname ارائه شود.

مقدار باید یک کلمه یکتا باشد، که می‌تواند به صورت اختیاری با یک علامت ‘!’ پیشوند شود که نشان‌دهنده نفی گزینه است (مانند debug یا !debug). اگر این انتساب کلیدواژه در یک بخش pkgname استفاده شود، مقدار اولین وقوع ممکن است خالی باشد، که نشان می‌دهد برای بسته مربوطه هیچ یک از options تعریف‌شده در بخش pkgbase اعمال نمی‌شود.

مسیر نسبی فایلی در یک بسته مشخص که نشان‌دهنده فایلی است که مدیر بسته باید در صورت تغییر یا حذف در طول عملیات به‌روزرسانی بسته، نسخه‌های پشتیبان از آن نگه دارد (فایل‌های ‘.pacnew’ و ‘.pacsave’ در pacman را ببینید). این انتساب کلیدواژه می‌تواند صفر یا چند بار در pkgbase و همچنین در هر بخش pkgname ارائه شود. مقدار باید یک مسیر فایل یونیکس نسبی معتبر باشد (مانند etc/package.conf).

یک منبع (از راه دور یا محلی) مورد استفاده در فرآیند بسته‌بندی بسته(ها) (برای جزئیات بیشتر در مورد مقدار مجاز به alpm-package-source مراجعه کنید)، که در صورت فشرده بودن فایل‌ها به طور خودکار استخراج می‌شوند (مگر اینکه یک مقدار noextract مطابق با نام فایل وجود داشته باشد). یک source مختص معماری می‌تواند با استفاده از کلیدواژه‌ای متشکل از ‘source’ که بلافاصله با یک علامت ‘_’ و بلافاصله پس از آن با یک alpm-architecture دنبال می‌شود (همه alpm-architectures به جز any قابل استفاده هستند)، مانند source_aarch64 مشخص شود.

این انتساب کلیدواژه می‌تواند صفر یا چند بار، منحصراً در بخش pkgbase ارائه شود.

یک اثرانگشت OpenPGP[2] که ممکن است برای اعتبارسنجی امضاهای OpenPGP[3] ایجادشده برای یک یا چند alpm-package-sources (یعنی یک انتساب کلیدواژه source) استفاده شود.

این انتساب کلیدواژه می‌تواند صفر یا چند بار، منحصراً در بخش pkgbase ارائه شود. در موارد زیر باید حداقل یک بار استفاده شود:

  • اگر یک مقدار alpm-package-source از قطعه URL با عنوان signed استفاده کند
  • یا اگر یک alpm-package-source با پسوند .sig وجود داشته باشد که معادل منبع دیگری بدون آن پسوند فایل باشد
  • یا اگر یک alpm-package-source با پسوند .sign وجود داشته باشد که با منبع دیگری پس از حذف آن پسوند و تمامی پسوندهای مربوط به الگوریتم‌های فشرده‌سازی (مانند .xz یا .zst) مطابقت داشته باشد

مقدار یک رشته هگزادسیمال با طول ۴۰ نویسه است (مانند 0123456789abcdef0123456789abcdef01234567) که می‌تواند به صورت اختیاری با فاصله‌های خالی از هم جدا شود (مانند 0123 4567 89ab cdef 0123 4567 89ab cdef 0123 4567). اگرچه امکان‌پذیر است، اما استفاده از قالب غیر یکتا و منسوخ شناسه کلید OpenPGP[4] که یک رشته هگزادسیمال ۱۶ نویسه‌ای است (مانند 89abcdef01234567) اکیداً منع می‌شود.

یک خلاصه هش MD5[6] از فایلی که نام آن در یک مقدار source ارائه شده است، یا رشته ویژه ‘SKIP’ (برای جزئیات بیشتر در مورد مقدار مجاز به alpm-package-source-checksum مراجعه کنید). یک md5sums مختص معماری می‌تواند با استفاده از کلیدواژه‌ای متشکل از ‘md5sums’ که بلافاصله با یک علامت ‘_’ و بلافاصله پس از آن با یک alpm-architecture دنبال می‌شود (همه alpm-architectures به جز any قابل استفاده هستند)، مانند md5sums_aarch64 مشخص شود.

این انتساب کلیدواژه می‌تواند صفر یا چند بار، منحصراً در بخش pkgbase ارائه شود. در صورت استفاده، فایل SRCINFO باید به همان تعداد انتساب‌های کلیدواژه source، شامل انتساب‌های کلیدواژه md5sums باشد (همین امر برای گونه مختص معماری این کلیدواژه نیز صدق می‌کند). ترتیب انتساب‌های کلیدواژه source همراه، ترتیب انتساب‌های کلیدواژه md5sums را دیکته می‌کند (یعنی اولین انتساب کلیدواژه md5sums داده‌های مربوط به اولین انتساب کلیدواژه source را ارائه می‌دهد و به همین ترتیب).

یک خلاصه هش SHA-1[7] از فایلی که نام آن در یک مقدار source ارائه شده است، یا رشته ویژه ‘SKIP’ (برای جزئیات بیشتر در مورد مقدار مجاز به alpm-package-source-checksum مراجعه کنید). یک sha1sums مختص معماری می‌تواند با استفاده از کلیدواژه‌ای متشکل از ‘sha1sums’ که بلافاصله با یک علامت ‘_’ و بلافاصله پس از آن با یک alpm-architecture دنبال می‌شود (همه alpm-architectures به جز any قابل استفاده هستند)، مانند sha1sums_aarch64 مشخص شود.

این انتساب کلیدواژه می‌تواند صفر یا چند بار، منحصراً در بخش pkgbase ارائه شود. در صورت استفاده، فایل SRCINFO باید به همان تعداد انتساب‌های کلیدواژه source، شامل انتساب‌های کلیدواژه sha1sums باشد (همین امر برای گونه مختص معماری این کلیدواژه نیز صدق می‌کند). ترتیب انتساب‌های کلیدواژه source همراه، ترتیب انتساب‌های کلیدواژه sha1sums را دیکته می‌کند (یعنی اولین انتساب کلیدواژه sha1sums داده‌های مربوط به اولین انتساب کلیدواژه source را ارائه می‌دهد و به همین ترتیب).

یک خلاصه هش SHA-224[8] از فایلی که نام آن در یک مقدار source ارائه شده است، یا رشته ویژه ‘SKIP’ (برای جزئیات بیشتر در مورد مقدار مجاز به alpm-package-source-checksum مراجعه کنید). یک sha224sums مختص معماری می‌تواند با استفاده از کلیدواژه‌ای متشکل از ‘sha224sums’ که بلافاصله با یک علامت ‘_’ و بلافاصله پس از آن با یک alpm-architecture دنبال می‌شود (همه alpm-architectures به جز any قابل استفاده هستند)، مانند sha224sums_aarch64 مشخص شود.

این انتساب کلیدواژه می‌تواند صفر یا چند بار، منحصراً در بخش pkgbase ارائه شود. در صورت استفاده، فایل SRCINFO باید به همان تعداد انتساب‌های کلیدواژه source، شامل انتساب‌های کلیدواژه sha224sums باشد (همین امر برای گونه مختص معماری این کلیدواژه نیز صدق می‌کند). ترتیب انتساب‌های کلیدواژه source همراه، ترتیب انتساب‌های کلیدواژه sha224sums را دیکته می‌کند (یعنی اولین انتساب کلیدواژه sha224sums داده‌های مربوط به اولین انتساب کلیدواژه source را ارائه می‌دهد و به همین ترتیب).

یک خلاصه هش SHA-256[8] از فایلی که نام آن در یک مقدار source ارائه شده است، یا رشته ویژه ‘SKIP’ (برای جزئیات بیشتر در مورد مقدار مجاز به alpm-package-source-checksum مراجعه کنید). یک sha256sums مختص معماری می‌تواند با استفاده از کلیدواژه‌ای متشکل از ‘sha256sums’ که بلافاصله با یک علامت ‘_’ و بلافاصله پس از آن با یک alpm-architecture دنبال می‌شود (همه alpm-architectures به جز any قابل استفاده هستند)، مانند sha256sums_aarch64 مشخص شود.

این انتساب کلیدواژه می‌تواند صفر یا چند بار، منحصراً در بخش pkgbase ارائه شود. در صورت استفاده، فایل SRCINFO باید به همان تعداد انتساب‌های کلیدواژه source، شامل انتساب‌های کلیدواژه sha256sums باشد (همین امر برای گونه مختص معماری این کلیدواژه نیز صدق می‌کند). ترتیب انتساب‌های کلیدواژه source همراه، ترتیب انتساب‌های کلیدواژه sha256sums را دیکته می‌کند (یعنی اولین انتساب کلیدواژه sha256sums داده‌های مربوط به اولین انتساب کلیدواژه source را ارائه می‌دهد و به همین ترتیب).

یک خلاصه هش SHA-384[8] از فایلی که نام آن در یک مقدار source ارائه شده است، یا رشته ویژه ‘SKIP’ (برای جزئیات بیشتر در مورد مقدار مجاز به alpm-package-source-checksum مراجعه کنید). یک sha384sums مختص معماری می‌تواند با استفاده از کلیدواژه‌ای متشکل از ‘sha384sums’ که بلافاصله با یک علامت ‘_’ و بلافاصله پس از آن با یک alpm-architecture دنبال می‌شود (همه alpm-architectures به جز any قابل استفاده هستند)، مانند sha384sums_aarch64 مشخص شود.

این انتساب کلیدواژه می‌تواند صفر یا چند بار، منحصراً در بخش pkgbase ارائه شود. در صورت استفاده، فایل SRCINFO باید به همان تعداد انتساب‌های کلیدواژه source، شامل انتساب‌های کلیدواژه sha384sums باشد (همین امر برای گونه مختص معماری این کلیدواژه نیز صدق می‌کند). ترتیب انتساب‌های کلیدواژه source همراه، ترتیب انتساب‌های کلیدواژه sha384sums را دیکته می‌کند (یعنی اولین انتساب کلیدواژه sha384sums داده‌های مربوط به اولین انتساب کلیدواژه source را ارائه می‌دهد و به همین ترتیب).

یک خلاصه هش SHA-512[8] از فایلی که نام آن در یک مقدار source ارائه شده است، یا رشته ویژه ‘SKIP’ (برای جزئیات بیشتر در مورد مقدار مجاز به alpm-package-source-checksum مراجعه کنید). یک sha512sums مختص معماری می‌تواند با استفاده از کلیدواژه‌ای متشکل از ‘sha512sums’ که بلافاصله با یک علامت ‘_’ و بلافاصله پس از آن با یک alpm-architecture دنبال می‌شود (همه alpm-architectures به جز any قابل استفاده هستند)، مانند sha512sums_aarch64 مشخص شود.

این انتساب کلیدواژه می‌تواند صفر یا چند بار، منحصراً در بخش pkgbase ارائه شود. در صورت استفاده، فایل SRCINFO باید به همان تعداد انتساب‌های کلیدواژه source، شامل انتساب‌های کلیدواژه sha512sums باشد (همین امر برای گونه مختص معماری این کلیدواژه نیز صدق می‌کند). ترتیب انتساب‌های کلیدواژه source همراه، ترتیب انتساب‌های کلیدواژه sha512sums را دیکته می‌کند (یعنی اولین انتساب کلیدواژه sha512sums داده‌های مربوط به اولین انتساب کلیدواژه source را ارائه می‌دهد و به همین ترتیب).

یک خلاصه هش BLAKE2[9] از فایلی که نام آن در یک مقدار source ارائه شده است، یا رشته ویژه ‘SKIP’ (برای جزئیات بیشتر در مورد مقدار مجاز به alpm-package-source-checksum مراجعه کنید). یک b2sums مختص معماری می‌تواند با استفاده از کلیدواژه‌ای متشکل از ‘b2sums’ که بلافاصله با یک علامت ‘_’ و بلافاصله پس از آن با یک alpm-architecture دنبال می‌شود (همه alpm-architectures به جز any قابل استفاده هستند)، مانند b2sums_aarch64 مشخص شود.

این انتساب کلیدواژه می‌تواند صفر یا چند بار، منحصراً در بخش pkgbase ارائه شود. در صورت استفاده، فایل SRCINFO باید به همان تعداد انتساب‌های کلیدواژه source، شامل انتساب‌های کلیدواژه b2sums باشد (همین امر برای گونه مختص معماری این کلیدواژه نیز صدق می‌کند). ترتیب انتساب‌های کلیدواژه source همراه، ترتیب انتساب‌های کلیدواژه b2sums را دیکته می‌کند (یعنی اولین انتساب کلیدواژه b2sums داده‌های مربوط به اولین انتساب کلیدواژه source را ارائه می‌دهد و به همین ترتیب).

pkgbase = example
  pkgdesc = An example package
  pkgver = 1.0.0
  pkgrel = 1
  epoch = 1
  url = https://example.org
  arch = any
  license = GPL-3.0-or-later
  checkdepends = extra-test-tool
  checkdepends = other-extra-test-tool
  makedepends = cmake
  makedepends = python-sphinx
  depends = glibc
  depends = gcc-libs
  source = https://example.org/example-1.0.0.tar.gz
  sha512sums = 8b41e1b78ad11521113c52ff182a1b8e0a195754aa527fcd00a411620b46f20ffffb8088ccf85497121ad4499e0845b876f6dd6640088a2f0b2d8a600bdf4c0c
  b2sums = cb79bf658b69dff0acf721232455a461598dd26ed42047bd0362e7fbd796093145a694c1a6bcdcf5bf7f866d78f009c14bf456be0f944283829a6e33cedf2aef
pkgname = example
  # overrides the pkgdesc for the example package
  pkgdesc = A project that does something
  groups = package-group
  # extends the license for the example package
  license = GPL-3.0-or-later
  license = LGPL-3.0-or-later
  optdepends = python: for special-python-script.py
  optdepends = example-docs: for documentation
  provides = some-component
  conflicts = conflicting-package<1.0.0
  replaces = other-package>0.9.0-3
  backup = etc/example/config.toml
pkgname = example-docs
  # overrides the pkgdesc for the example-docs package
  pkgdesc = A project that does something - documentation
  # overrides the license for the example-docs package
  license = CC-BY-SA-4.0
  # unsets the dependencies for the example-docs package
  depends =

مثال بالا یک فایل SRCINFO را نشان می‌دهد که دو بسته تفکیک‌شده (split package) را توصیف می‌کند (برای جزئیات بیشتر به alpm-split-package مراجعه کنید). هر دو بخش pkgname انتساب کلیدواژه pkgdesc را بازنویسی (override) می‌کنند. اولین بخش pkgname علاوه بر این، مشخصه کلیدواژه license را از بخش pkgbase گسترش می‌دهد و انتساب‌های کلیدواژه مختص بسته بیشتری را اضافه می‌کند (مانند replaces، groups، conflicts، provides، backup، optdepends). دومین بخش pkgname انتساب کلیدواژه license را بازنویسی کرده و انتساب کلیدواژه depends را لغو (unset) می‌کند.

فایل کمینه PKGBUILD زیر یک بسته را برای دو alpm-architectures تعریف می‌کند.

pkgname=example
pkgver=0.1.0
pkgrel=1
pkgdesc="An example package"
arch=(x86_64 aarch64)
url="https://example.org"
license=(GPL-3.0-or-later)
depends=(bash)
depends_x86_64=(zsh)
package() {
  pkgdesc+=" - extra info"
  depends_x86_64+=(nushell)
  depends_aarch64=(sh)
}

این PKGBUILD توسط SRCINFO زیر نشان داده می‌شود:

pkgbase = example
  pkgdesc = An example package
  pkgver = 0.1.0
  pkgrel = 1
  url = https://example.org
  arch = x86_64
  arch = aarch64
  license = GPL-3.0-or-later
  depends = bash
  depends_x86_64 = zsh
pkgname = example
  pkgdesc = An example package - extra info
  depends_x86_64 = zsh
  depends_x86_64 = nushell
  depends_aarch64 = sh

بسته به alpm-architecture هدف، داده‌های بسته هنگام برطرف‌سازی کامل تمام کلیدواژه‌ها متفاوت خواهد بود.

برای aarch64:

  • pkgdesc = An example package - extra info
  • pkgver = 0.1.0
  • pkgrel = 1
  • url = https://example.org
  • arch = aarch64
  • license = GPL-3.0-or-later
  • depends = bash
  • depends = sh

برای x86_64:

  • pkgdesc = An example package - extra info
  • pkgver = 0.1.0
  • pkgrel = 1
  • url = https://example.org
  • arch = x86_64
  • license = GPL-3.0-or-later
  • depends = bash
  • depends = zsh
  • depends = nushell

alpm-srcinfo(1), bash(1), PKGBUILD(5), makepkg.conf(5), alpm-architecture(7), alpm-comparison(7), alpm-epoch(7), alpm-install-scriptlet(7), alpm-package-base(7), alpm-package-group(7), alpm-package-name(7), alpm-package-relation(7), alpm-package-version(7), alpm-pkgrel(7), alpm-pkgver(7), alpm-split-package(7), makepkg(8), pacman(8)

1.
printable ASCII characters
https://en.wikipedia.org/wiki/ASCII#Printable_characters
2.
OpenPGP fingerprint
https://openpgp.dev/book/certificates.html#fingerprint
3.
OpenPGP signatures
https://openpgp.dev/book/signing_data.html
4.
OpenPGP Key ID
https://openpgp.dev/book/glossary.html#term-Key-ID
5.
SPDX License List
https://spdx.org/licenses
6.
MD5
https://en.wikipedia.org/wiki/MD5
7.
SHA-1
https://en.wikipedia.org/wiki/SHA-1
8.
SHA-2
https://en.wikipedia.org/wiki/SHA-2
9.
BLAKE2
https://en.wikipedia.org/wiki/BLAKE_(hash_function)#BLAKE2
2024-03-04 Arch Linux