FLATPAK BUILD-FINIS(1) flatpak build-finish FLATPAK BUILD-FINIS(1)

flatpak-build-finish - نهایی‌سازی یک دایرکتوری ساخت

flatpak build-finish [OPTION...] DIRECTORY

یک پوشهٔ ساخت را نهایی می‌کند تا آن را برای صدور (export) آماده سازد. DIRECTORY نام این پوشه است.

نتیجهٔ این دستور آن است که فایل‌های دسکتاپ، آیکون‌ها، فایل‌های سرویس D-Bus و فایل‌های متادیتای AppStream از زیرپوشهٔ files به یک زیرپوشهٔ جدید به نام export کپی می‌شوند. در فایل metadata، کلید command در گروه [Application] تنظیم شده و کلیدهای پشتیبانی‌شده در گروه [Environment] بر اساس گزینه‌های مشخص‌شده مقداردهی می‌شوند.

به‌عنوان بخشی از نهایی‌سازی، شما همچنین می‌توانید با استفاده از گزینه‌های گوناگون مشخص‌شده در زیر، مجوزهایی را که برنامه به آن‌ها نیاز دارد تعیین کنید. علاوه بر این، در هنگام نهایی‌سازی، مجوزهای محیط زمان‌اجرا به برنامه به ارث می‌رسد، مگر اینکه گزینهٔ --no-inherit-permissions را مشخص کنید.

پیش از ایجاد و توزیع بستهٔ برنامه (application bundle)، باید فایل‌های صادرشده و فرادادهٔ برنامه را بررسی و بازبینی نمایید.

اجرای build-finish روی پوشه‌ای که به‌عنوان پوشهٔ ساخت مقداردهی اولیه نشده باشد، یا از قبل نهایی شده باشد، منجر به خطا می‌شود.

گزینه‌های زیر پشتیبانی می‌شوند:

-h, --help

نمایش گزینه‌های راهنما و خروج.

--command=COMMAND

دستوری که باید استفاده شود. اگر این گزینه مشخص نشود، نخستین فایل اجرایی یافت‌شده در files/bin استفاده خواهد شد.

توجه داشته باشید که این دستور زمانی استفاده می‌شود که برنامه از طریق flatpak run اجرا شود، و بر آنچه هنگام اجرای برنامه به روش‌های دیگر (مثلاً از طریق فایل دسکتاپ یا فعال‌سازی D-Bus) اجرا می‌شود تأثیری ندارد.

--require-version=MAJOR.MINOR.MICRO

نیاز به این نسخه یا نسخه‌های جدیدتر فلت‌پک برای نصب/به‌روزرسانی به این ساخت.

--share=SUBSYSTEM

اشتراک‌گذاری یک زیرسیستم با نشست میزبان. این گزینه گروه [Context] را در فراداده به‌روزرسانی می‌کند. SUBSYSTEM باید یکی از موارد زیر باشد: network، ipc. این گزینه می‌تواند چندین بار استفاده شود.

--unshare=SUBSYSTEM

عدم اشتراک‌گذاری یک زیرسیستم با نشست میزبان. این گزینه گروه [Context] را در فراداده به‌روزرسانی می‌کند. SUBSYSTEM باید یکی از موارد زیر باشد: network، ipc. این گزینه می‌تواند چندین بار استفاده شود.

--share-if=SUBSYSTEM:CONDITION

اشتراک‌گذاری مشروط یک زیرسیستم با نشست میزبان، تنها زمانی که شرط مشخص‌شده در زمان اجرا برقرار باشد. این گزینه گروه [Context] را در فراداده به‌روزرسانی می‌کند. SUBSYSTEM باید یکی از موارد زیر باشد: network، ipc. CONDITION باید یکی از موارد زیر باشد: true، false، has-input-device، has-wayland، has-usb-device، has-usb-portal. شرط‌ها را می‌توان با ! نقیض کرد، برای نمونه !has-input-device. این گزینه می‌تواند چندین بار استفاده شود. در دسترس از نسخهٔ ۱.۱۷ به بعد.

برای جزئیات بیشتر، بخش Conditional Permissions را در flatpak-metadata(5) ببینید.

--socket=SOCKET

در دسترس قرار دادن یک سوکت شناخته‌شده برای برنامه. این گزینه گروه [Context] را در فراداده به‌روزرسانی می‌کند. SOCKET باید یکی از موارد زیر باشد: x11، wayland، fallback-x11، pulseaudio، system-bus، session-bus، ssh-auth، pcsc، cups، gpg-agent، inherit-wayland-socket. این گزینه می‌تواند چندین بار استفاده شود.

