【发布时间】:2016-02-11 16:46:26
【问题描述】:
我正在使用 CentOS 7 并设置新服务器。
虽然以 root 身份登录,但我已经通过 CPAN 安装了多个 perl 模块。不幸的是,它们似乎已经安装在 root 的主目录中。在安装所有模块之前我没有注意到这一点,但现在大多数模块都有这样的位置:
/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
这意味着,对于 root 以外的用户,这些模块基本上不存在,因为权限将它们锁定在该目录之外。
我知道我可以通过授予所有用户对 /root 的读取权限来解决这个问题,但我不想这样做。
所以,我有几个具体问题要问:
- 我做错了什么?我第一次跳过 CPAN 中的一个选项吗 跑了? (CPAN 配置粘贴在下面)
- 最好的清理方法是什么?我想我需要卸载模块,更改我的配置,然后重新安装它们?经验丰富的建议表示赞赏。
- CentOS 7 理想的通用安装目录是什么?我想把它们移到哪里?我认为 CPAN 会将它们置于理想的默认值中 位置。
感谢所有建议。
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__
【问题讨论】:
-
我可以回答你的第二个和第三个问题:perlbrew.
-
我安装了我可以使用 yum 的东西,但是由于 yum 缺乏可用性,许多旧模块需要使用 CPAN 安装。使用 CPAN 安装的模块安装在 /root 中。
-
@Blast 如果您要为多人管理一个系统,我不会使用 local::lib。 local::lib 更多地用于创建您自己的个人模块目录,例如当您没有管理员权限时;任何想要使用 local::lib 中的模块的人都必须在他们的每个脚本中添加一个
use local::lib '/path/to/dir',或者设置一些环境变量。我认为最好只用 yum 安装模块,或者构建一个新的 Perl 并使用 CPAN。请参阅 Dave Cross 的 Perl in RPM-Land 以及 (续) -
(续) CPAN RPMs in RHEL / CentOS : generation, conflict, and solutions。至于清理,我认为您可以放心地清除
/root/perl5(不要忘记从root 的.bashrc 中删除与local::lib 相关的环境变量)。请注意,您的 cpan 配置中没有任何关于您的 local::lib;这都是由环境变量控制的。