linux - يمكن ملف ملف رم "تشمل" ملفات أخرى؟




scripting rpm (5)

هل هناك نوع من "تضمين" التوجيه في المواصفات رم؟ لم أتمكن من العثور على إجابة عن طريق غوغلينغ.

الدافع : لدي قالب المواصفات رم الذي تعديل عملية البناء مع الإصدار، مراجعة وغيرها من البيانات بناء محددة. ويتم ذلك من قبل sed حاليا. وأعتقد أنه سيكون من الأنظف إذا كانت المواصفات #include ملف تعريفات بناء محددة، والتي سيتم إنشاؤها من قبل عملية البناء، لذلك أنا لست بحاجة إلى البحث واستبدال في المواصفات.

إذا لم يكن هناك include ، هل هناك طريقة اصطلاحية للقيام بذلك (شائعة جدا، وأعتقد) المهمة؟


رم لا يدعم يشمل.

لقد حلت مشاكل مماثلة إما مع معالج الماكرو m4 أو عن طريق مجرد تسلسل أجزاء من المواصفات (عندما كانت "إينلود" في البداية).

إذا كنت بحاجة فقط لتمرير بعض المتغيرات في وقت البناء، وعدم تضمين عدة أسطر من ملف آخر، يمكنك تشغيل

rpmbuild --define 'myvar SOMEVALUE' -bb myspec.spec

ويمكنك استخدام٪ ميفار في المواصفات.


أي إصدار تتحدث عنه؟ لدي حاليا٪ تتضمن filename.txt في ملف المواصفات الخاصة بي ويبدو أنها تعمل تماما مثل التوجيه C #include.

> rpmbuild --version
RPM version 4.8.1

بالنسبة للمشكلة الأساسية، ربما هناك حلان إضافيان موجودان في جميع إصدارات رم التي أعرفها.

  1. الحزم الفرعية
  2. macro و rpmrc الملفات.

الحزم الفرعية

بديل آخر (وربما " طريقة رم ") هو استخدام حزم فرعية . كما يحتوي الحد الأقصى لكل ألف ظهور على معلومات وأمثلة على العبوات الفرعية .

وأعتقد أن السؤال يحاول هيكلة شيء مثل،

  • اثنين من ملفات المواصفات؛ انطق rpm_debug.spec و rpm_production.spec
  • كل من استخدام %include common.spec

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

محددات

والميزة الرئيسية ل سوباكاجيس هو أن بناء واحد فقط يحدث؛ وقد يكون هذا أيضا عيبا. قد يوضح المثال التصحيحي والإنتاج هذا. ويمكن أن تعمل حول استخدام strip لخلق المتغيرات أو تجميع مرتين مع الإخراج مختلفة. ربما باستخدام VPATH مع غنو جعل). وجود لتجميع حزم كبيرة وبعد ذلك فقط الاختلافات البسيطة، مثل مع / بدون معلومات المطور، مثل headers ، المكتبات الثابتة ، وما يمكن أن تجعلك نقدر هذا النهج.

وحدات الماكرو و رمرك

لا تحل حزم البيانات الفرعية مشكلة التعريف الهيكلي التي ترغب في الحصول على تسلسل هرمي كامل روتفس ، أو مجموعة أكبر من رم. لدينا rpmbuild --showrc لهذا الغرض. يمكن أن يكون لديك كمية كبيرة من المتغيرات وحدات الماكرو المحددة عن طريق تغيير rpmrc macros عند تشغيل rpm و rpmbuild . من صفحة man ،

   rpmrc Configuration
       /usr/lib/rpm/rpmrc
       /usr/lib/rpm/redhat/rpmrc
       /etc/rpmrc
       ~/.rpmrc

   Macro Configuration
       /usr/lib/rpm/macros
       /usr/lib/rpm/redhat/macros
       /etc/rpm/macros
       ~/.rpmmacros

وأعتقد أن هذه الميزات يمكن حل جميع المشاكل التي %include يمكن. ومع ذلك، %include مفهوم مألوف وربما أضيفت لجعل دورة في الدقيقة أكثر كامل المواصفات والمطور ودية.


لقد استخدمت البرامج النصية (اسم المفضلة لديك) لاتخاذ قالب وإنشاء ملف المواصفات من ذلك. أيضا، يمكن للملف %files استيراد ملف الذي تم إنشاؤه بواسطة عملية أخرى، على سبيل المثال بيثون bdist-rpm .


يمكنك تضمين ملفات *.inc من الدليل %_sourcedir ( %_sourcedir ):

Source1: common.inc

%include %{SOURCE1}

وبهذه الطريقة أنها سوف تذهب تلقائيا إلى سربمس .





rpm-spec