سؤال

نحن نستخدم rpm لنشر تطبيقات الويب الخاصة بنا داخليًا.يقوم rpm بتثبيت الملفات وتكوين Apache وcron والتسجيل وما إلى ذلك.

أرغب في إنشاء إصدار اختباري من rpm يتم تثبيته في موقع مختلف بتكوين مختلف لـ Apache وcron والتسجيل.يجب أن يكون من الممكن تثبيت كل من الإنتاج واختبار دورة في الدقيقة على نفس الجهاز.

مع تثبيت كل من rpms سيكون لدي شيء من هذا القبيل

/opt/app/www/...
/opt/app-test/www/...
/etc/httpd/conf.d/app.conf
/etc/httpd/conf.d/app-test.conf
/etc/cron.d/app
/etc/cron.d/app-test
/etc/init.d/app
/etc/init.d/app-test

ما هي الطريقة الجيدة لتحقيق ذلك؟

  • انسخ المواصفات وأعد تسمية كل شيء إلى "اختبار"؟
  • إنشاء حزم فرعية مختلفة للمنتج/الاختبار؟
  • هل تريد استخدام وحدات ماكرو rpm لتغيير الموقع والأسماء في المواصفات؟
  • استخدم دورة في الدقيقة - نقل؟

هل هناك أي دورة في الدقيقة موجودة تحاول القيام بذلك والتي يمكنني إلقاء نظرة عليها؟

هل كانت مفيدة؟

المحلول

في ملفات المواصفات الخاصة بي، أستخدم ملف وحدات الماكرو المضمنة وبعد ذلك، باستخدام حساب اختباري (وليس جذرًا) وملف ~/.rpmmacros مخصص، أقوم بتغيير البادئة الافتراضية:

%_prefix %{_home}

يعمل بشكل جيد.

يمكنك أيضًا إنشاء قاعدة بيانات اختبار rpm:

$ rpmdb --initdb --dbpath /home/test/var/lib/rpm

ووضع هذا في .rpmmacros الخاص بك:

%_dbpath /home/test/var/lib/rpm
%_rpmlock_path %{_dbpath}/__db.000

نصائح أخرى

على الرغم من أن لديك حلًا مختلفًا، فقد قررت أن أقترح طريقة أخرى لتحقيق ذلك.لا حرج في المحاكاة الافتراضية بالرغم من ذلك.ربما يكون الحل الأفضل على أي حال نظرًا لأن تشغيل بيئة اختبار على نفس الجهاز مثل الإنتاج ليس آمنًا/آمنًا على ما أعتقد.هكذا قال...

من المحتمل أن أستخدم ملف مواصفات واحدًا كقالب ثم هذا:

...
# somwwhere in the beginning of spec
%global testrel test

#rest of document
Source0: tarball-with-things%{?testrel}.tar.bz
...
%if ${?testrel:1}${!?testrel:0}
# this will execute only in test rpm
%endif
...

لاحظ أنه على وجه الخصوص %{?testrel} الماكرو هو الشيء المثير للاهتمام.فهو يمكّنك من تحديث الأشياء في وقت واحد لكلا الإصدارين، ولكن إذا كنت ترغب في الاحتفاظ بشيء محدد لإصدار واحد أو آخر فلا يزال بإمكانك ذلك.كما أنه لا يتطلب أي تغييرات على قاعدة البيانات، ووحدات الماكرو المخصصة في ~/.rpmmacros (والتي قد تتغير اعتمادًا على النظام الذي يتم بناؤه عليه)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top