2015-11-10 9 views
8

मैं CentOS 7 का उपयोग कर रहा है और एक नया सर्वर seting में CPAN मॉड्यूल स्थापित।समस्याग्रस्त स्थान

जबकि रूट के रूप में प्रवेश किया था, मैं CPAN के माध्यम से कई पर्ल मॉड्यूल स्थापित किया है। दुर्भाग्यवश, वे रूट की होम निर्देशिका के अंदर स्थापित हो गए प्रतीत होते हैं। मैं इस नोटिस नहीं किया था जब तक सभी मॉड्यूल स्थापित किए गए थे, लेकिन उनमें से ज्यादातर इस तरह के स्थान अब है:

/root/perl5/lib/perl5/5.16.3/x86_64-linux-thread-multi 
/root/perl5/lib/perl5/5.16.3 
/root/perl5/lib/perl5/x86_64-linux-thread-multi 
/root/perl5/lib/perl5 /usr/local/lib64/perl5 

इसका मतलब है कि, जड़ से अन्य उपयोगकर्ताओं के लिए, इन मॉड्यूल अनिवार्य रूप से अनुमतियों के रूप में मौजूद नहीं है, उन्हें उस निर्देशिका से बाहर ताला लगाओ।

मुझे लगता है मैं सभी उपयोगकर्ताओं के लिए/रूट पहुँच पढ़ देकर इस का समाधान कर सकता है, लेकिन मैं नहीं बल्कि नहीं था।

तो, मैं पूछने के लिए कुछ विशिष्ट प्रश्न हैं:

  • क्या मैं गलत क्या किया? क्या मैंने सीपीएएन में पहली बार भाग लिया था? (सीपीएएन कॉन्फ़िगरेशन नीचे चिपकाया गया है)
  • इसे साफ़ करने का सबसे अच्छा तरीका क्या है? मुझे लगता है कि मुझे मॉड्यूल को अनइंस्टॉल करने, मेरी कॉन्फ़िगरेशन बदलने, और फिर उन्हें पुनर्स्थापित करने की आवश्यकता है? अनुभवी सलाह की सराहना की जाती है।
  • CentOS 7 के लिए आदर्श सामान्य स्थापना निर्देशिका क्या है? मैं उन्हें कहां ले जाना चाहता हूं? मैंने माना कि सीपीएएन उन्हें आदर्श डिफ़ॉल्ट स्थान पर रखेगा।

सभी सलाह कृतज्ञता प्राप्त किया।

cat MyConfig.pm 

$CPAN::Config = { 
    'applypatch' => q[], 
    'auto_commit' => q[1], 
    'build_cache' => q[100], 
    'build_dir' => q[/root/.cpan/build], 
    'build_dir_reuse' => q[0], 
    'build_requires_install_policy' => q[yes], 
    'bzip2' => q[], 
    'cache_metadata' => q[1], 
    'check_sigs' => q[0], 
    'colorize_output' => q[0], 
    'commandnumber_in_prompt' => q[1], 
    'connect_to_internet_ok' => q[1], 
    'cpan_home' => q[/root/.cpan], 
    'ftp_passive' => q[1], 
    'ftp_proxy' => q[], 
    'getcwd' => q[cwd], 
    'gpg' => q[/bin/gpg], 
    'gzip' => q[/bin/gzip], 
    'halt_on_failure' => q[0], 
    'histfile' => q[/root/.cpan/histfile], 
    'histsize' => q[100], 
    'http_proxy' => q[], 
    'inactivity_timeout' => q[0], 
    'index_expire' => q[1], 
    'inhibit_startup_message' => q[0], 
    'keep_source_where' => q[/root/.cpan/sources], 
    'load_module_verbosity' => q[none], 
    'make' => q[/bin/make], 
    'make_arg' => q[], 
    'make_install_arg' => q[], 
    'make_install_make_command' => q[/bin/make], 
    'makepl_arg' => q[], 
    'mbuild_arg' => q[], 
    'mbuild_install_arg' => q[], 
    'mbuild_install_build_command' => q[./Build], 
    'mbuildpl_arg' => q[], 
    'no_proxy' => q[], 
    'pager' => q[/bin/less], 
    'patch' => q[/bin/patch], 
    'perl5lib_verbosity' => q[none], 
    'prefer_external_tar' => q[1], 
    'prefer_installer' => q[MB], 
    'prefs_dir' => q[/root/.cpan/prefs], 
    'prerequisites_policy' => q[follow], 
    'scan_cache' => q[atstart], 
    'shell' => q[/bin/bash], 
    'show_unparsable_versions' => q[0], 
    'show_upload_date' => q[0], 
    'show_zero_versions' => q[0], 
    'tar' => q[/bin/tar], 
    'tar_verbosity' => q[none], 
    'term_is_latin' => q[1], 
    'term_ornaments' => q[1], 
    'test_report' => q[0], 
    'trust_test_report_history' => q[0], 
    'unzip' => q[], 
    'urllist' => [q[http://mirror.sov.uk.goscomb.net/CPAN/], q[http://ww 
+w.mirrorservice.org/sites/cpan.perl.org/CPAN/], q[http://cpan.mirrors 
+.ovh.net/ftp.cpan.org/]], 
    'use_sqlite' => q[0], 
    'version_timeout' => q[15], 
    'wget' => q[/bin/wget], 
    'yaml_load_code' => q[0], 
    'yaml_module' => q[YAML], 
}; 
1; 
__END__ 
+3

