【发布时间】:2010-01-09 01:34:03
【问题描述】:
我已将 Perl 从源代码安装到 /usr/local,并相应地调整了我的路径,遵循 brian d foy's suggestion here.
我确定我遗漏了一些东西,但是,现在我正在尝试使用“cpan”命令安装东西,但它失败了,因为它无法写入 /usr/local。我必须使用 sudo,这对我来说感觉不对。 CPAN 的东西应该去另一个地方吗?必须使用 sudo 正常吗?
【问题讨论】:
我已将 Perl 从源代码安装到 /usr/local,并相应地调整了我的路径,遵循 brian d foy's suggestion here.
我确定我遗漏了一些东西,但是,现在我正在尝试使用“cpan”命令安装东西,但它失败了,因为它无法写入 /usr/local。我必须使用 sudo,这对我来说感觉不对。 CPAN 的东西应该去另一个地方吗?必须使用 sudo 正常吗?
【问题讨论】:
如果使用sudo 真的让您感到困扰,您可以使用local::lib 并在您的主目录中安装模块 - 您不需要超级用户权限。
也就是说,使用sudo 应该不会打扰您。没有什么必然是错的。正如 Gbacon 所说,如果您想安装在 /usr/local 中,则需要它,因为 /usr/local 由系统上的所有用户共享(因此它的权限反映了这一点):
【讨论】:
/usr/local 树受到保护。使用sudo在那里安装软件是完全正常的。
安装到单独的库位置是一个常见问题。请参阅第 8 节中的 "How do I keep my own module/library directory?"。
关键摘录:
您可以在您的
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
【讨论】:
/usr/local 目录不应该被普通用户写入,但是 Unix 设置有很多功能可以处理这个问题。
在我的建议中,我建议设置 /usr/local/perls。您可以授予该目录任何您喜欢的权限。不要对超出您需要的目录应用任何权限。
我建议建立一个perl 组,将自己添加到该组,并使 Perl 库目录组可写。设置完成后,您无需 sudo,因为您拥有组权限。
除此之外,您还可以调整您的 CPAN.pm 配置以在安装阶段使用 sudo。查看文档中的 make_install_make_command 和 mbuild_install_build_command 命令。只需搜索“sudo”,您就会找到它们。
祝你好运,:)
【讨论】:
在您的 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
(我找到了这些here -- 我不是 CPAN 专家。)
【讨论】: