ALPM-HOOKS(5) راهنمای Pacman ALPM-HOOKS(5)

alpm-hooks - فرمت فایل هوک alpm

[Trigger] (الزامی، قابل تکرار)
Operation = Install|Upgrade|Remove (الزامی، قابل تکرار)
Type = Path|Package (الزامی)
Target = <Path|PkgName> (الزامی، قابل تکرار)
[Action] (الزامی)
Description = ... (اختیاری)
When = PreTransaction|PostTransaction (الزامی)
Exec = <Command> (الزامی)
Depends = <PkgName> (اختیاری)
AbortOnFail (اختیاری، فقط PreTransaction)
NeedsTargets (اختیاری)

کتابخانه libalpm امکان تعیین هوک‌هایی را فراهم می‌کند که بر اساس بسته‌ها و/یا فایل‌های در حال تغییر، قبل یا بعد از تراکنش‌ها اجرا شوند. هوک‌ها از یک بخش منفرد [Action] که عملیات مورد اجرا را شرح می‌دهد، و یک یا چند بخش [Trigger] که مشخص می‌کنند هوک باید برای چه تراکنش‌هایی اجرا شود، تشکیل شده‌اند.

هوک‌ها از فایل‌های موجود در دایرکتوری هوک‌های سیستم /usr/share/libalpm/hooks و دایرکتوری‌های سفارشی دیگری که در pacman.conf(5) مشخص شده‌اند (پیش‌فرض /etc/pacman.d/hooks است) خوانده می‌شوند. نام این فایل‌ها باید دارای پسوند «.hook» باشد. هوک‌ها به ترتیب الفبایی نام فایل‌هایشان اجرا می‌شوند که در این ترتیب‌بندی، پسوند فایل نادیده گرفته می‌شود.

هوک‌ها باید دست‌کم شامل یک بخش [Trigger] باشند که مشخص می‌کند کدام تراکنش‌ها باعث اجرای هوک خواهند شد. اگر چند بخش محرک تعریف شده باشد، در صورتی که تراکنش با هر یک از محرک‌ها مطابقت داشته باشد، هوک اجرا خواهد شد.

Operation = Install|Upgrade|Remove

نوع عملیاتی که هدف‌ها باید با آن مطابقت داده شوند را انتخاب می‌کند. می‌تواند چندین بار مشخص شود. در صورتی که بسته یا فایل از پیش روی سیستم موجود باشد، عمل نصب صرف‌نظر از اینکه نسخه بسته جدید واقعاً از نسخه نصب‌شده فعلی بالاتر باشد یا خیر، یک ارتقا در نظر گرفته می‌شود. برای محرک‌های Path، این موضوع حتی در صورتی که مالکیت فایل از بسته‌ای به بسته دیگر تغییر کند نیز صادق است. الزامی.

Type = Path|Package

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

Target = <path|package>

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

Description = ...

توضیحی اختیاری که عمل انجام‌شده توسط هوک را برای استفاده در خروجی رابط کاربری توصیف می‌کند.

Exec = <command>

دستوری که باید اجرا شود. آرگومان‌های دستور بر اساس نویسه‌های فاصله تفکیک می‌شوند. مقادیر حاوی فاصله باید درون علامت نقل‌قول قرار گیرند. الزامی.

When = PreTransaction|PostTransaction

زمان اجرای هوک را مشخص می‌کند. الزامی.

Depends = <package>

بسته‌هایی که برای اجرای هوک باید نصب شده باشند. می‌تواند چندین بار مشخص شود.

AbortOnFail

در صورتی که اجرای هوک با کدی غیرصفر خاتمه یابد، موجب لغو تراکنش می‌شود. فقط برای هوک‌های PreTransaction اعمال می‌شود.

NeedsTargets

باعث می‌شود فهرست هدف‌های محرک مطابقت‌یافته از طریق stdin به هوک در حال اجرا ارسال شود.

هوک‌ها را می‌توان با قرار دادن فایلی با همان نام در دایرکتوری هوکی با اولویت بالاتر بازنویسی کرد. همچنین می‌توان با بازنویسی آن‌ها به‌وسیله یک پیوند نمادین به /dev/null، آن‌ها را غیرفعال کرد.

# Force disks to sync to reduce the risk of data corruption
[Trigger]
Operation = Install
Operation = Upgrade
Operation = Remove
Type = Package
Target = *
[Action]
Depends = coreutils
When = PostTransaction
Exec = /usr/bin/sync

موقعیت‌هایی وجود دارد که در آن‌ها محرک‌های مسیر ممکن است به شیوه‌های غیرمنتظره‌ای عمل کنند. هوک‌ها با استفاده از فهرست فایل‌های بستهٔ نصب‌شده، ارتقایافته یا حذف‌شده راه‌اندازی می‌شوند. هنگام نصب یا ارتقای فایلی که با پسوند .pacnew استخراج می‌شود، از نام اصلی فایل برای راه‌اندازی هوک استفاده می‌شود. هنگام حذف یک بسته، همه فایل‌های متعلق به آن بسته می‌توانند یک هوک را راه‌اندازی کنند، چه قبل از حذف بسته واقعاً روی سیستم‌فایل وجود داشته باشند و چه نداشته باشند.

هوک‌های PostTransaction در صورتی که تراکنش به هر دلیلی کامل نشود، اجرا نخواهند شد.

برای اطلاعات به‌روز در مورد pacman و ابزارهای مرتبط با آن، به وب‌سایت pacman در نشانی https://archlinux.org/pacman مراجعه کنید.

باگ؟ حتماً شوخی می‌کنید؛ هیچ باگی در این نرم‌افزار وجود ندارد. اما اگر احیاناً اشتباه کرده باشیم، لطفاً آن‌ها را با اطلاعات مشخصی نظیر خط فرمان شما، ماهیت باگ و حتی در صورت مفید بودن، پایگاه‌داده بسته، به سامانه پیگیری اشکالات در https://gitlab.archlinux.org/pacman/pacman/-/issues گزارش دهید.

نگه‌دارندگان فعلی:

•Allan McRae <allan@archlinux.org>
•Andrew Gregory <andrew.gregory.8@gmail.com>
•Morgan Adamiec <morganamilo@archlinux.org>

مشارکت‌کنندگان عمده پیشین:

•Judd Vinet <jvinet@zeroflux.org>
•Aurelien Foret <aurelien@archlinux.org>
•Aaron Griffin <aaron@archlinux.org>
•Dan McGee <dan@archlinux.org>
•Xavier Chantry <shiningxc@gmail.com>
•Nagy Gabor <ngaba@bibl.u-szeged.hu>
•Dave Reisner <dreisner@archlinux.org>
•Eli Schwartz <eschwartz@archlinux.org>

برای مشارکت‌کنندگان دیگر، از دستور git shortlog -s در مخزن pacman.git استفاده کنید.

2026-05-06 Pacman 7.1.0