كيف يمكنني استخدام وحدة Perl جديدة بدون أذونات التثبيت؟

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

سؤال

هنا حالتي:لا أعرف شيئًا تقريبًا عن لغة Perl ولكنها اللغة الوحيدة المتوفرة على جهاز النقل.ليس لدي سوى أذونات للكتابة في منطقة العمل المحلية الخاصة بي وليس في موقع تثبيت Perl.أحتاج إلى استخدام الموازي::ForkManager وحدة بيرل من CPAN

كيف يمكنني استخدام Parallel::ForkManager دون إجراء تثبيت مركزي؟هل هناك متغير بيئة يمكنني ضبطه بحيث يقع؟

شكرًا

دينار أردني

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

المحلول

perlfaq8: كيف أحافظ على بلدي وحدة / دليل مكتبة : <؟ / P>

عند بناء وحدات، ويقول بيرل حيث لتثبيت وحدات.

لتوزيعات القائم على C، استخدام الخيار INSTALL_BASE عند إنشاء Makefiles:

perl Makefile.PL INSTALL_BASE=/mydir/perl

ويمكنك تعيين هذا في التكوين CPAN.pm الخاص بك حتى وحدات تثبيت تلقائيا في دليل مكتبة الخاص بك عند استخدام قذيفة CPAN.pm:

% cpan
cpan> o conf makepl_arg INSTALL_BASE=/mydir/perl
cpan> o conf commit

لتوزيعات القائم على C، استخدام الخيار --install_base:

perl Build.PL --install_base /mydir/perl

ويمكنك تكوين CPAN.pm لاستخدام هذا الخيار تلقائيا أيضا:

% cpan
cpan> o conf mbuild_arg --install_base /mydir/perl
cpan> o conf commit

وINSTALL_BASE يقول هذه الأدوات لوضع وحدات الخاص بك F. انظر L حصول على تفاصيل حول كيفية تشغيل الخاص بك حديثا مستوى، moudles تثبيتها.

وهناك واحد التحذير مع INSTALL_BASE، على الرغم من أنه يعمل بشكل مختلف من الإعدادات PREFIX وLIB أن الإصدارات القديمة من دعا ExtUtils :: MakeMaker. INSTALL_BASE لا تدعم تركيب وحدات للإصدارات متعددة من بيرل أو مختلفة أبنية تحت نفس الدليل. يجب عليك أن تنظر إذا كنت تريد حقا أن، وإذا قمت بذلك، استخدم PREFIX السن وLIB الإعدادات. رؤية ExtUtils :: الوثائق Makemaker لمزيد من التفاصيل.

نصائح أخرى

الدفع هذا المشنور من مارك دومينوس

مقتطفات:

  • قم بتعيين PREFIX=X عند إنشاء ملف Makefile
  • قم بتعيين INSTALLDIRS=vendor وVENDORPREFIX=X عند إنشاء ملف Makefile
    • أو ربما بدلاً من VENDORPREFIX تحتاج إلى تعيين INSTALLVENDORLIB أو شيء من هذا القبيل
    • أو ربما بدلاً من تعيينها أثناء إنشاء ملف Makefile، تحتاج إلى تعيينها أثناء تشغيل هدف التثبيت
  • اضبط LIB=X/lib عند إنشاء ملف Makefile
  • استخدم الاسمية
  • استخدم المحلي::lib

يقدم مارك أيضًا حلاً آخر في مدونته والذي يأخذ مساحة أكبر قليلاً للوصف ولكنه يتلخص في تشغيل الاختبار وإجراء الاختبار ولكن لا يتم التثبيت ثم استخدام الأشياء الموجودة في blib/.

تحميل حزمة شكل CPAN إلى مجلد:

wget http://search.cpan.org/CPAN/authors/id/S/SZ/SZABGAB/Parallel-ForkManager-1.06.tar.gz
gunzip Parallel-ForkManager-1.06.tar.gz
tar -xvf Parallel-ForkManager-1.06.tar

وقبل هذا إنشاء مجلد في المنزل لتخزين وحدات المحلية، انتقل الآن إلى مجلد تحميل وتشغيل follwing cmmands:

perl Makefile.PL PREFIX=/home/username/myModules
make
make test
make install

والحصول على المسار إلى ForkManager من مجلد تثبيت، / الوطن / اسم المستخدم / myModules وحدد مجلد الموازي والحصول على المسار الكامل لذلك.

والآن في ملف بيرل بك وضع هذه في بيجينينج

use lib '/home/username/myModules/bin.../Parallel';
use parallel::ForkManager;

و- ينبغي أن تفعل ذلك

وهناك متغير البيئة PERL5LIB، و-I على سطر الأوامر عندما يتعلق الأمر باستخدام الوحدة النمطية. هناك آليات لتقول CPAN وCPANPLUS.

وهناك معلومات في السؤال 5 من دليل كبان (perldoc CPAN، أو اطلع على CPAN نفسه) .

use lib 'directory';
use Parallel::ForkManager;

ويمكنك استخدام -I (ط العاصمة) تبديل سطر الأوامر تليها الدليل حيث يمكنك وضع وحدة. أو محاولة "استخدام ليب" التوجيه تليها الدليل.

perl Makefile.PL LIB=/my/perl_modules/lib/
make
make install
PERL5LIB=$PERL5LIB:/my/perl_modules/lib/
perl myperlcode.pl

وخيار استخدام cpanm -l $DIR_NAME.

فكر في استخدام cpanminus، وهو اقتراح مقترح هذا الموضوع الآخر

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