گزینهٔ fallback-x11 سوکت X11 را تنها در صورتی در دسترس قرار می‌دهد که سوکت Wayland وجود نداشته باشد. این گزینه در نسخهٔ ۰.۱۱.۳ معرفی شده است. برای پشتیبانی از انتشار‌های قدیمی‌تر فلت‌پک، هر دو گزینهٔ x11 و fallback-x11 را مشخص کنید. در صورتی که هر دو پشتیبانی شوند، گزینهٔ fallback-x11 اولویت خواهد داشت.

--nosocket=SOCKET

عدم دسترسی برنامه به یک سوکت شناخته‌شده. این گزینه گروه [Context] را در فراداده به‌روزرسانی می‌کند. SOCKET باید یکی از موارد زیر باشد: x11، wayland، fallback-x11، pulseaudio، system-bus، session-bus، ssh-auth، pcsc، cups، gpg-agent، inherit-wayland-socket. این گزینه می‌تواند چندین بار استفاده شود.

--socket-if=SOCKET:CONDITION

در دسترس قرار دادن مشروط یک سوکت شناخته‌شده برای برنامه، تنها زمانی که شرط مشخص‌شده در زمان اجرا برقرار باشد. این گزینه گروه [Context] را در فراداده به‌روزرسانی می‌کند. SOCKET باید یکی از موارد زیر باشد: x11، wayland، fallback-x11، pulseaudio، system-bus، session-bus، ssh-auth، pcsc، cups، gpg-agent، inherit-wayland-socket. شرط CONDITION باید یکی از موارد زیر باشد: true، false، has-input-device، has-wayland، has-usb-device، has-usb-portal. شرط‌ها را می‌توان با ! نقیض کرد، برای نمونه !has-wayland. این گزینه می‌تواند چندین بار استفاده شود. در دسترس از نسخهٔ ۱.۱۷ به بعد.

برای جزئیات بیشتر، بخش Conditional Permissions را در flatpak-metadata(5) ببینید.

--device=DEVICE

در دسترس قرار دادن یک دستگاه برای برنامه. این گزینه گروه [Context] را در فراداده به‌روزرسانی می‌کند. DEVICE باید یکی از موارد زیر باشد: dri، input، usb، kvm، shm، all. این گزینه می‌تواند چندین بار استفاده شود.

--nodevice=DEVICE

عدم دسترسی برنامه به یک دستگاه. این گزینه گروه [Context] را در فراداده به‌روزرسانی می‌کند. DEVICE باید یکی از موارد زیر باشد: dri، input، usb، kvm، shm، all. این گزینه می‌تواند چندین بار استفاده شود.

--device-if=DEVICE:CONDITION

در دسترس قرار دادن مشروط یک دستگاه برای برنامه، تنها زمانی که شرط مشخص‌شده در زمان اجرا برقرار باشد. این گزینه گروه [Context] را در فراداده به‌روزرسانی می‌کند. DEVICE باید یکی از موارد زیر باشد: dri، input، usb، kvm، shm، all. شرط CONDITION باید یکی از موارد زیر باشد: true، false، has-input-device، has-wayland، has-usb-device، has-usb-portal. شرط‌ها را می‌توان با ! نقیض کرد، برای نمونه !has-input-device. این گزینه می‌تواند چندین بار استفاده شود. در دسترس از نسخهٔ ۱.۱۷ به بعد.

برای جزئیات بیشتر، بخش Conditional Permissions را در flatpak-metadata(5) ببینید.

--allow=FEATURE

اجازهٔ دسترسی به یک ویژگی خاص. این گزینه گروه [Context] را در فراداده به‌روزرسانی می‌کند. FEATURE باید یکی از موارد زیر باشد: devel، multiarch، bluetooth، canbus، per-app-dev-shm. این گزینه می‌تواند چندین بار استفاده شود.

ویژگی devel به برنامه امکان می‌دهد به فراخوان‌های سیستمی خاصی نظیر ptrace() و perf_event_open() دسترسی داشته باشد.

ویژگی multiarch به برنامه اجازه می‌دهد تا برنامه‌های کامپایل‌شده برای یک ABI غیر از آنچه به‌صورت محلی توسط سیستم پشتیبانی می‌شود را اجرا کند. برای نمونه، در معماری x86_64، فایل‌های دودویی ۳۲ بیتی x86 نیز مجاز خواهند بود.

ویژگی bluetooth به برنامه امکان استفاده از سوکت‌های بلوتوث (AF_BLUETOOTH) را می‌دهد. توجه داشته باشید که برای کارکرد کامل بلوتوث باید دسترسی شبکه نیز داشته باشید.

