MAKEPKG.CONF(5) راهنمای Pacman MAKEPKG.CONF(5)

makepkg.conf - فایل پیکربندی makepkg

/etc/makepkg.conf, $XDG_CONFIG_HOME/pacman/makepkg.conf, ~/.makepkg.conf

گزینه‌های پیکربندی makepkg در makepkg.conf ذخیره می‌شوند. این فایل به‌صورت منبع (source) خوانده می‌شود تا بتوانید پرچم‌های کامپایلر ویژه‌ای را که تمایل دارید اضافه کنید. این کار هنگام ساخت بسته برای معماری‌های مختلف یا با بهینه‌سازی‌های گوناگون مفید است. با این حال، فقط متغیرهایی که در زیر شرح داده شده‌اند به محیط ساخت صادر (export) می‌شوند.


نکته

این تضمین نمی‌کند که تمام Makefileهای بسته‌ها از متغیرهای صادرشده شما استفاده کنند. برخی از آن‌ها غیراستاندارد هستند.

فایل پیکربندی سراسری سیستم در /etc/makepkg.conf قرار دارد. گزینه‌های فردی می‌توانند بر پایه هر کاربر در $XDG_CONFIG_HOME/pacman/makepkg.conf یا ~/.makepkg.conf بازنویسی (یا اضافه) شوند، که اولی اولویت دارد.

فایل پیش‌فرض به اندازه کافی کامنت‌گذاری شده است، بنابراین ساده‌ترین راه برای سفارشی‌سازی پیروی از دستورالعمل‌های ارائه‌شده در آن است.

DLAGENTS=('protocol::/path/to/command [options]' ...)

عامل‌های بارگیری (download agents) مورد استفاده برای واکشی فایل‌های منبع مشخص‌شده با URL در فایل PKGBUILD(5) را تنظیم می‌کند. گزینه‌ها را می‌توان برای هر دستور نیز مشخص کرد، و هر پروتکلی می‌تواند یک عامل بارگیری داشته باشد. هر فاصله‌ای در آرگومان‌های گزینه‌ها باید گریز داده شود (escape) تا از جدا شدن آن‌ها جلوگیری گردد. چندین مثال در makepkg.conf پیش‌فرض ارائه شده است.

در صورت وجود، %u با نشانی URL بارگیری جایگزین خواهد شد. در غیر این صورت، نشانی URL بارگیری در انتهای دستور قرار خواهد گرفت. در صورت وجود، %o با نام فایل محلی به علاوه پسوند “.part” جایگزین می‌شود، که به makepkg امکان می‌دهد ادامه بارگیری فایل را مدیریت کند.

VCSCLIENTS=('protocol::package' ...)

بسته‌های مورد نیاز برای واکشی فایل‌های منبع کنترل نسخه‌شده را تنظیم می‌کند. در صورت نیاز، makepkg بررسی خواهد کرد که این بسته‌ها نصب باشند یا در آرایه‌های depends یا makedepends در PKGBUILD گنجانده شده باشند.

CARCH="carch"

معماری رایانه شما را مشخص می‌کند؛ مقادیر ممکن شامل مواردی مانند “i686”، “x86_64”، “ppc” و غیره است. این مقدار باید در زمان نصب به‌طور خودکار تنظیم شده باشد.

CHOST="chost"

رشته‌ای مانند “i686-pc-linux-gnu”؛ به این متغیر دست نزنید مگر اینکه بدانید چه کار می‌کنید. در صورت تمایل، اغلب کاربران می‌توانند آن را کامنت کنند.

CPPFLAGS="cppflags"

پرچم‌های مورد استفاده برای پیش‌پردازنده C؛ برای اطلاعات بیشتر CFLAGS را ببینید.

CFLAGS="cflags"

پرچم‌های مورد استفاده برای کامپایلر C. این یک بخش کلیدی در استفاده از makepkg است. معمولاً چندین گزینه مشخص می‌شوند و متداول‌ترین رشته چیزی شبیه به این است: “-march=i686 -O2 -pipe”. گزینه مفید دیگر ممکن است -mcpu به جای -march باشد. برای جزئیات بیشتر درباره طیف وسیع پرچم‌های موجود کامپایلر، gcc(1) را بخوانید.

CXXFLAGS="cxxflags"

پرچم‌های مورد استفاده برای کامپایلر ++C؛ برای اطلاعات بیشتر CFLAGS را ببینید.

RUSTFLAGS="rustflags"

پرچم‌های مورد استفاده برای کامپایلر Rust، از نظر ماهیت شبیه به CFLAGS. برای جزئیات بیشتر درباره پرچم‌های موجود، rustc(1) را بخوانید.

LDFLAGS="ldflags"

