| apk-v2(5) | File Formats Manual | apk-v2(5) |
نام (NAME)
apk-v2 - قالب فرمت پایگاه داده و بسته نسخه ۲ در apk
توضیحات (DESCRIPTION)
یک فایل .apk نسخه ۲ حاوی محتویات یک بسته واحد، مقداری متادیتا و چند امضا است. فایل .apk شامل سه جریان gzip به هم پیوسته است که در مجموع یک آرشیو tar واحد را تشکیل میدهند. آرشیو tar شامل سه بخش است: امضاها، بخش کنترل، و بخش داده.
امضاها (THE SIGNATURES)
امضاها دنبالهای از فایلها هستند که نام آنها با ".SIGN." شروع میشود، که باید قبل از هر داده دیگری در فایل tar قرار گیرند. این نامفایلها به این صورت هستند:
که در آن <algorithm> باید یکی از مقادیر DSA، RSA، RSA256 و RSA512 باشد و <keyid> باید نام فایل کلید در /etc/apk/keys باشد (به apk-keys(5) مراجعه کنید).
امضا میتواند بر روی متادیتا محاسبه شود (اگر متادیتا حاوی هش داده برای دادهها باشد)، یا بر روی متادیتا و داده با هم محاسبه شود (اگر متادیتا فاقد هش داده باشد).
یک امضای واحد از سوی یک کلید مورد اعتماد کافی است، بنابراین در صورت نیاز یک apk میتواند توسط چندین کلید مختلف امضا شود، تا زمانی که کلاینتها حداقل به یکی از آنها اعتماد داشته باشند.
بخش کنترل (THE CONTROL SECTION)
در یک فایل apk نسخه ۲، متادیتای بسته در یک فایل واحد به نام PKGINFO ذخیره میشود. آن فایل از یک قالب کلید-مقدار استفاده میکند که در آن کلیدها و مقادیر با " = " از هم جدا میشوند و خطوطی که با "#" آغاز میشوند کامنت هستند. کلیدهای مجاز متعددی وجود دارد و هیچ فهرست متمرکزی از کلیدهای شناختهشده وجود ندارد؛ سورسکد abuild(1) بهترین مرجع است.
یک کلید برای درک قالب نسخه ۲ مهم است زیرا بر تفسیر امضا تأثیر میگذارد: اگر یک کلید "datahash" در PKGINFO وجود داشته باشد، مقدار آن هش sha256 بخش داده فایل apk است. بستهها باید دارای datahash باشند، اما نمایهها (indexes) چنین نیستند.
بخش کنترل همچنین محلی است که اسکریپتهای قلاب (hook) پیش/پس از نصب، حذف و ارتقا و همچنین تریگرها در آن قرار دارند.
بخش داده (THE DATA SECTION)
بخش داده صرفاً یک آرشیو tar از محتویات بسته است، همانطور که توسط فرآیند ساخت تولید میشود. این فایلها توسط abuild-tar(1) پردازش نهایی میشوند و از هدرهای توسعهیافته pax برای گنجاندن چکسامهای هر فایل در یک هدر با نام APK-TOOLS.checksum.<hash> استفاده میکنند.
مثال (EXAMPLE)
به عنوان مثال، فایل apk نسخه ۲ برای خود scdoc(1) حاوی این فایلها به همین ترتیب است:
.SIGN.RSA.alpine-devel@lists.alpinelinux.org-6165ee59.rsa.pub .PKGINFO usr/ usr/bin/ usr/bin/scdoc usr/share/ usr/share/pkgconfig/ usr/share/pkgconfig/scdoc.pc
از آنجا که فایلهای apk نسخه ۲ صرفاً آرشیوهای tar هستند (تقسیمشده به چندین جریان gzip)، میتوان آنها را با tar(1) بررسی و باز کرد، اگرچه هنگام تغییر آنها باید دقت شود که ترتیب بخشها به هم نخورد یا امضا باطل نشود. بهتر است برای اصلاح آنها از abuild(1) استفاده شود. اگر میخواهید آنها را به جریانهای gzip تشکیلدهندهشان تجزیه کنید، میتوانید از abuild-gzsplit(1) استفاده کنید.
نکات (NOTES)
در حال حاضر تنها طرح امضای "RSA" (به معنای RSA + SHA1) توسط abuild(1) استفاده میشود.
همچنین ببینید (SEE ALSO)
| 2026-08-31 |