ویژگی canbus به برنامه اجازه می‌دهد از سوکت‌های canbus (AF_CAN) استفاده کند. توجه داشته باشید که برای این کار باید دسترسی شبکه نیز داشته باشید.

ویژگی per-app-dev-shm یک نمونهٔ واحد از /dev/shm را بین برنامه، هر سن‌باکس فرعی نامحدودی که ایجاد می‌کند، و سایر نمونه‌های برنامه که هم‌زمان اجرا می‌شوند به اشتراک می‌گذارد.

--disallow=FEATURE

عدم اجازهٔ دسترسی به یک ویژگی خاص. این گزینه گروه [Context] را در فراداده به‌روزرسانی می‌کند. FEATURE باید یکی از موارد زیر باشد: devel، multiarch، bluetooth، canbus، per-app-dev-shm. این گزینه می‌تواند چندین بار استفاده شود.

--allow-if=FEATURE:CONDITION

اجازهٔ دسترسی مشروط به یک ویژگی خاص، تنها زمانی که شرط مشخص‌شده در زمان اجرا برقرار باشد. این گزینه گروه [Context] را در فراداده به‌روزرسانی می‌کند. FEATURE باید یکی از موارد زیر باشد: devel، multiarch، bluetooth. CONDITION باید یکی از موارد زیر باشد: true، false، has-input-device، has-wayland، has-usb-device، has-usb-portal. شرط‌ها را می‌توان با ! نقیض کرد، برای نمونه !has-input-device. این گزینه می‌تواند چندین بار استفاده شود. در دسترس از نسخهٔ ۱.۱۷ به بعد.

برای جزئیات بیشتر، بخش Conditional Permissions را در flatpak-metadata(5) ببینید.

--filesystem=FS

اجازهٔ دسترسی برنامه به زیرمجموعه‌ای از سیستم‌فایل. این گزینه گروه [Context] را در فراداده به‌روزرسانی می‌کند. FS می‌تواند یکی از موارد زیر باشد: home، host، host-os، host-etc، host-root، xdg-desktop، xdg-documents، xdg-download، xdg-music، xdg-pictures، xdg-public-share، xdg-templates، xdg-videos، xdg-run، xdg-config، xdg-cache، xdg-data، یک مسیر مطلق، یا یک مسیر نسبی به پوشهٔ خانگی مانند ~/dir یا مسیرهای نسبی به پوشه‌های xdg مانند xdg-download/subdir. پسوند اختیاری :ro نشان می‌دهد که مکان فقط‌خواندنی خواهد بود. پسوند اختیاری :create نشان می‌دهد که مکان خواندنی-نوشتنی است و در صورت عدم وجود ایجاد می‌شود. این گزینه می‌تواند چندین بار استفاده شود. برای جزئیات معانی این سیستم‌فایل‌ها، به فهرست "[Context] filesystems" در flatpak-metadata(5) مراجعه کنید.

--nofilesystem=FILESYSTEM

حذف دسترسی به زیرمجموعهٔ مشخص‌شده از سیستم‌فایل از برنامه. این گزینه بخش Context فرادادهٔ برنامه را بازنویسی می‌کند. FILESYSTEM می‌تواند یکی از موارد زیر باشد: home، host، host-os، host-etc، host-root، xdg-desktop، xdg-documents، xdg-download، xdg-music، xdg-pictures، xdg-public-share، xdg-templates، xdg-videos، یک مسیر مطلق، یا یک مسیر نسبی به پوشهٔ خانگی مانند ~/dir. این گزینه می‌تواند چندین بار استفاده شود.

--add-policy=SUBSYSTEM.KEY=VALUE

افزودن گزینهٔ خط‌مشی عمومی. برای نمونه، "--add-policy=subsystem.key=v1 --add-policy=subsystem.key=v2" به این فراداده نگاشت می‌شود:
[Policy subsystem]
key=v1;v2;

این گزینه می‌تواند چندین بار استفاده شود.

--remove-policy=SUBSYSTEM.KEY=VALUE

حذف گزینهٔ خط‌مشی عمومی. این گزینه می‌تواند چندین بار استفاده شود.

--usb=TYPE[:DATA]

دستگاه‌های USB منطبق با پرس‌وجو را با افزودن آن پرس‌وجو به فرادادهٔ برنامه برای پورتال USB نمایان می‌سازد. این گزینه هیچ تأثیری بر دستگاه‌های نمایان‌شده در /dev ندارد. TYPE باید یکی از موارد زیر باشد: all، cls، dev، vnd.

