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

ALPM-MTREEv2 - قالب توصیف سلسله‌مراتب دایرکتوری بسته‌ها در ALPM (نسخه ۲)

قالب mtree یک قالب متنی است که سلسله‌مراتب و متادیتای فایل‌های درون یک دایرکتوری را توصیف می‌کند.

قالب mtree قالبی شناخته‌شده است که برای مثال می‌تواند برای دستورالعمل‌های نصب یا جهت اعتبارسنجی متادیتای فایل‌ها و سلسله‌مراتب یک دایرکتوری به کار رود.

قالب ALPM-MTREE از مشخصات رسمی mtree پیروی می‌کند. با این حال، فایل‌های .MTREE که در چارچوب بسته‌های ALPM استفاده می‌شوند، تنها از زیرمجموعه‌ای از قالب رسمی mtree بهره می‌برند که در حیطه بسته‌بندی کاربرد دارد.

فایل‌های .MTREE تولیدشده توسط makepkg تنها شامل ویژگی‌های زیر هستند:

  • type
  • uid
  • gid
  • mode
  • time
  • size
  • md5
  • sha256
  • link

علاوه بر این، از آنجا که فایل‌های mtree در چارچوب بسته‌بندی Arch Linux استفاده می‌شوند، همیشه به فایل‌های درون بسته‌های Arch Linux مربوط هستند. به همین دلیل، تمام مسیرهای درون یک ALPM-MTREE باید نسبت به بسته نسبی باشند، به‌جز مقصدهای پیوند که ممکن است به خارج از بسته اشاره کنند.

برخلاف تمام انواع موجود در mtree، قالب ALPM-MTREE تنها سه نوع فایل را مجاز می‌داند:

  • dir یک دایرکتوری
  • file یک فایل
  • link یک پیوند نمادین (symbolic link)

سایر انواع ممنوع هستند، زیرا نباید در بسته گنجانده شوند.

قالب ALPM-MTREE تنظیم مقادیر مشخصی را برای برخی انواع فایل الزامی می‌داند، چیزی که در مشخصات mtree اجباری نشده است.

نوع مسیر dir نیازمند تنظیم ویژگی‌های زیر است:

  • path
  • uid
  • gid
  • mode
  • time

نوع مسیر file نیازمند تنظیم ویژگی‌های زیر است:

  • path
  • uid
  • gid
  • mode
  • size
  • md5_digest
  • sha256_digest
  • time

نوع مسیر link نیازمند تنظیم ویژگی‌های زیر است:

  • path
  • uid
  • gid
  • mode
  • link
  • time

در Pacman، فایل‌های ALPM-MTREE صرفاً جهت اعتبارسنجی این‌که فایل‌های نصب‌شده با فایل‌های اصلی یکسان هستند بدون نیاز به نگهداری بسته اصلی استفاده می‌شوند.

فایل‌های .MTREE هنگام ایجاد بسته‌ها از طریق makepkg به‌طور ضمنی تولید شده و درون بسته گنجانده می‌شوند. فایل .MTREE فشرده‌شده با gzip در ریشه بسته‌های مبتنی بر ALPM قرار دارد.

قالب ALPM-MTREE در چندین نسخه وجود دارد. اطلاعات موجود در این سند مربوط به نسخه ۲ است که نسخه فعلی به شمار می‌رود. این نسخه با انتشار pacman 6.1.0 در تاریخ 2024-03-04 معرفی شده است.

فیلد md5 دیگر تولید نمی‌شود، که این امر عملاً یک تغییر ناسازگار با نسخه‌های پیشین (breaking change) محسوب می‌شود.

#mtree
/set type=file uid=0 gid=0 mode=644
./.BUILDINFO time=1696727741.0 size=5574 sha256digest=708be566788a6a2712bcd40425d93761569ede07371781374edb1f22e2a3eb96
./.PKGINFO time=1696727741.0 size=830 sha256digest=3aa17bec02b34c157e7c739c62e0e37a9d19f1459d404d7c6f2c14c6008127cd
/set mode=755 type=dir
./usr time=1731613789.0
./usr/bin time=1731613789.0
./usr/bin/resolvconf time=1731613789.0 mode=777 type=link link=resolvectl

فایل‌های mtree متعلق به ALPM با اجرای دستور زیر تولید می‌شوند:

bsdtar \
  --format=mtree \
  --options='!all,use-set,type,uid,gid,mode,time,size,sha256,link' \
  $folder

در چارچوب ALPM و pacman، هدف اصلی فایل mtree فراهم ساختن روشی با کارایی بالا جهت دریافت متادیتای فایل‌های یک بسته، بدون نیاز به استخراج و خواندن کل بسته است.

سپس این داده‌ها برای بررسی تطابق فایل‌های نصب‌شده روی سیستم هدف با فایل‌های اصلی بسته به کار می‌روند. برای جزئیات بیشتر به قابلیت بررسی پرسمان (query check) در pacman مراجعه فرمایید.

mtree(5), makepkg(8), pacman(8)

2024-03-04 Arch Linux