RPMBUILD(1)

الاسم
rpmbuild - يبني حزم RPM

موجز
rpmbuild -b​المرحلة [خيارات] ملف_المواصفات ...

rpmbuild -r​المرحلة [خيارات] حزمة_المصدر ...

rpmbuild -t​المرحلة [خيارات] أرشيف_tar ...

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

الوصف
يُستخدم rpmbuild لبناء حزم البرامج بتنسيق RPM، بطريقة آلية وقابلة للتكرار.

تتكون الحزمة من أرشيف للملفات وبيانات وصفية تُستخدم لتثبيت ومسح ملفات الأرشيف. تتضمن البيانات الوصفية نصوصًا مساعدة، وسمات ملفات، ومعلومات وصفية عن الحزمة.

تأتي الحزم بنوعين: حزم ثنائية، تُستخدم لتغليف البرامج المراد تثبيتها، وحزم مصدرية، تحتوي على الكود المصدري والوصفة اللازمة لإنتاج الحزم الثنائية.

العمليات
-b​STAGE
    بناء المرحلة من ملف مواصفات.

-r​STAGE
    بناء المرحلة من حزمة RPM مصدرية.

-t​STAGE
    بناء المرحلة من أرشيف tar(5).

--rebuild, --recompile
    أسماء مستعارة للتوافق مع -ra.

تُبنى الحزم في أربع مراحل: التحليل، البناء، التجميع والتنظيف. تُقسم المرحلتان الوسطيتان إلى مراحل، مذكورة أدناه، يمكن بناؤها بشكل منفصل. بناء المرحلة يعني تنفيذ جميع المراحل السابقة حتى (وشاملة) المرحلة المحددة، ما لم يُذكر خلاف ذلك.

  مراحل التجميع
تنتج مراحل التجميع الحزم وهي الطريقة الأساسية للتفاعل مع rpmbuild. في حالة الشك، اختر إحداها.

a
    بناء كل من الحزم المصدرية والثنائية. هذه ليست مرحلة فعلية بل مزيج من b و s، مع الفارق أن الحزم المبنية بهذه الطريقة تحمل "ملف تعريف ارتباط" للإشارة إلى أنها جاءت من نفس البناء. عند النجاح، يُحذف دليل البناء.

b
    بناء الحزم الثنائية فقط. عند النجاح، يُحذف دليل البناء.

r
    بناء الحزمة المصدرية فقط، مع التحقق من التبعيات الديناميكية للبناء. ينفذ مرحلتي %prep و %generate_buildrequires قبل إنشاء حزمة. راجع قسم تبعيات البناء الديناميكية للتفاصيل.

s
    بناء الحزمة المصدرية فقط. لا تُنفذ أي مراحل بناء.

  مراحل البناء
تنتج مراحل البناء القطع الأثرية المراد حزمها، عادةً عن طريق تصحيح وتجميع المصادر، وتثبيت الثنائيات في جذر البناء. تتوافق هذه المراحل عمومًا مع أقسام المواصفات مثل %prep أو %build أو %install، لكن هناك بعضها ضمني.

بناء هذه المراحل بشكل منفصل مفيد عمومًا فقط عند حزم برامج جديدة بتنسيق RPM و/أو استكشاف الأخطاء. تُدرج أدناه بترتيب التنفيذ، مع قسم المواصفات المقابل بين قوسين حيثما ينطبق.

p (%prep)
    فك ضغط المصادر وتطبيق أي تصحيحات.

d (%generate_buildrequires)
    التحقق من تبعيات البناء الديناميكية وبناء حزمة buildreqs.nosrc.rpm إذا كان أي منها مفقودًا. لا تبنِ أي شيء آخر.

f (%conf)
    تكوين المصادر. يتضمن هذا عمومًا ما يعادل ./configure.

c (%build)
    تجميع المصادر. يتضمن هذا عمومًا ما يعادل make.

i (%install and %check)
    تثبيت الثنائيات في جذر البناء. يتضمن هذا عمومًا ما يعادل make install و make check.

l
    القيام بـ "فحص القائمة" - يُوسع قسم %files من ملف المواصفات بالماكرو، وتُجرى فحوصات للتحقق من وجود كل ملف. يتطلب هذا بناءً سابقًا حتى مرحلة %install.

المعطيات
SPEC_FILE
    ملف مواصفات RPM.

SOURCE_PACKAGE
    حزمة RPM مصدرية (بامتداد .src.rpm)

TAR_ARCHIVE
    أرشيف tar(5)، مضغوط اختياريًا. ليكون قابلاً للبناء مباشرةً مع rpmbuild، يجب أن يحتوي الأرشيف على ملف مواصفات إما بالاسم Specfile أو بامتداد .spec.

الخيارات
--build-in-place
    البناء من مصادر مسحوبة محليًا في دليل العمل الحالي. تُعد شجرة البناء كما لو أن %setup قد استُخدم، لكن %builddir/%buildsubdir يشير عائدًا إلى دليل العمل الحالي. يُتجاوز %prep بالكامل.