all

تطبیق تمام دستگاه‌ها.

cls

پرس‌وجوی کلاس و زیرکلاس دستگاه. DATA باید به قالب CLASS:SUBCLASS باشد که در آن هر دو مقدار CLASS و SUBCLASS باید شناسه‌های عددی ۲ رقمی معتبر هگزادسیمال برای کلاس باشند. همچنین، SUBCLASS می‌تواند * باشد تا با تمام زیرکلاس‌ها تطبیق یابد.

dev

پرس‌وجوی شناسهٔ محصول (product id) دستگاه. DATA باید یک عدد شناسهٔ محصول هگزادسیمال معتبر ۴ نویسه‌ای باشد، برای نمونه 0a1b. این گزینه به یک فیلتر vnd در پرس‌وجو نیاز دارد.

vnd

پرس‌وجوی شناسهٔ سازنده (vendor id) دستگاه. DATA باید یک عدد شناسهٔ سازندهٔ هگزادسیمال معتبر ۴ نویسه‌ای بزرگ‌تر از صفر باشد، برای نمونه 0fab.

امکان ترکیب چندین پرس‌وجوی دستگاه به همراه علامت + وجود دارد، برای نمونه --usb=vnd:0123+dev:4567. فیلتر dev نیاز به یک vnd دارد. در دسترس از نسخهٔ ۱.۱۵.۱۱ به بعد.

--nousb=TYPE[:DATA]

پنهان کردن دستگاه‌های USB منطبق با پرس‌وجو از پورتال USB با افزودن پرس‌وجو به فرادادهٔ برنامه. پرس‌وجوهای پنهان‌کنندهٔ دستگاه‌ها نسبت به پرس‌وجوهای نمایان‌کننده اولویت دارند (نگاه کنید به --usb). ساختار نگارش دقیقاً مشابه --usb است. این گزینه هیچ تأثیری بر دستگاه‌های نمایان‌شده در /dev ندارد. در دسترس از نسخهٔ ۱.۱۵.۱۱ به بعد.

--usb-list-file=FILENAME

افزودن پرس‌وجوهای دستگاه USB به فرادادهٔ برنامه از فایل FILE_NAME. ساختار نگارش خطوط دقیقاً معادل --usb است. علاوه بر این، اگر خطی با ! آغاز شود، پرس‌وجو مشابه --nousb خواهد بود. خطوطی که با # آغاز می‌شوند مانند یادداشت (comment) نادیده گرفته می‌شوند. یادداشت‌ها ذخیره نخواهند شد. در دسترس از نسخهٔ ۱.۱۵.۱۱ به بعد.

--usb-list=LIST

افزودن پرس‌وجوهای دستگاه USB به فرادادهٔ برنامه از LIST. ساختار نگارش دقیقاً معادل --usb است و پرس‌وجوها با ; از یکدیگر جدا می‌شوند. همچنین اگر پرس‌وجویی با ! آغاز شود، همانند --nousb خواهد بود. در دسترس از نسخهٔ ۱.۱۵.۱۱ به بعد.

--env=VAR=VALUE

تنظیم یک متغیر محیطی در برنامه. این گزینه گروه [Environment] را در فراداده به‌روزرسانی می‌کند. این گزینه بخش Context فرادادهٔ برنامه را بازنویسی می‌کند. این گزینه می‌تواند چندین بار استفاده شود.

--unset-env=VAR

حذف یک متغیر محیطی در برنامه. این گزینه ورودی unset-environment را در گروه [Context] فراداده به‌روزرسانی می‌کند. این گزینه می‌تواند چندین بار استفاده شود.

--env-fd=FD

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

