كيف يمكنني تعديل بيئة cygwin الخاصة بي لاستخدام Strawberry Perl بدلاً من توزيعة Perl المجمعة؟

StackOverflow https://stackoverflow.com/questions/463947

سؤال

أستخدم حاليًا الفراولة بيرل كتوزيع بيرل الأساسي الخاص بي.ومع ذلك، لدي بعض التطبيقات التي تقوم بإجراء مكالمات Perl من خلال cygwin.تفشل هذه بشكل عام لأنها تستدعي إصدار Perl الذي تم حزمه مع cygwin، وتبحث فقط في مجلدات cygwin's lib.كيف يمكنني تعديل بيئة cygwin الخاصة بي للاتصال بـ Strawberry Perl (واستخدام C:/Strawberry/Perl/lib dirs) بدلاً من ذلك؟

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

المحلول

إذا قمت بإزالة Perl من cygwin باستخدام برنامج الإعداد، فسيتم استخدام Strawberry Perl بشكل افتراضي.

إذا لم تتمكن من إزالة Perl من cygwin، فيمكنك إنشاء رابط رمزي إلى Perl القابل للتنفيذ من Strawberry.

من shell cygwin، استخدم مجموعة الأوامر التالية:

$ mv /usr/bin/perl /usr/bin/perl-cygwin
$ ln -s /cygdrive/c/strawberry/perl/bin/perl.exe /usr/bin/perl

هذا على افتراض أنك استخدمت مثبت Strawberry Perl الافتراضي.تحديث الخاص بك perl.exe الموقع وفقًا لذلك إذا قمت بتثبيته في مكان آخر.

تحقق للتأكد من أن الرابط يعمل بشكل صحيح عن طريق التحقق من إصدار Perl:

$ perl -v

ينبغي أن يقول هذا هو إصدار Perl المصمم لـ MSWin32-x86-multi-thread (أو ما شابه ذلك) و لا مصمم لـ cygwin-thread-multi-64int.

نصائح أخرى

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

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

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

و"التي بيرل" هو صديقك.

إذا كان لديك مشكلة مع هذا، هل يمكن تعيين متغير البيئة PERL5LIB، ولكن يجب أن لا يكون ضروريا.

وأنا لا تزال تمر في مسارات الملفات على غرار DOS كمعلمات في المخطوطة، أي "د: \ البيانات \ على Myfile.txt"، وليس "/cygdrive/d/data/myfile.txt". لذلك الغريب، هذا المزيج من تدوين مسار يعمل:

وباش> /cygdrive/d/scripts/myscript.pl D: \ البيانات \ على Myfile.txt

والعديد من هذه هي حلول جيدة، لكنني بدلا تأخذ واحدة من السهل أن ليس لدي لتعديل أكثر من مرة واحدة.

وكل ما عليك القيام به هو إضافة / تعديل خط في ملف .bashrc الخاص بك.

# Prepend strawberry perl to cygwin's path
export PATH=/cygdrive/C/Tools/Perl/perl/bin:$PATH

وملف .bashrc مصدر من قذيفة الخاص بك، (أو بدء قذيفة جديدة) وتشغيل البرنامج.

source ~/.bashrc
perl script.pl 

وهذا قد لا يكون الحل المفضل، ولكن يجب أن تكون قادرا على تعديل #! السطر:

#!/cygdrive/c/strawberry/perl/bin/perl5.10.0

وأنا دائما الرجوع إلى موقع صريح وتركيب بيرل، بدلا من الاعتماد على ما هو موجود في / البيرة / بن.

ولدي اثنين من النصوص التي تستخدم لتعديل السطر الأول من مخطوطات برل لأيهما بيرل هو الأول في طريقي: <لأ href = "http://www.win.tue.nl/~rp/bin/rightperl "يختلط =" نوفولو noreferrer "> rightperl hardcodes إلى بيرل وهذا هو أول في بلدي $ PATH <م> الآن ، <وأ href =" http://www.win.tue.nl/ ~ روبية / بن / envperl "يختلط =" نوفولو noreferrer "> envperl وتغيير الخط إلى #! / البيرة / بن / الحياة الفطرية بيرل ذلك بيرل لاستخدام يتم اختيار فقط في الوقت يتم استدعاء البرنامج النصي. تعمل بشكل جيد تحت سيغوين (ومن قذيفة يونكس بشكل عام).

إذا كنت لا تريد العبث بأي مسارات أو القيام بأي شيء دائم، فهناك طريقة سهلة اختراق مؤقت.اكتب "حيث بيرل" في موجه Cygwin sh.سيقوم بإدراج جميع ملفات Perl.exe التي يراها في PATH بترتيب تنفيذها.قم بتغيير أسماء الأسماء التي لا تريد أن يتم رؤيتها والتي يتم إدراجها قبل بيرل الذي تريد استخدامه.لكن تذكر تغييرها مرة أخرى عند الانتهاء وإلا قد تواجه بعض المشكلات في المستقبل.

وأنا لا أملك آلة سيغوين قريب لذلك لا يمكن اختبار ذلك، ولكن ربما يمكنك الأمامية الأمر بيرل مع نصي: اذهب إلى / بن تحت سيغوين ونقل perl.exe هناك إلى شيء آخر مثل بيرل-org.exe، ثم إعداد برنامج نصي قذيفة اداريو بيرل الأخرى الخاصة بك مع نفس الحجج.

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