2015-11-10 5 views
8

Ich benutze CentOS 7 und stelle einen neuen Server ein.Installierte CPAN-Module an problematischer Stelle

Während ich als root angemeldet bin, habe ich mehrere Perl-Module über CPAN installiert. Leider scheinen sie im Home-Verzeichnis von Root installiert zu sein. Ich habe nicht bemerkt, bis alle Module installiert wurden, aber die meisten von ihnen haben Orte wie dies jetzt:

/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 

Dies bedeutet, dass für andere Benutzer als root, diese Module im Wesentlichen nicht existieren, wie die Berechtigungen Sperren Sie sie aus diesem Verzeichnis.

Ich weiß, ich könnte das lösen, indem ich allen Benutzern Lesezugriff auf/root gebe, aber das möchte ich lieber nicht.

Also, habe ich ein paar spezifische Fragen zu stellen:

  • Was habe ich falsch gemacht? Habe ich eine Option in CPAN beim ersten Mal übersprungen? (CPAN config ist unten eingefügt)
  • Was ist der beste Weg, um dies zu bereinigen? Ich nehme an, ich muss die Module deinstallieren, meine Konfiguration ändern und sie dann neu installieren? Erfahrene Beratung wird geschätzt.
  • Was ist das ideale allgemeine Installationsverzeichnis für CentOS 7? Wohin möchte ich sie bewegen? Ich nahm an, dass CPAN sie in einen idealen Standard-Speicherort setzen würde: .

Alle Ratschläge dankbar erhalten.

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

Ich vermute, das ist das gleiche Problem wie beschrieben in [Ich installierte ein Modul erfolgreich mit CPAN, aber Perl kann es nicht finden. Warum?] (Http://stackoverflow.com/q/32726324/176646) – ThisSuitIsBlackNot

+1

Ich kann Ihre zweite und dritte Frage so beantworten: [perlbrew] (http://perlbrew.pl/). –

+0

Wenn Sie das System Perl verwenden, haben Sie dann versucht, die Module mit 'yum' zu installieren? –

Antwort

0

Sie installierten Module als root, dann ist es das, was du falsch gemacht hast :) Modul Installation beinhaltet eine Menge Code (einschließlich Modultests), die Sie nie untersuchen und von Menschen, die Sie nicht kennen und sollten nicht aktiv Vertrauen.

Standardmäßig prüft CPAN.pm die Installation von Perl, um zu entscheiden, wo die Module installiert werden sollen. Es möchte sie in einem der Verzeichnisse im Standard @INC setzen.

Ich bin kein CentOS-Benutzer, aber mein Rat ist, eine andere für Benutzer zu installieren. Sie möchten nicht die perl durcheinander bringen, die Ihr System benötigt, um seine Hausarbeit zu erledigen.

Sie können auch configure CPAN to install in a particular location.

+0

Dann ist es richtig, 'sudo cpan' zu verwenden? –

+0

Ich sudo nicht für cpan. Ich habe entweder einen Benutzer, der zu der Gruppe gehört, die die Perl-Verzeichnisse besitzt (in einem anderen Perl), oder ich aktualisiere das System Perl über den Paket-Manager der Distribution. –

+0

Der Benutzer möchte Pakete systemweit installieren, indem er sudo verwendet oder nicht, und cpan als root ausführen oder nicht ändert nichts daran, wie local :: lib seine Bedürfnisse killt. – mikebabcock

2

Simplest Lösung (als root angemeldet)

vi ~/.bashrc

Kommentar die folgenden Zeilen aus:

#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"; 

Abmelden, melden Sie sich wieder als root, und jetzt cpan wird in den richtigen Systemverzeichnissen installiert.

Ich würde einfach löschen/Root/perl5 Verzeichnis und neu beginnen.

Verwandte Themen