پرچم‌های مورد استفاده برای پیونددهنده (linker). گزینه‌های متعددی را می‌توان مشخص کرد که کاربرد رایج آن‌ها شبیه به “-Wl,--hash-style=gnu” است. برای جزئیات بیشتر درباره پرچم‌های پیونددهنده موجود، ld(1) را بخوانید.

LTOFLAGS="ltoflags"

پرچم‌های تکمیلی کامپایلر و پیونددهنده که هنگام ساخت با بهینه‌سازی زمان پیوند (LTO) به CFLAGS، CXXFLAGS و LDFLAGS پیوست می‌شوند. در صورت خالی بودن، “-flto” استفاده می‌شود.

MAKEFLAGS="makeflags"

این گزینه اغلب برای تعیین تعداد پردازش‌های هم‌زمان (jobs) استفاده می‌شود؛ برای مثال، -j2. سایر پرچم‌هایی که make می‌پذیرد را نیز می‌توان منتقل کرد.

DEBUG_CFLAGS="debug_cflags"

پرچم‌های تکمیلی کامپایلر که برای استفاده در اشکال‌زدایی (debugging) به CFLAGS پیوست می‌شوند. معمولاً این شامل: “-g” خواهد بود. برای جزئیات بیشتر درباره طیف وسیع پرچم‌های کامپایلر موجود، gcc(1) را بخوانید.

DEBUG_CXXFLAGS="debug_cxxflags"

پرچم‌های اشکال‌زدایی مورد استفاده برای کامپایلر ++C؛ برای اطلاعات بیشتر DEBUG_CFLAGS را ببینید.

DEBUG_RUSTFLAGS="debug_rustflags"

پرچم‌های تکمیلی کامپایلر که برای استفاده در اشکال‌زدایی به RUSTFLAGS پیوست می‌شوند. معمولاً این شامل: “-C debuginfo=2” خواهد بود. برای جزئیات بیشتر درباره پرچم‌های موجود، rustc(1) را بخوانید.

BUILDENV=(!distcc !color !ccache check !sign)

این آرایه حاوی گزینه‌هایی است که بر محیط ساخت تأثیر می‌گذارند؛ مقادیر پیش‌فرض در اینجا نشان داده شده‌اند. همه گزینه‌ها باید همیشه در آرایه باقی بمانند؛ برای فعال یا غیرفعال کردن یک گزینه، کافی است یک “!” را در ابتدای آن گزینه حذف یا اضافه کنید. اگر گزینه‌ای چندین بار مشخص شود، مقدار نهایی اولویت دارد. هر گزینه به این صورت کار می‌کند:

distcc

استفاده از کامپایلر توزیع‌شده C/C++/ObjC برای پخش کردن کامپایل میان چندین ماشین. در صورت فعال بودن این گزینه، DISTCC_HOSTS نیز باید مشخص شود.

color

رنگی کردن پیام‌های خروجی، که خواندن خروجی را آسان‌تر می‌کند.

ccache

استفاده از ccache برای ذخیره نتایج کامپایل (cache) به صورت پیش‌فرض. این امر در صورتی که مداوم در حال کامپایل مجدد بسته‌های یکسان باشید امکان کامپایل سریع‌تر را فراهم می‌سازد. می‌توان آن را برای بسته‌های مجزا با قرار دادن !ccache در آرایه گزینه‌های PKGBUILD غیرفعال کرد.

check

اجرای تابع ()check در صورت وجود در PKGBUILD. این مورد را می‌توان برای بسته‌های مجزا به ترتیب از طریق گزینه‌های --check و --nocheck در makepkg فعال یا غیرفعال کرد.

sign

تولید یک فایل امضای PGP با استفاده از GnuPG. این گزینه دستور gpg --detach-sign --use-agent را روی بسته ساخته‌شده اجرا می‌کند تا یک فایل امضای جداگانه تولید کند، مشروط بر اینکه عامل GPG در دسترس باشد. فایل امضا همان نام کامل فایل بسته با پسوند “.sig” خواهد بود.

DISTCC_HOSTS="host1 ..."

در صورت استفاده از DistCC، این متغیر برای تعیین یک لیست جداشده با فاصله از میزبان‌های در حال اجرا در کلاستر DistCC به کار می‌رود. علاوه بر این، باید MAKEFLAGS خود را نیز تغییر دهید.

BUILDDIR="/path/to/directory"

اگر این مقدار تنظیم نشود، بسته‌ها به‌طور پیش‌فرض در زیرپوشه‌های همان دایرکتوری که makepkg از آن فراخوانی شده است ساخته می‌شوند. این گزینه امکان تنظیم مکان ساخت به دایرکتوری دیگری را فراهم می‌کند. استفاده نادرست از $startdir در یک PKGBUILD ممکن است باعث شکست ساخت با این گزینه شود.

GPGKEY=""

