【问题标题】:How can I avoid sudo-ing when installing Perl modules with 'cpan'?使用“cpan”安装 Perl 模块时如何避免 sudo-ing?
【发布时间】:2010-01-09 01:34:03
【问题描述】:

我已将 Perl 从源代码安装到 /usr/local,并相应地调整了我的路径,遵循 brian d foy's suggestion here.

我确定我遗漏了一些东西,但是,现在我正在尝试使用“cpan”命令安装东西,但它失败了,因为它无法写入 /usr/local。我必须使用 sudo,这对我来说感觉不对。 CPAN 的东西应该去另一个地方吗?必须使用 sudo 正常吗?

【问题讨论】:

    标签: perl cpan sudo


    【解决方案1】:

    如果使用sudo 真的让您感到困扰,您可以使用local::lib 并在您的主目录中安装模块 - 您不需要超级用户权限。

    也就是说,使用sudo 应该不会打扰您。没有什么必然是错的。正如 Gbacon 所说,如果您想安装在 /usr/local 中,则需要它,因为 /usr/local 由系统上的所有用户共享(因此它的权限反映了这一点):

    Telemachus ~ $ ls -ld /usr/local/ drwxr-xr-x 17 根轮 578 Jan 8 20:00 /usr/local/

    【讨论】:

    • local::lib 的问题在于同时维护不同的 perls。如果您想按照我的建议完全隔离安装,您不想将不同 perls 的模块安装在同一目录中。
    【解决方案2】:

    /usr/local 树受到保护。使用sudo在那里安装软件是完全正常的。

    安装到单独的库位置是一个常见问题。请参阅第 8 节中的 "How do I keep my own module/library directory?"

    关键摘录:

    您可以在您的 CPAN.pm 配置中进行设置,以便在您使用 CPAN.pm shell 时模块自动安装在您的私有库目录中:

    % cpan  
    cpan> o conf makepl_arg INSTALL_BASE=/mydir/perl  
    cpan> o conf commit
    

    对于基于 Build.PL 的发行版,使用 --install_base 选项:

    perl Build.PL --install_base /mydir/perl
    

    您也可以将CPAN.pm 配置为自动使用此选项:

    % cpan  
    cpan> o conf mbuild_arg "--install_base /mydir/perl"  
    cpan> o conf commit
    

    【讨论】:

    • 我认为他已经在这样做了。常见问题解答中的建议不足以解决此问题。有一个 mbuild_install_build_command 和一个 make_install_make_command 选项,您可以在其中将 sudo 设置为要在安装步骤中使用的命令。
    【解决方案3】:

    /usr/local 目录不应该被普通用户写入,但是 Unix 设置有很多功能可以处理这个问题。

    在我的建议中,我建议设置 /usr/local/perls。您可以授予该目录任何您喜欢的权限。不要对超出您需要的目录应用任何权限。

    我建议建立一个perl 组,将自己添加到该组,并使 Perl 库目录组可写。设置完成后,您无需 sudo,因为您拥有组权限。

    除此之外,您还可以调整您的 CPAN.pm 配置以在安装阶段使用 sudo。查看文档中的 make_install_make_commandmbuild_install_build_command 命令。只需搜索“sudo”,您就会找到它们。

    祝你好运,:)

    【讨论】:

      【解决方案4】:

      在您的 CPAN shell 中,将其配置为在 sudo 下运行 makebuild 步骤:

      o conf make_install_make_command 'sudo make'
      o conf mbuild_install_build_command 'sudo ./Build'
      o conf commit
      quit
      

      (我找到了这些here -- 我不是 CPAN 专家。)

      【讨论】:

        猜你喜欢
        • 2016-07-08
        • 2013-06-30
        • 2020-05-07
        • 2011-06-15
        • 2014-02-18
        • 2020-01-25
        • 2019-04-11
        • 2014-10-18
        • 1970-01-01
        相关资源
        最近更新 更多