RPMBUILD(1) General Commands Manual RPMBUILD(1)

rpmbuild - ساخت بسته‌های RPM

rpmbuild -b​STAGE [options] SPEC_FILE ...

rpmbuild -r​STAGE [options] SOURCE_PACKAGE ...

rpmbuild -t​STAGE [options] TAR_ARCHIVE ...

rpmbuild {--rebuild|--recompile} [options] SOURCE_PACKAGE ...

دستور rpmbuild برای ساخت بسته‌های نرم‌افزاری در قالب RPM به‌صورت خودکار و تکرارپذیر استفاده می‌شود.

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

بسته‌ها در دو نوع ارائه می‌شوند: بسته‌های باینری، که برای دربرگرفتن نرم‌افزار جهت نصب به کار می‌روند، و بسته‌های منبع، که شامل کد منبع و دستورالعمل لازم برای تولید بسته‌های باینری هستند.

-b​STAGE

ساخت مرحلهٔ STAGE از روی یک فایل spec.

-r​STAGE

ساخت مرحلهٔ STAGE از روی یک بستهٔ منبع RPM.

-t​STAGE

ساخت مرحلهٔ STAGE از روی یک بایگانی tar(5).

--rebuild, --recompile

نام‌های مستعار سازگاری برای -ra.

بسته‌ها در چهار فاز ساخته می‌شوند: تجزیه (parse)، ساخت (build)، سرهم‌بندی (assembly) و پاک‌سازی (cleanup). دو فاز میانی خود به مراحل (stages) که در زیر فهرست شده‌اند تقسیم می‌شوند و می‌توان آن‌ها را به‌طور جداگانه ساخت. ساخت یک STAGE به معنای اجرای تمامی مراحل پیشین تا (و شامل) مرحلهٔ مشخص‌شده است، مگر اینکه خلاف آن ذکر شده باشد.

مراحل سرهم‌بندی بسته‌ها را تولید می‌کنند و شیوهٔ اصلی تعامل با rpmbuild هستند. اگر تردید دارید، یکی از این‌ها را انتخاب کنید.

a

ساخت هر دو نوع بستهٔ منبع و باینری. این یک مرحلهٔ واقعی نیست بلکه ترکیبی از b و s است، با این تفاوت که بسته‌های ساخته‌شده با این روش دارای یک «کوکی» هستند تا نشان دهند از یک ساخت مشترک آمده‌اند. در صورت موفقیت، دایرکتوری ساخت حذف می‌شود.

b

ساخت تنها بسته‌های باینری. در صورت موفقیت، دایرکتوری ساخت حذف می‌شود.

r

ساخت تنها بستهٔ منبع، همراه با بررسی وابستگی‌های پویای ساخت. پیش از ایجاد یک بسته، مراحل %prep و %generate_buildrequires را اجرا می‌کند. برای جزئیات به بخش وابستگی‌های پویای ساخت (DYNAMIC BUILD DEPENDENCIES) مراجعه کنید.

s

ساخت تنها بستهٔ منبع. هیچ مرحلهٔ ساختی اجرا نمی‌شود.

مراحل ساخت، مصنوعات مورد نیاز برای بسته‌بندی را تولید می‌کنند؛ این کار معمولاً از طریق اعمال وصله و کامپایل کردن منابع و نصب باینری‌ها در buildroot انجام می‌شود. این مراحل عموماً با بخش‌هایی از spec مانند %prep، %build یا %install مطابقت دارند، اما برخی از آن‌ها ضمنی هستند.

ساخت این مراحل به‌صورت جداگانه معمولاً فقط هنگام بسته‌بندی نرم‌افزارهای جدید در قالب RPM و/یا عیب‌یابی مفید است. آن‌ها بر اساس ترتیب اجرا در زیر آورده شده‌اند و بخش متناظر در spec در صورت وجود درون پرانتز آمده است.

p (%prep)

استخراج منابع از حالت فشرده و اعمال هرگونه وصله.

d (%generate_buildrequires)

بررسی وابستگی‌های پویای ساخت و در صورت مفقود بودن هر یک، ساخت بستهٔ buildreqs.nosrc.rpm. چیز دیگری ساخته نمی‌شود.

