2015-11-10 2 views
8

J'utilise CentOS 7 et installe un nouveau serveur. En étant connecté en tant qu'utilisateur root, j'ai installé plusieurs modules perl via CPAN. Malheureusement, ils semblent s'être installés dans le répertoire personnel de root. Je ne l'ai pas remarqué jusqu'à ce que tous les modules ont été installés, mais la plupart d'entre eux ont des endroits comme maintenant:Modules CPAN installés dans un emplacement problématique

/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 

Cela signifie que, pour les utilisateurs autres que root, ces modules n'existent pas essentiellement, comme les autorisations les verrouiller hors de ce répertoire.

Je sais que je pourrais résoudre ceci en donnant à tous les utilisateurs l'accès en lecture à/root, mais je préfère ne pas.

Donc, j'ai quelques questions précises à poser:

  • Qu'est-ce que je fait de mal? Ai-je omis une option dans CPAN la première fois que le a fonctionné? (La configuration du CPAN est collée ci-dessous)
  • Quelle est la meilleure façon de nettoyer cela? Je suppose que j'ai besoin de désinstaller les modules, changer ma config, puis les réinstaller? Des conseils expérimentés sont appréciés.
  • Quel est le répertoire d'installation général idéal pour CentOS 7? Où dois-je les déplacer? J'ai supposé CPAN les mettrait dans un emplacement par défaut idéal .

Tous les conseils reçus avec reconnaissance.

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

Je suppose que c'est le même problème que décrit dans [J'ai installé un module avec succès CPAN, mais perl ne peut pas le trouver. Pourquoi?] (Http://stackoverflow.com/q/32726324/176646) – ThisSuitIsBlackNot

+1

Je peux donc répondre à vos deuxième et troisième questions: [perlbrew] (http://perlbrew.pl/). –

+0

Si vous utilisez le système Perl, avez-vous essayé d'installer les modules en utilisant 'yum'? –

Répondre

0

Vous modules installés en tant que root, c'est ce que vous avez fait de mal :) Installation du module consiste à exécuter beaucoup de code (y compris les tests du module) que vous ne serez jamais inspectez et de personnes que vous ne connaissez pas et ne doit pas confiance. Par défaut, CPAN.pm va regarder la configuration de votre Perl pour décider où installer les modules. Par défaut, CPAN.pm va regarder la configuration de votre Perl. Il veut les mettre dans l'un des répertoires par défaut @INC.

Je ne suis pas un utilisateur de CentOS, mais mon conseil est d'installer un autre perl pour les utilisateurs. Vous ne voulez pas gâcher le perl dont votre système a besoin pour faire son travail d'entretien ménager.

Vous pouvez également configure CPAN to install in a particular location.

+0

Alors est-il correct d'utiliser 'sudo cpan'? –

+0

Je ne vous sudo pour cpan. J'ai soit un utilisateur qui appartient au groupe qui possède les répertoires Perl (dans un autre perl), soit une mise à jour du système perl via le gestionnaire de paquets de la distribution. –

+0

L'utilisateur veut installer des paquets à l'échelle du système, en utilisant sudo ou non et en exécutant cpan en tant que root ou ne change rien sur la façon dont local :: lib détruit ses besoins. – mikebabcock

2

solution Simplest (connecté en tant que root)

vi ~/.bashrc

commentaire les lignes suivantes:

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

Déconnexion, reconnectez-vous en tant que root, et maintenant CPAN va installer dans les bons répertoires système. Je voudrais juste supprimer le répertoire/root/perl5 et recommencer.