سؤال

أحاول الحصول على cruisecontrol.rb لتشغيل RCOV أثناء الإنشاء. فشل حاليا مع الخطأ التالي:

sh: rcov: not found 

منذ أن أستطيع تشغيل rcov من القذيفة عندما أقوم بتسجيل الدخول، وأني أن هذه مشكلة مسار. (بالإضافة إلى ذلك، يمكنني تشغيل كليهما rake test:rcov و rake cruise من قذيفة دون أخطاء). أضفت أ p 'echo $PATH' بيان (مع الخلفية الصحيحة لتنفيذ الأمر؛ شكرا الشكر) إلى Cruise.Rake واكتشف أن المسار كان غير صحيح بالفعل:

"/usr/local/bin:/usr/bin:/bin\n"

يتم تنفيذ RCOV القابل للتنفيذ في /var/lib/gems/1.8/bin/rcov، لذلك لا عجب أن C.RB لا يمكن العثور عليه.

ومع ذلك، لا يمكنني معرفة كيفية ضبط المسار بشكل صحيح. لدي هذه المجموعة في أسفل بلدي .profile:

PATH="$PATH:/var/lib/gems/1.8/bin/"

هذا هو ما يجعله يعمل بشكل تفاعلي، لكنه لا يتم التقاطه بواسطة CC.

أنا أقوم بتشغيل cruisecontrol.rb تحت prafficer phusion (وبالتالي تحت أباتشي). لقد قمت بفحص العديد من الملفات التي يمكنني التفكير فيها، لكن لا شيء يبدو وكأنه طريق لي.

أين يمكنني تعيين المسار و / أو تحديد مكان ضبط المسار؟

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

المحلول

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

export PATH=....

أو

PATH=...
export PATH

لا يمكن الوصول إلى قيم متغير البيئة غير المصدرة إلا من خلال نفس عملية شل.

ولكن هذه ليست مشكلتك لأنك تقوم بتشغيل الراكب بالتفكيك. يتم قراءة frofile فقط بواسطة shell، ومنذ لا يتم تشغيل Apache من القشرة، ولكن من عملية إقرار النظام، كل ما وضعت فيه. يتم تجاهله. بالنسبة للركاب Phusion، يجب عليك تعيين المسار الخاص بك مع MOD_ENV وتوجيه SetEnv، مثل هذا:

<VirtualHost *:80>
    ServerName something.test
    DocumentRoot /somewhere/to/cruisecontrol/public
    SetEnv PATH /usr/bin:/usr/local/bin:/bin:/var/lib/gems/1.8/bin    # <---- add this
</VirtualHost>

نصائح أخرى

أخيرا حصلت على كل شيء يعمل.

أولا، @ نصيحة Hongli حول تحديد المسار داخل Apache كان صحيحا؛ تمكن Setenv من ضبط المسار للموقع المستندة إلى الركاب.

بعد الحفر من خلال CruiseControl.rb، اكتشفت المشكلة الثانوية (التي قمت بإشلاءها في تعليقاتي على إجابة Hongli). أثناء بدء التشغيل، Forks CC.RB عملية منشئ لكل مشروع. كل عملية تحصل على طريق والدها في الوقت الذي تم إنشاؤه. وبعد مشكلتي كانت أنني أعيد تشغيل Apache، لكن هذا لم يكن إعادة تشغيل عمليات البناء لأي سبب من الأسباب. وبالتالي، لم يحصل البناة على تحديثات المسار الخاصة بي، ويبدو أنه لا يحصل على الطريق من Apache. أدى ذلك إلى الاعتقاد بأن مساراتهم تم تعيينها في مكان آخر - ولكن هذا ليس هو الحال.

إعادة تشغيل النظام فعلت الخدعة؛ حصل البنائيون الجدد على الطريق الجديد من أباتشي والآن يعمل كل شيء كما هو متوقع. ربما هناك طريقة أخرى لإعادة تشغيل البنائين، لكنني لم أحقق ذلك.

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