تعیین یک کلید برای امضای GPG به جای کلید پیش‌فرض موجود در دسته‌کلید (keyring). با گزینه --key در makepkg قابل بازنویسی است.

OPTIONS=(!strip docs libtool staticlibs emptydirs !zipman !purge !debug)

این آرایه شامل گزینه‌هایی است که بر بسته‌بندی پیش‌فرض تأثیر می‌گذارند. آن‌ها معادل گزینه‌هایی هستند که می‌توان در PKGBUILD قرار داد؛ مقادیر پیش‌فرض در اینجا نشان داده شده‌اند. همه گزینه‌ها باید همیشه در آرایه باقی بمانند؛ برای فعال یا غیرفعال کردن یک گزینه، کافی است یک “!” در ابتدای آن گزینه حذف یا اضافه کنید. اگر گزینه‌ای چندین بار مشخص شود، مقدار نهایی اولویت دارد. هر گزینه به شرح زیر کار می‌کند:

strip

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

docs

نگه‌داری دایرکتوری‌های مستندات. اگر مایل به حذف دایرکتوری‌های مستندات هستید، !docs را در آرایه مشخص کنید. دایرکتوری‌های تحت تأثیر توسط متغیر DOC_DIRS تعیین می‌شوند.

libtool

باقی گذاشتن فایل‌های libtool با پسوند (.la) در بسته‌ها. برای حذف آن‌ها !libtool را مشخص کنید.

staticlibs

باقی گذاشتن فایل‌های کتابخانه ایستا (.a) در بسته‌ها. برای حذف آن‌ها، در صورتی که همتای اشتراکی داشته باشند، !staticlibs را مشخص کنید.

emptydirs

باقی گذاشتن دایرکتوری‌های خالی در بسته‌ها.

zipman

فشرده‌سازی صفحات راهنما (man و info) با gzip. دایرکتوری‌های تحت تأثیر توسط متغیر MAN_DIRS مشخص می‌شوند.

purge

حذف فایل‌های مشخص‌شده توسط متغیر PURGE_TARGETS از بسته.

debug

اضافه کردن پرچم‌های اشکال‌زدایی مشخص‌شده توسط کاربر در DEBUG_CFLAGS و DEBUG_CXXFLAGS به معادل‌های buildflags آن‌ها. در صورت استفاده با ‘strip’، یک بسته جداگانه حاوی نمادهای اشکال‌زدایی ایجاد می‌کند.

lto

فعال‌سازی ساخت بسته‌ها با استفاده از بهینه‌سازی زمان پیوند (LTO). پرچم‌های مشخص‌شده در LTOFLAGS را به CFLAGS، CXXFLAGS و LDFLAGS (یا “-flto” اگر LTOFLAGS خالی باشد) اضافه می‌کند.

INTEGRITY_CHECK=(check1 ...)

بررسی‌های یکپارچگی فایل برای استفاده. چندین بررسی را می‌توان مشخص کرد؛ این مورد بر هر دو مرحله تولید و بررسی تأثیر می‌گذارد. گزینه‌های معتبر فعلی عبارتند از: ck، md5، sha1، sha224، sha256، sha384، sha512 و b2.

STRIP_BINARIES="--strip-all"

گزینه‌های مورد استفاده هنگام حذف نمادها از فایل‌های باینری. برای جزئیات strip(1) را ببینید.

STRIP_SHARED="--strip-unneeded"

گزینه‌های مورد استفاده هنگام حذف نمادها از کتابخانه‌های اشتراکی یا فایل‌های اجرایی PIE. برای جزئیات strip(1) را ببینید.

STRIP_STATIC="--strip-debug"

گزینه‌های مورد استفاده هنگام حذف نمادها از کتابخانه‌های ایستا. برای جزئیات strip(1) را ببینید.

