2009-02-26 4 views
5

मैं वर्तमान में/usr/local में मशीन पर प्राचीन पर्ल के अलावा मेरी होम निर्देशिका में पर्ल 5.10 सेट अप करना चाहता हूं। मैं इस मशीन पर एक सुपर-यूजर नहीं हूं।क्या मैं अपनी होम निर्देशिका में एक पूर्व-कॉन्फ़िगर किया गया पर्ल बाइनरी पैकेज स्थापित कर सकता हूं?

मुझे 5.10 HPUX perl बाइनरी पैकेज की आवश्यकता है और ऐसा लगता है कि ऐसा लगता है, लेकिन किसी कारण से ऐसा लगता है कि यह/usr/local (जैसा कि @INC त्रुटि संदेशों द्वारा प्रमाणित है) में चल रहा है। क्या PERLLIB के अलावा कुछ अन्य चर है, जैसे कि PERLHOME या मुझे कुछ सेट करने की आवश्यकता है ताकि पर्ल/usr/स्थानीय dirs में कुछ भी न देखे?

पीएस मैंने advice online को ./Configure चरण में डीआईआर संकलित करने और सेट करने के लिए देखा, लेकिन मुझे इस पुराने बॉक्स पर चीजों को संकलित करने में कठिनाई हो रही है, इसलिए मैं पूर्व-संकलित पर्ल का उपयोग करना पसंद करूंगा क्योंकि यह ज्यादातर काम करने लगता है।


अद्यतन - लियोन इस उत्तर दिया, तो मूल रूप से इसे अपने घर dir से सही ढंग से पर्ल बाइनरी चलाने के लिए जब तक यह मन में उस के साथ संकलित किया गया था

उत्तर

4

यह है या नहीं, अपने perl द्विआधारी है पर निर्भर करता है संभव नहीं है पुनर्निधारणीय। यह संकलन समय विकल्प है। इस आदेश का आउटपुट क्या है? क्या यह परिभाषित है या नहीं?

perl -V:userelocatableinc 
+0

perl -V: userelocatableinc userelocatableinc = 'undef'; –

+0

फिर आप भाग्य से बाहर हैं। आपको इसे स्वयं संकलित करना होगा। –

+0

क्या इसका मतलब यह काम नहीं करेगा? तो आपके जवाब मूल रूप से हैं कि इस बाइनरी को मेरे घर डीआईआर में रखने का कोई तरीका नहीं है क्योंकि उस चर को सेट नहीं किया गया था जब किसी ने इसे संकलित किया था। मान लीजिए कि उनके पास यह कैसे काम करेगा? –

-1

आप किसी भी दुभाषिया पथ आप पहली पंक्ति में चाहते को इंगित कर सकते हैं:

!#/my/local/perl 

और अगर आप पोर्टेबिलिटी के लिए मशीनों के लिए नहीं देख रहे हैं, आप अपनी स्क्रिप्ट में मैन्युअल @INC सेट कर सकते हैं। मुझे लगता है कि इसे env से भी प्राप्त करने का एक तरीका है, जो अधिक पोर्टेबल हो सकता है।

+0

बाइनरी में कुछ हार्ड कोड किए गए डिफ़ॉल्ट पथ हैं यदि यह ऊपर दिए गए विकल्पों के साथ संकलित नहीं किया गया है। –

4

आप इस उत्तर को पसंद नहीं करेंगे।

पर्ल अपने बाइनरी में तारों के रूप में @INC स्टोर करता है। इससे पहले userelocatableinc पर्ल को स्थानांतरित करने की तकनीक थी, बाइनरी पर एक खोज करना और प्रतिस्थापित करना था, साथ ही उन्हें Config.pm में बदलना था। इस तरह ActiveState एक स्थानापन्न पर्ल भेज दिया गया है।

तारों को उसी आकार के समान रहना होगा जैसा कि वे पहले थे, नल बाइट्स के साथ किसी अतिरिक्त स्थान को पैडिंग करना। एक्टिवस्टेट को "/ xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxTMPPATHxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" या कुछ जैसे उपसर्ग के साथ पर्ल को कॉन्फ़िगर करके इसके आसपास मिल जाएगा। यह बाइनरी में खोजने के लिए भी वास्तव में अस्पष्ट बना दिया। आपके पास ऐसी किस्मत नहीं है, इसलिए यह केवल तभी काम करेगा यदि वर्तमान पथ उन पथों से कम हैं जिन्हें आप उन्हें बदलना चाहते हैं।

लेकिन यह तरीका बहुत जटिल है। एचपी/यूएक्स के स्रोत का उपयोग करके अपने लिए पर्ल संकलित करें या बस perl.org से नियमित स्रोत लें। पर्ल में एक समर्पित एचपी/यूएक्स डेवलपर है, इसलिए इसे आसानी से जाना चाहिए।

+0

सक्रिय करने आदि के बारे में उस अतिरिक्त जानकारी के लिए धन्यवाद, इसलिए मैंने स्क्रैच से perl संकलित किया और यह काम करता है, हालांकि अभी भी PAR के @INC के साथ समस्या है, इसलिए जल्द ही जल्द ही अनुसरण करने के लिए नया प्रश्न है। धन्यवाद –

संबंधित मुद्दे

 संबंधित मुद्दे