--clean
    احذف شجرة البناء بعد صنع الحزم (مبدئي).

--nobuild
    لا تنفذ أي مراحل بناء. مفيد لاختبار ملفات المواصفات.

--nocheck
    لا تنفذ مرحلة بناء %check حتى لو كانت موجودة في المواصفات.

--noclean
    لا تنفذ مرحلة بناء %clean حتى لو كانت موجودة في المواصفات.

--nodebuginfo
    لا تولد حزم معلومات التصحيح.

--nodeps
    لا تحقق من تبعيات البناء.

--noprep
    لا تنفذ مرحلة بناء %prep حتى لو كانت موجودة في المواصفات. يفترض هذا وجود تشغيل آخر لـ rpmbuild حيث تم تنفيذ %prep بالفعل.

--rmsource
    احذف المصادر بعد البناء (قد يُستخدم أيضًا بشكل مستقل، مثل rpmbuild --rmsource foo.spec). لاحظ أن ملفات NoSource و NoPatch ليست مصادر بحكم التعريف، وبالتالي لا تتأثر بهذا الخيار.

--rmspec
    احذف ملف المواصفات بعد البناء (قد يُستخدم أيضًا بشكل مستقل، مثل rpmbuild --rmspec foo.spec).

--rpmfcdebug
    اطبع معلومات التصحيح حول تصنيف الملفات وتوليد التبعيات.

--scm=SCM
    اختر SCM لاستخدامه مع %autosetup، إذا لم يكن مضبوطًا في ملف المواصفات. لاحظ أن جميع قيم SCM، مثل patch (المبدئي) و gendiff و git أو quilt لا تعمل بالتبادل مع جميع التصحيحات والخيارات الأخرى المذكورة في سطر %autosetup، خاصة الخيار -pN.

--short-circuit
    تجاوز مباشرة إلى المرحلة المحددة (أي تجاوز جميع المراحل المؤدية إلى المرحلة المحددة). صالح فقط مع -bc و -bi و -bb. مفيد للاختبار المحلي فقط. سيتم وضع علامة على الحزم المبنية بهذه الطريقة بتبعية غير قابلة للإشباع لمنع استخدامها العرضي.

--with OPTION
    فعّل تكوين OPTION للبناء.

--without OPTION
    عطّل تكوين OPTION للبناء.

انظر rpm-common(8) للخيارات المشتركة بين جميع العمليات.

اعتمادات بناء حركية
عند تشغيل مرحلة %generate_buildrequires ولم يتم إشباع بعض متطلبات البناء المولدة حديثًا، ينشئ rpmbuild حزمة مصدر وسيطة تنتهي بـ buildreqs.nosrc.rpm، والتي تحتوي على متطلبات البناء الجديدة، ويخرج برمز 11. يمكن استخدام هذه الحزمة بعد ذلك بدلاً من حزمة المصدر الأصلية لحل وتركيب تبعيات البناء المفقودة بالطريقة المعتادة، مثل استخدام dnf-builddep(8).

قد توجد طبقات متعددة من تبعيات البناء الديناميكية في ملف المواصفات؛ وجود متطلبات بناء محددة على النظام قد ينتج متطلبات بناء جديدة في المرة التالية التي يتم فيها بناء بنفس حزمة المصدر. أسهل طريقة لضمان إشباع جميع تبعيات البناء الديناميكية هي تشغيل الخيار -br، وتركيب التبعيات الجديدة لحزمة buildreqs.nosrc.rpm، وتكرار الإجراء بأكمله حتى لا يخرج rpmbuild برمز 11.

إذا تم إقران الخيار -br مع --nodeps، يتم دائمًا إرجاع رمز الخروج 11 ويتم دائمًا إنشاء حزمة buildreqs.nosrc.rpm.

البيئة
RPM_BUILD_NCPUS
    يتجاوز الكشف الآلي لعدد وحدات المعالجة المركزية لاستخدامها في الأقسام المتوازية من البناء.

حالة الخروج
عند النجاح، تُعاد القيمة 0، وإلا تُعاد شفرة فشل غير صفرية.

الحزم التي تحتوي على قسم %generate_buildrequires ستعود برمز 11 عندما تكون هناك تبعيات بناء ديناميكية غير مشبعة.

أمثلة
rpmbuild --rebuild hello-1.0-1.src.rpm
    ابنِ حزم ثنائية ومصدر من حزمة المصدر hello-1.0-1.src.rpm.

rpmbuild -bb --nocheck --with openssl hello.spec
    ابنِ حزم ثنائية من ملف المواصفات hello.spec، متجاوزًا مرحلة %check إذا كانت موجودة ومفعلاً دعم الشرط البنائي لـ openssl (بافتراض تحديد واحد في المواصفات).

rpmbuild -ta hello-2.0.tar.gz
    ابنِ حزم ثنائية ومصدر من الأرشيف المضغوط hello-2.0.tar.gz، بافتراض أن الأرشيف يحتوي على ملف مواصفات شرعي (انظر 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/

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.