f (%conf)

پیکربندی منابع. این مرحله عموماً شامل فرمانی معادل با ./configure است.

c (%build)

کامپایل منابع. این مرحله عموماً شامل فرمانی معادل با make است.

i (%install and %check)

نصب باینری‌ها در ریشه ساخت (build root). این مرحله عموماً شامل فرمانی معادل با make install و make check است.

l

انجام یک «بررسی فهرست» (list check) - بخش %files از فایل spec از نظر ماکروها بسط داده می‌شود و بررسی‌هایی انجام می‌گیرد تا اطمینان حاصل شود تک‌تک فایل‌ها وجود دارند. این عمل نیازمند آن است که قبلاً ساختی تا مرحلهٔ %install انجام شده باشد.

SPEC_FILE

یک فایل spec مربوط به RPM.

SOURCE_PACKAGE

یک بستهٔ منبع RPM (با پسوند .src.rpm).

TAR_ARCHIVE

یک بایگانی tar(5)، که به‌صورت اختیاری فشرده شده است. برای اینکه بتوان آن را مستقیماً با rpmbuild ساخت، بایگانی باید شامل یک فایل spec با نام Specfile یا فایلی با پسوند .spec باشد.

--build-in-place

ساخت از روی منابعی که به‌صورت محلی دریافت شده‌اند در دایرکتوری کاری فعلی. درخت ساخت به گونه‌ای برپا می‌شود که گویی از %setup استفاده شده است، اما %builddir/%buildsubdir به دایرکتوری کاری فعلی اشاره می‌کند. از مرحلهٔ %prep به‌طور کامل صرف‌نظر می‌شود.

--clean

حذف درخت ساخت پس از ایجاد بسته‌ها (پیش‌فرض).

--nobuild

عدم اجرای هیچ‌یک از مراحل ساخت. برای آزمایش فایل‌های spec مفید است.

--nocheck

عدم اجرای مرحلهٔ ساخت %check حتی در صورت وجود در spec.

--noclean

عدم اجرای مرحلهٔ ساخت %clean حتی در صورت وجود در spec.

--nodebuginfo

عدم تولید بسته‌های debuginfo.

--nodeps

عدم بررسی و اعتبارسنجی وابستگی‌های ساخت.

--noprep

عدم اجرای مرحلهٔ ساخت %prep حتی در صورت وجود در spec. این فرض می‌کند که اجرای دیگری از rpmbuild وجود داشته است که در آن %prep پیش‌تر اجرا شده است.

--rmsource

حذف منابع پس از ساخت (می‌تواند به‌صورت مستقل نیز به کار رود، به عنوان مثال rpmbuild --rmsource foo.spec). توجه داشته باشید که طبق تعریف، فایل‌های NoSource و NoPatch منبع به شمار نمی‌آیند و بنابراین تحت تأثیر این گزینه قرار نمی‌گیرند.

--rmspec

حذف فایل spec پس از ساخت (می‌تواند به‌صورت مستقل نیز به کار رود، به عنوان مثال rpmbuild --rmspec foo.spec).

--rpmfcdebug

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

--scm=SCM

انتخاب SCM مورد استفاده به همراه %autosetup، اگر موردی در فایل spec تنظیم نشده باشد. توجه داشته باشید که تمامی مقادیر SCM، به عنوان مثال patch (پیش‌فرض) و gendiff، git یا quilt، به‌طور متقابل با سایر وصله‌ها و گزینه‌های قیدشده در خط %autosetup، به‌ویژه گزینهٔ -pN، کار نمی‌کنند.

--short-circuit

پرش مستقیم به مرحلهٔ مشخص‌شده (یعنی رد کردن تمام مراحل منتهی به مرحلهٔ مشخص‌شده). تنها با -bc، -bi و -bb معتبر است. فقط برای آزمایش‌های محلی کاربرد دارد. بسته‌های ساخته‌شده با این روش با یک وابستگی ارضانشدنی علامت‌گذاری خواهند شد تا از استفادهٔ تصادفی آن‌ها جلوگیری شود.