मुझे लगता है कि यह वही समस्या है जैसा वर्णन किया गया है [मैंने सीपीएएन के साथ सफलतापूर्वक एक मॉड्यूल स्थापित किया है, लेकिन पेर्ल इसे नहीं ढूंढ सकता है। क्यों?] (Http://stackoverflow.com/q/32726324/176646) – ThisSuitIsBlackNot

+1

मैं इस प्रकार आपके दूसरे और तीसरे प्रश्नों का उत्तर दे सकता हूं: [perlbrew] (http://perlbrew.pl/)। –

+0

यदि आप सिस्टम पर्ल का उपयोग कर रहे हैं, तो क्या आपने 'yum' का उपयोग करके मॉड्यूल स्थापित करने का प्रयास किया था? –

उत्तर

0

आप रूट के रूप में स्थापित मॉड्यूल, कि तुम क्या किया वह गलत :) मॉड्यूल स्थापना (मॉड्यूल परीक्षण सहित) है कि आप कभी नहीं का निरीक्षण करेंगे और लोगों से आप जानते हैं और नहीं करना चाहिए नहीं है कोड के बहुत सारे चलाना शामिल होता है भरोसा।

डिफ़ॉल्ट रूप से, CPAN.pm अपने पर्ल की स्थापना को देखने के लिए तय करने के लिए जहां मॉड्यूल स्थापित करने के लिए जा रहा है। यह उन्हें निर्देशिका में से किसी एक में डिफ़ॉल्ट @INC में रखना चाहता है।

मैं एक CentOS उपयोगकर्ता नहीं हूं, लेकिन मेरी सलाह उपयोगकर्ताओं के लिए एक अलग perl स्थापित करना है। आप perl को गड़बड़ नहीं करना चाहते हैं कि आपके सिस्टम को इसके हाउसकीपिंग कार्य करने की आवश्यकता है।

तुम भी configure CPAN to install in a particular location कर सकते हैं।

+0

फिर 'सुडो सीपीएन' का उपयोग करना सही है? –

+0

मैं आपको सीपीए के लिए सूडो नहीं करता हूं। मेरे पास या तो उपयोगकर्ता है जो उस समूह से संबंधित है जो पर्ल निर्देशिकाओं (एक अलग perl में) का मालिक है, या डिस्ट्रो के पैकेज मैनेजर के माध्यम से सिस्टम perl को अद्यतन करता है। –

+0

उपयोगकर्ता स्यूडो का उपयोग करके या सीपीए को रूट के रूप में चलाने के लिए सिस्टम सिस्टम को विस्तृत करना चाहता है या स्थानीय :: lib उसकी आवश्यकताओं को कैसे मार रहा है इसके बारे में कुछ भी नहीं बदलता है। – mikebabcock

2

सरल समाधान (रूट के रूप में लॉग-इन)

vi ~/.bashrc

टिप्पणी बाहर निम्नलिखित लाइनों:

#export PERL_LOCAL_LIB_ROOT="$PERL_LOCAL_LIB_ROOT:/root/perl5"; 
    #export PERL_MB_OPT="--install_base /root/perl5"; 
    #export PERL_MM_OPT="INSTALL_BASE=/root/perl5"; 
    #export PERL5LIB="/root/perl5/lib/perl5:$PERL5LIB"; 
    #export PATH="/root/perl5/bin:$PATH"; 

लॉग बाहर, रूट के रूप में फिर से लॉग इन, और अब cpan सही सिस्टम निर्देशिकाओं में स्थापित होगा।

मैं बस/root/perl5 निर्देशिका को हटा दूंगा और फिर से शुरू करूंगा।

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