هر متغیر محیطی در قالب VAR=VALUE به همراه یک بایت صفر در انتها است. این همان قالبی است که توسط env -0 و /proc/*/environ استفاده می‌شود.

--own-name=NAME

اجازه دادن به برنامه برای تملک نام شناخته‌شدهٔ NAME روی گذرگاه نشست (session bus). اگر NAME به .* ختم شود، به برنامه اجازه می‌دهد تا مالک تمام نام‌های منطبق باشد. این گزینه گروه [Session Bus Policy] را در فراداده به‌روزرسانی می‌کند. این گزینه می‌تواند چندین بار استفاده شود.

--talk-name=NAME

اجازه دادن به برنامه برای گفتگو با نام شناخته‌شدهٔ NAME روی گذرگاه نشست. اگر NAME به .* ختم شود، به برنامه اجازه می‌دهد تا با تمام نام‌های منطبق گفتگو کند. این گزینه گروه [Session Bus Policy] را در فراداده به‌روزرسانی می‌کند. این گزینه می‌تواند چندین بار استفاده شود.

--system-own-name=NAME

اجازه دادن به برنامه برای تملک نام شناخته‌شدهٔ NAME روی گذرگاه سیستم (system bus). اگر NAME به .* ختم شود، به برنامه اجازه می‌دهد تا مالک تمام نام‌های منطبق باشد. این گزینه گروه [System Bus Policy] را در فراداده به‌روزرسانی می‌کند. این گزینه می‌تواند چندین بار استفاده شود.

--system-talk-name=NAME

اجازه دادن به برنامه برای گفتگو با نام شناخته‌شدهٔ NAME روی گذرگاه سیستم. اگر NAME به .* ختم شود، به برنامه اجازه می‌دهد تا با تمام نام‌های منطبق گفتگو کند. این گزینه گروه [System Bus Policy] را در فراداده به‌روزرسانی می‌کند. این گزینه می‌تواند چندین بار استفاده شود.

--persist=FILENAME

اگر برنامه به پوشهٔ خانگی واقعی دسترسی ندارد، مسیر (نسبی به پوشهٔ خانگی) FILENAME را به یک پیوند اتصالی (bind mount) به مسیر متناظر در پوشهٔ اختصاصی برنامه تبدیل می‌کند، که امکان استفاده از آن مکان را برای نگهداری داده‌های پایدار فراهم می‌سازد. این گزینه گروه [Context] را در فراداده به‌روزرسانی می‌کند. این گزینه می‌تواند چندین بار استفاده شود.

--runtime=RUNTIME, --sdk=SDK

تغییر محیط زمان‌اجرا یا sdk مورداستفاده توسط برنامه به مرجع جزئی (partial ref) مشخص‌شده. بخش‌های تعیین‌نشده از مرجع، از مقادیر پیشین یا مقادیر پیش‌فرض گرفته می‌شوند.

--metadata=GROUP=KEY[=VALUE]

تنظیم یک کلید عمومی در فایل فراداده. در صورت حذف مقدار، مقدار "true" تنظیم خواهد شد.

--extension=NAME=VARIABLE[=VALUE]

افزودن اطلاعات نقطهٔ گسترش (extension point). برای مقادیر ممکن VARIABLE و VALUE، مستندات flatpak-metadata(5) را ببینید.

--remove-extension=NAME

حذف اطلاعات نقطهٔ گسترش.

--extension-priority=VALUE

تنظیم اولویت (ترتیب بازنویسی کتابخانه) نقطهٔ گسترش. تنها برای افزونه‌ها کاربرد دارد. مقدار ۰ پیش‌فرض است، و مقدار بالاتر به معنای اولویت بیشتر خواهد بود.

--extra-data=NAME:SHA256:DOWNLOAD-SIZE:INSTALL-SIZE:URL

افزودن اطلاعات نشانی‌های داده‌های اضافی به برنامه. این داده‌ها هنگام نصب برنامه توسط کلاینت بارگیری و اعتبارسنجی شده و در پوشهٔ /app/extra قرار می‌گیرند. همچنین می‌توانید یک اسکریپت /app/bin/apply_extra ارائه دهید که پس از بارگیری فایل‌ها اجرا خواهد شد.

--no-exports

عدم جستجو برای موارد صادراتی (exports) در ساخت.

--no-inherit-permissions

عدم ارث‌بری مجوزهای محیط زمان‌اجرا در برنامه.

-v, --verbose

چاپ اطلاعات اشکال‌زدایی در طول پردازش دستور.

--ostree-verbose

چاپ اطلاعات اشکال‌زدایی OSTree در طول پردازش دستور.

$ flatpak build-finish /build/my-app --socket=x11 --share=ipc --usb=vnd:0fd9

Exporting share/applications/gnome-calculator.desktop
Exporting share/dbus-1/services/org.gnome.Calculator.SearchProvider.service
More than one executable
Using gcalccmd as command
Please review the exported files and the metadata

$ flatpak build-finish /build/my-app --socket=wayland --socket-if=x11:!has-wayland --share=ipc

این دستور دسترسی Wayland را به‌صورت بدون قید و شرط اعطا می‌کند و دسترسی X11 را تنها زمانی می‌دهد که نشست در حالت Wayland اجرا نشود؛ این کار به برنامه امکان می‌دهد در صورت نیاز به X11 بازگردد (fall back).

flatpak(1), flatpak-build-init(1), flatpak-build(1), flatpak-build-export(1)

flatpak