MAN_DIRS=({usr{,/local}{,/share},opt/*}/{man,info} ...)

اگر zipman در آرایه OPTIONS مشخص شده باشد، این متغیر به makepkg می‌گوید برای فشرده‌سازی صفحات راهنما (man و info) کجا را جستجو کند. اگر بسته‌هایی می‌سازید که در /opt قرار دارند، ممکن است لازم باشد دایرکتوری را به این آرایه اضافه کنید. نکته: اسلش ابتدایی را به نام دایرکتوری اضافه نکنید.

DOC_DIRS=(usr/{,share/}{doc,gtk-doc} ...)

اگر !docs در آرایه OPTIONS مشخص شده باشد، این متغیر به makepkg می‌گوید برای حذف مستندات کجا را جستجو کند. اگر بسته‌هایی می‌سازید که در /opt قرار دارند، ممکن است لازم باشد دایرکتوری را به این آرایه اضافه کنید. نکته: اسلش ابتدایی را به نام دایرکتوری اضافه نکنید.

PURGE_TARGETS=(usr/{,share}/info/dir .podlist *.pod...)

اگر purge در آرایه OPTIONS مشخص شده باشد، این متغیر به makepkg می‌گوید کدام فایل‌ها را از بسته حذف کند. این مورد برای فایل‌های نمایه‌ای که توسط چندین بسته اضافه می‌شوند مفید است.

DBGSRCDIR="/usr/src/debug"

اگر strip و debug در آرایه OPTIONS مشخص شده باشند، این متغیر به makepkg می‌گوید فایل‌های منبع باینری‌های نصب‌شده را در کجا قرار دهد. باینری‌ها تغییر داده می‌شوند تا به این دایرکتوری برای مسیر جستجوی اشکال‌زدا پیوند بخورند.

PKGDEST="/path/to/directory"

اگر این مقدار تنظیم نشود، بسته‌ها به‌طور پیش‌فرض در دایرکتوری فعلی (مکان PKGBUILD(5)) قرار می‌گیرند. بسیاری از افراد ترجیح می‌دهند تمام بسته‌های خود را در یک مکان نگه دارند، بنابراین این گزینه این رفتار را امکان‌پذیر می‌سازد. یک مکان رایج “/home/packages” است.

SRCDEST="/path/to/directory"

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

SRCPKGDEST="/path/to/directory"

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

LOGDEST="/path/to/directory"

اگر این مقدار تنظیم نشود، فایل‌های گزارش (log) در دایرکتوری فعلی نوشته می‌شوند. این کار مکان گزارش‌ها را متمرکز کرده و پاک‌سازی و فشرده‌سازی را تسهیل می‌کند.

PACKAGER="John Doe <john@example.com>"

این مقدار هنگام پرس‌وجوی بسته برای مشاهده سازنده آن استفاده می‌شود. فرمت ارائه‌شده برای جستجوی کلید PGP از طریق WKD الزامی است. توصیه می‌شود این مقدار را به نام و نشانی ایمیل خود تغییر دهید.

COMPRESSGZ="(gzip -c -f -n)", COMPRESSBZ2="(bzip2 -c -f)", COMPRESSXZ="(xz -c -z -)", COMPRESSZST="(zstd -c -z -)", COMPRESSLZO"(lzop -q)", COMPRESSLRZ="(lrzip -q)", COMPRESSLZ4="(lz4 -q)", COMPRESSZ="(compress -c -f)", COMPRESSLZ="(lzip -c -f)"

دستور و گزینه‌های مورد استفاده هنگام فشرده‌سازی بسته‌های کامپایل‌شده یا منبع را در فرمت نام‌برده تنظیم می‌کند.

PKGEXT=".pkg.tar.gz", SRCEXT=".src.tar.gz"

فشرده‌سازی مورد استفاده هنگام ساخت بسته‌های کامپایل‌شده یا منبع را تعیین می‌کند. پسوندهای معتبر عبارتند از: .tar.gz، .tar.bz2، .tar.xz، .tar.zst، .tar.lzo، .tar.lrz، .tar.lz4، .tar.lz و .tar.Z، یا صرفاً .tar برای غیرفعال کردن کامل فشرده‌سازی.

PACMAN_AUTH=()

پیشوند دستور را برای اجرای pacman با دسترسی root مشخص می‌کند. در صورت تنظیم نشدن، makepkg وجود sudo(8) و su(1) را به ترتیب بررسی کرده و اولین موردی را که بیابد امتحان می‌کند.

در صورت وجود، %c با شکل نقل‌قول‌شده (shell-quoted) دستور برای اجرا جایگزین می‌شود. در غیر این صورت، دستوری که باید اجرا شود به انتهای دستور احراز هویت پیوست می‌گردد.

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

•Allan McRae <allan@archlinux.org>
•Andrew Gregory <andrew.gregory.8@gmail.com>
•Eli Schwartz <eschwartz@archlinux.org>
•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>

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

باگ؟ حتماً شوخی می‌کنید؛ هیچ باگی در این نرم‌افزار وجود ندارد. اما اگر احیاناً اشتباه کرده باشیم، یک گزارش باگ با بیشترین جزئیات ممکن در بخش Pacman در سامانه پیگیری اشکالات توزیع Arch Linux ارسال کنید.

حق نشر © 2006-2021 Pacman Development Team <pacman-dev@lists.archlinux.org>.
حق نشر © 2002-2006 Judd Vinet <jvinet@zeroflux.org>.

این یک نرم‌افزار آزاد است؛ برای شرایط تکثیر به سورس‌کد مراجعه فرمایید. هیچ ضمانتی وجود ندارد؛ حتی برای بازاریابی یا مناسب بودن برای یک هدف خاص.

makepkg(8), pacman(8), PKGBUILD(5)

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

2022-11-21 Pacman 6.0.2