10

我已将 Perl 从源代码安装到 /usr/local,并按照brian d foy 的建议在这里相应地调整了我的路径。

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

4

4 回答 4

11

如果它真的让您感到困扰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/
于 2010-01-09T02:50:15.020 回答
9

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

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

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

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

祝你好运, :)

于 2010-01-09T10:09:48.477 回答
9

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

安装到单独的库位置是一个常见问题。请参阅“如何保留我自己的模块/库目录?” 在第 8 节中。

关键摘录:

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

% 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
于 2010-01-09T01:40:27.627 回答
6

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

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

(我在这里找到了这些——我不是 CPAN 专家。)

于 2012-03-26T12:22:52.070 回答