| apk-package(5) | File Formats Manual | apk-package(5) |
نام (NAME)
apk-package - قالب بسته نرمافزاری Alpine (apk)
توضیحات (DESCRIPTION)
متادیتای بسته apk شامل زیرساختار متادیتای اطلاعات بسته (package info) و فیلدهای متادیتای گوناگون دیگر است.
ساختار متادیتای اطلاعات بسته بخشی از متادیتای بسته است که هنگام ایندکسگذاری بسته، درون ایندکس مخزن رونوشت میشود. این فیلدها حتی در صورت نصب نبودن بسته نیز از طریق ایندکس در دسترس خواهند بود.
بقیه متادیتای بسته درون خود بسته و پایگاه داده بستههای نصبشده نگهداری میشود. این فیلدها تنها در صورتی که بسته نصب شده باشد در دسترس هستند.
ادامه این سند هر فیلد را با نشانهگذاری زیر توضیح میدهد: v3-field-name (v2-pkginfo-field-name, v2-index-character).
در صورتی که APK از فیلدی برای هدفی معنادار استفاده کند، صراحتاً ذکر شده است. برخی فیلدها در سازوکار درونی APK استفاده نمیشوند و از دید APK تنها قطعهدادههایی (blobs) مرتبط با نامی مشخص هستند که برای کاربر معنا دارند.
نامها و نسخههای بسته (PACKAGE NAMES AND VERSIONS)
APK در حالت خروجی با جزئیات (verbose) معمولاً الحاق name-version را نمایش میدهد. قاعده زیر درباره چگونگی تعریف شماره نسخه معتبر، این امکان را فراهم میکند که بتوان این قالب را با یافتن آخرین وقوع -[0-9] به طور یکتا مجدداً به دو مؤلفه تفکیک کرد. خط تیره (dash) در ابتدای این تطابق، نقطه جداسازی است: بخش اول name و بخش دوم version است.
متأسفانه نمیتوان استنباط کرد که آیا یک رشته معین در قالب name است یا name-version (زیرا خود name نیز میتواند شامل -[:digit:] باشد).
متادیتای اطلاعات بسته (PACKAGE INFO METADATA)
name (pkgname, P)
version (pkgver, V)
در حال حاضر مشخصات نسخه APK به این صورت است: number{.number}...{letter}{_suffix{number}}...{~hash}{-r#}
هر مؤلفه number دنبالهای از ارقام (0-9) است.
بخش letter تنها میتواند پس از پایان تمام مؤلفههای عددی نسخه بیاید. letter یک حرف کوچک منفرد الفبا (a-z) است.
بهصورت اختیاری یک یا چند مؤلفه _suffix{number} میتواند پس از آن بیاید. فهرست پسوندهای معتبر (و ترتیب مرتبسازی آنها) عبارت است از: alpha, beta, pre, rc, <no suffix>, cvs, svn, git, hg, p.
پس از این میتواند یک {~hash} اختیاری برای مشخص کردن هش کامیت که بسته از روی آن ساخته شده است بیاید. این مقدار میتواند رشتهای با هر طولی از ارقام هگزادسیمال کوچک (0-9a-f) باشد.
در نهایت یک مؤلفه اختیاری ساخت بسته -r{number} میتواند بیاید.
hashes (C)
APK از این فیلد به روشهای متعددی استفاده میکند:
- احراز اصالت و اعتبارسنجی بسته در برابر یک ایندکس
- تشخیص این که آیا بسته دقیقاً یکسانی در چندین مخزن موجود است یا خیر
- یکتا کردن نام فایل بسته هنگام ذخیره رونوشتی در حافظه موقت (cache) بستهها
description (pkgdesc, T)
arch (arch, A)
- noarch
- aarch64
- arc700
- archs
- armeb
- armel
- armhf
- armv7
- mips
- mipsel
- mips64
- mips64el
- ppc
- ppc64
- ppc64le
- riscv32
- riscv64
- s390x
- sh2eb
- sh3
- sh4
- loongarchx32
- loongarch64
- wasi32
- wasi64
- x86
- x86_64
فیلد arch میتواند بخشی از نشانی URL دانلود مخزن باشد. برای جزئیات بیشتر به apk-mkndx(8) و --pkgname-spec مراجعه کنید.
بسته واجد شرایط نصب نیست مگر اینکه arch با یکی از مقادیر موجود در etc/apk/arch مطابقت داشته باشد.
license (license, L)
origin (origin, o)
- اگر دو بسته باینری مجزا بسته منبع یکسانی داشته باشند، APK به بستهای که بازنویسی میشود اجازه میدهد فایلهای بسته دیگر را بازنویسی کند. این سازوکار برای انتقال فایلها از یک زیربسته به زیربسته دیگر به کار میرود.
- چندین دستور پرسوجو اجازه چاپ یا تطبیق نام بسته اصلی را میدهند.
- دستور ایندکسگذاری (هنگام بهروزرسانی تدریجی ایندکس) از این فیلد برای تعیین زمان حذف بسته قدیمی (یعنی حذف زیربستههایی که دیگر وجود ندارند) استفاده میکند.
maintainer (maintainer, m)
url (url, U)
repo-commit (commit, c)
build-time (builddate, t)
installed-size (size, I)
بستههایی با اندازه نصبشده صفر، شبهبستههایی هستند که به جز دادههای ایندکسشده هیچ داده دیگری ندارند. APK ممکن است تصمیم بگیرد بسته را دانلود نکند و همه چیز را بر اساس دادههای موجود در ایندکس مدیریت کند.
file-size (S)
provider-priority (provider_priority, k)
depends (depend, D)
وابستگیها توسط اجزای مختلف APK استفاده میشوند:
- حلکننده تلاش خواهد کرد راهحلی بیابد که تمام وابستگیهای بسته (و همچنین وابستگیهای world) برآورده شوند
- هنگامی که apk در حال ثبت تغییرات در سیستم فایل است، بستهها را به ترتیبی نصب یا حذف میکند که تمامی وابستگیهای بسته برآورده شوند (با فرض نبود وابستگیهای دوری)
- هنگامی که apk اسکریپتهای راهانداز بسته را اجرا میکند، آنها را به گونهای مرتب میسازد که راهاندازهای تمام وابستگیها پیش از اجرای راهانداز این بسته اجرا شوند
provides (provides, p)
اگر نام فراهمشده شامل شماره نسخه باشد:
- حلکننده با آن به گونهای رفتار میکند که گویی یک بسته واقعی با نام ارائهشده نصب شده است
- بسته بهطور خودکار توسط هر چیزی که به نام ارائهشده وابسته باشد قابل انتخاب خواهد بود
- بسته بهطور خودکار تنها مالک ممکن برای نام ارائهشده خواهد شد
- بسته بهطور خودکار با هر بستهای که نام اصلی یا نام ارائهشده یکسان داشته باشد تداخل خواهد داشت
اگر نام فراهمشده شامل نسخه نباشد:
- •
- بسته صرفاً به دلیل وجود وابستگی به نام ارائهشده، بهطور خودکار برای نصب انتخاب نمیشود
- تعیین provides_priority امکان انتخاب خودکار را فراهم میکند
- در غیر این صورت از کاربر انتظار میرود یکی از نامهای مشخص بسته را در world که اجازه انتخاب میدهد به صورت دستی برگزیند
- بسته مالک نام ارائهشده تلقی نمیشود
- چندین بسته که نام یکسانی را بدون نسخه ارائه میدهند مجاز هستند به طور همزمان نصب شوند
- برنامه apk از نظر داخلی، نام بستهای را که فقط ارائهدهندگان بدون نسخه دارد یک «نام بسته مجازی» در نظر میگیرد
replaces (r)
install-if (install_if, i)
کاربرد متداول این است که یک شبهبسته مخزن سراسری وجود دارد؛ مانند docs. و سپس چندین بسته وجود دارند که دارای یک زیربسته مانند package-doc هستند. این بستههای -doc میتوانند قاعدهای در install-if داشته باشند تا بهطور خودکار نصب شوند؛ مانند «package=$name-$ver docs» تا در صورت نصب بسته اصلی و شبهبسته مستندات، بسته مستندات نیز بهطور خودکار نصب گردد.
recommends
layer
- مقدار root (0) پیشفرض است و بیانگر سیستم فایل معمولی است
- مقدار uvol (1) نشان میدهد که بسته حاوی یک تصویر uvol است و باید از مدیر حجم uvol برای نصب تصویرها استفاده شود
علاوه بر کنترل اینکه محتوای بسته به کجا میرود، این فیلد روی پایگاه داده نصبشده که متادیتای این بستهها در آن قرار میگیرد نیز تأثیر میگذارد. هر لایه یک پایگاه داده نصبشده مجزا دارد.
tags
متادیتای بسته (PACKAGE METADATA)
info
paths
scripts
انواع اسکریپتهای تعریفشده کنونی و آرگومانهای آنها:
- trigger <matched-trigger>...
- pre-install <new-version>
- post-install <new-version>
- pre-deinstall <old-version>
- post-deinstall <old-version>
- pre-upgrade <new-version> <old-version>
- post-upgrade <new-version> <old-version>
همچنین برای متغیرهای محیطی بخش ENVIRONMENT را در apk(8) ببینید.
triggers
الگوهای راهانداز ممکن است با + آغاز شوند؛ به این معنی که مسیر تنها زمانی باید به اسکریپت راهانداز منتقل شود که دایرکتوری در طول تراکنش تغییر یافته باشد. این پیشوند روی فراخوانی شدن یا نشدن راهانداز تأثیری ندارد. بدون این پیشوند، در صورت وجود مسیر در سیستم و بهروزرسانی یا نصب مجدد بستهای که اسکریپت راهانداز را ارائه میدهد نیز مسیر منتقل خواهد شد.
replaces-priority
همچنین ببینید (SEE ALSO)
| 2026-08-31 |