--with OPTION

فعال‌سازی OPTION پیکربندی برای ساخت.

--without OPTION

غیرفعال‌سازی OPTION پیکربندی برای ساخت.

برای گزینه‌های مشترک بین تمامی عملیات‌ها، rpm-common(8) را ببینید.

هنگامی که مرحلهٔ %generate_buildrequires اجرا می‌شود و برخی از نیازمندی‌های BuildRequires تازه ایجادشده ارضا نشده باشند، rpmbuild یک بستهٔ منبع میانی با پسوند buildreqs.nosrc.rpm ایجاد می‌کند که دارای BuildRequiresهای جدید است و با کد 11 خارج می‌شود. سپس می‌توان از این بسته به جای بستهٔ منبع اصلی برای حل و نصب وابستگی‌های ساخت مفقود به روش همیشگی، مانند استفاده از dnf-builddep(8)، استفاده کرد.

ممکن است چندین لایه از وابستگی‌های پویای ساخت در یک فایل spec وجود داشته باشد؛ حضور BuildRequiresهای مشخص در سیستم ممکن است دفعهٔ بعدی که ساختی با همان بستهٔ منبع انجام می‌شود، منجر به ایجاد BuildRequiresهای جدید شود. ساده‌ترین راه برای اطمینان از ارضای تمامی وابستگی‌های پویای ساخت، اجرای گزینهٔ -br، نصب وابستگی‌های جدید بستهٔ buildreqs.nosrc.rpm و تکرار کل این رویه تا زمانی است که دیگر rpmbuild با کد 11 خارج نشود.

اگر گزینهٔ -br همراه با --nodeps استفاده شود، کد خروج 11 همیشه بازگردانده می‌شود و یک بستهٔ buildreqs.nosrc.rpm همیشه ایجاد خواهد شد.

RPM_BUILD_NCPUS

تشخیص خودکار تعداد پردازنده‌ها (CPU) برای استفاده در بخش‌های موازی‌شدهٔ ساخت را بازنویسی می‌کند.

در صورت موفقیت 0، و در غیر این صورت یک کد خطای غیرصفر بازگردانده می‌شود.

بسته‌های دارای بخش %generate_buildrequires در صورت وجود وابستگی‌های پویای ساخت (DYNAMIC BUILD DEPENDENCIES) ارضانشده، با کد 11 بازخواهند گشت.

rpmbuild --rebuild hello-1.0-1.src.rpm

ساخت بسته‌های باینری و منبع از بستهٔ منبع hello-1.0-1.src.rpm.

rpmbuild -bb --nocheck --with openssl hello.spec

ساخت بسته‌های باینری از فایل spec با نام hello.spec، با صرف‌نظر از مرحلهٔ %check در صورت وجود و فعال‌سازی پشتیبانی از شرط ساخت openssl (با فرض اینکه یکی در spec مشخص شده باشد).

rpmbuild -ta hello-2.0.tar.gz

ساخت بسته‌های باینری و منبع از تاربال فشردهٔ hello-2.0.tar.gz، با این فرض که بایگانی شامل یک فایل spec معتبر باشد (برای جزئیات TAR_ARCHIVE را ببینید).

rpmbuild -bc hello.spec

ساخت hello.spec تا و شامل مرحلهٔ %build، یعنی بدون تولید بسته‌های واقعی.

rpmbuild -bi --short-circuit hello.spec

تنها اجرای مرحلهٔ %install برای hello.spec، با صرف‌نظر از تمام مراحل قبلی. این فرض می‌کند که اجرای قبلی حداقل تا مرحلهٔ %build انجام شده است، مثال قبلی را ببینید. برای جلوگیری از ساخت مجدد کامل هنگام کار روی بخش %files یک بسته مفید است.

rpm-common(8) را ببینید.

gendiff(1), popt(3), rpm(8), rpm-common(8), rpmbuild-config(5), rpm2cpio(1), rpmkeys(8), rpmspec(1), rpmsign(1), rpm-setup-autosign(1) rpm-macros(7)

http://www.rpm.org

2026-03-06 RPM 6.0.1