2015-11-10 39 views
8

Używam CentOS 7 i konfiguruję nowy serwer.Zainstalowane moduły CPAN w trudnej lokalizacji

Podczas logowania jako root, zainstalowałem wiele modułów perla przez CPAN. Niestety, wydaje się, że zainstalowano je w katalogu domowym root'a. Nie zauważyłem tego momentu zostały zainstalowane wszystkie moduły, ale większość z nich ma miejsca jak to teraz:

/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 

Oznacza to, że dla użytkowników innych niż root, moduły te zasadniczo nie istnieją, jak uprawnienia zablokuj je z tego katalogu.

Wiem, że mogę rozwiązać ten problem, dając wszystkim użytkownikom prawo odczytu/root, ale wolałbym nie.

Więc mam kilka konkretnych pytań zadać:

  • Co zrobiłem źle? Czy pominąłem opcję w CPAN przy pierwszym uruchomieniu ? (Konfiguracja CPAN jest wklejona poniżej)
  • Jaki jest najlepszy sposób, aby to wyczyścić? Zakładam, że muszę odinstalować moduły, zmienić konfigurację, a następnie zainstalować je ponownie? Dozwolona jest doświadczona rada.
  • Jaki jest idealny ogólny katalog instalacyjny dla CentOS 7? Gdzie chcę je przenieść? Zakładam, że CPAN ustawi je w idealnej domyślnej lokalizacji .

Wszystkie rady zostały przyjęte z wdzięcznością.

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

Zgaduję, że jest to ten sam problem, co opisano w [Zainstalowałem moduł pomyślnie z CPAN, ale Perl nie może go znaleźć. Dlaczego?] (Http://stackoverflow.com/q/32726324/176646) – ThisSuitIsBlackNot

+1

Mogę odpowiedzieć na twoje drugie i trzecie pytanie w ten sposób: [perlbrew] (http://perlbrew.pl/). –

+0

Jeśli używasz systemu Perl, to czy próbowałeś zainstalować moduły używając 'yum'? –

Odpowiedz

0

zostały zainstalowane moduły jako root, to co zrobiłeś źle :) instalacja modułu polega działa dużo kodu (w tym testów modułowych), że nigdy nie sprawdzać i od ludzi, których nie znam i nie powinien zaufanie.

Domyślnie CPAN.pm zajmie się konfiguracją twojego Perla, aby zdecydować, gdzie zainstalować moduły. Chce umieścić je w jednym z katalogów domyślnie @INC.

Nie jestem użytkownikiem CentOS, ale moją radą jest zainstalowanie innego perl dla użytkowników. Nie chcesz zepsuć urządzenia perl, którego system potrzebuje do pracy w gospodarstwie domowym.

Możesz również configure CPAN to install in a particular location.

+0

Czy to właściwe używać 'sudo cpan'? –

+0

Nie jestem sudo dla cpan. Mam albo użytkownika, który należy do grupy, która jest właścicielem katalogów Perla (w innym perlu), albo aktualizuje systemowy perl za pośrednictwem menedżera pakietów distro. –

+0

Użytkownik chce zainstalować pakiety w całym systemie, używając sudo lub nie i uruchamiając cpan jako root lub nie zmieniając nic na temat tego, w jaki sposób local :: lib zabija jego potrzeby. – mikebabcock

2

Najprostsze rozwiązanie (zalogowany jako root)

vi ~/.bashrc

komentarz na następujące linie:

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

się wylogować, ponownie zalogować się jako root, a teraz cpan zainstaluje się w odpowiednich katalogach systemowych.

Po prostu usunę katalog/root/perl5 i zacznę od nowa.