【问题标题】:Installing CPAN modules without root在没有 root 的情况下安装 CPAN 模块
【发布时间】:2012-07-07 03:00:41
【问题描述】:

我按照helpful tutorial 为我的用户安装了 Perl。很抱歉链接到外部网站,但我认为阅读这是了解如何回答问题的唯一方法。

任何人,我正在为 CPAN 配置提供默认值 - 通过教程创建的 .cpanCPAN 目录 - 但由于某种原因,CPAN 仍然想深入研究 /usr/lib/ - 它只是无法访问- 当我尝试安装模块时。这是在安装 DBD::CSV 时。

这里是错误信息:

All tests successful (7 subtests UNEXPECTEDLY SUCCEEDED), 3 tests skipped.
Files=23, Tests=706,  3 wallclock secs ( 2.28 cusr +  0.54 csys =  2.82 CPU)
/usr/bin/make test -- OK
Running make install
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ERROR: Can't create '/perl5lib/lib/Bundle/DBD'
mkdir /perl5lib: Permission denied at /usr/lib/perl5/5.8.8/ExtUtils/Install.pm line 457
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
at -e line 1
make: *** [pure_site_install] Error 13
/usr/bin/make install  -- NOT OK

好像走错了perl5lib

【问题讨论】:

    标签: perl cpan


    【解决方案1】:

    是的,local::lib 有帮助。我建议使用 cpanm 而不是 cpan。我认为它默认安装所有东西 ~/perl5/lib/perl5。这是super useful tutorial

    【讨论】:

    • 您好 - 感谢您的回复。我开始尝试安装 cpanm,它需要访问我被限制的文件夹。我将继续进行 local::lib 的引导安装,我想。但我想知道,有没有办法改变环境。带有常规 cpan 的变量,这样它就不会在 usr/lib 中查找?
    • 是的,环境变量 PERL5LIB 就是你想要的。
    【解决方案2】:

    local::lib 导致安装程序使用 INSTALL_BASE,我认为它已损坏。我使用 perlbrew 来安装 Perl 的本地副本。

    • 您不会弄乱系统的 Perl 安装,因此不会破坏您的操作环境。
    • 让您可以轻松安装多个版本和构建的 Perl。
    • 不需要使用INSTALL_BASE。
    • 无需特殊权限。

    【讨论】:

      【解决方案3】:

      看看这个模块:local::lib

      【讨论】:

        【解决方案4】:

        您是否在 cpan 中配置了 myconfig.pm 而不是让它自动填充所有默认值?在 cpan 配置期间,您需要为 Makefile.PL 部分添加 PREFIX="" 以便它将模块安装到您具有写入权限的这个新位置。由于它已经为您自动配置,请进入 .cpan/CPAN/,查找 MyConfig.pm 并对其进行编辑。找到“makepl_arg”行并将 [] 中的值更改为包含 PREFIX=""。然后尝试 perl -MCPAN -e shell 并安装一个模块。

        【讨论】:

          猜你喜欢
          • 2011-12-26
          • 2019-10-16
          • 2010-12-15
          • 2011-04-13
          • 2014-09-03
          • 2010-09-11
          • 2011-08-15
          • 2011-11-19
          • 2016-02-01
          相关资源
          最近更新 更多