为什么安装某些CPAN模块需要root权限?

时间:2009-09-02 10:27:34

标签: perl cpan

我需要在linux盒子里安装一些CPAN模块,我没有root权限。

Spreadsheet::WriteExcel的安装进展顺利。但是安装File::Find::Rule的尝试失败并警告“您没有安装到.....的权限”,并提示“您可能需要su到root来安装软件包”

我很困惑为什么有些CPAN模块安装需要root权限,而有些则不需要root权限?如果我真的想在linux框中使用File::Find::Rule,我可以选择任何解决方案吗?

感谢。

7 个答案:

答案 0 :(得分:13)

您是否已为该用户设置CPAN以安装到您控制的目录中?

如果是这样,那么您可能会遇到使用Extutils::MakeMaker(最老和最常见的构建/安装系统),Module::BuildModule::Install的模块之间的差异。他们都有点怪癖。

这就是创建local::lib的原因。一旦你安装并安装它,你就不必再担心它了(除了那些想要把东西写到特定地方的流氓模块,即使他们被告知不要这样做。)

答案 1 :(得分:9)

查看local::lib以便安装到其他位置。

答案 2 :(得分:8)

来自perlfaq8

<小时/> How do I keep my own module/library directory?

构建模块时,请告诉Perl在哪里安装模块。

对于基于Makefile.PL的发行版,在生成Makefile时使用INSTALL_BASE选项:

perl Makefile.PL INSTALL_BASE=/mydir/perl

您可以在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

答案 3 :(得分:2)

您可能无权将模块安装到/usr/lib等系统目录。如果您要执行此操作,则需要使用超级用户权限(make installsu)运行sudo步骤。

或者,您可以将Perl模块安装到您具有权限的本地目录,而不是安装到默认系统位置。您在生成makefile时指定自定义目录。

来自perlmodinstall

gzip -dc yourmodule.tar.gz | tar -xof -
perl Makefile.PL PREFIX=/my/perl_directory
make
make test
make install

答案 4 :(得分:2)

确实,UNIX下的某些软件包要求用户为&#34; root&#34;。安装 Template :: Toolkit 时,它触发了 AppConfig ,其中包含以下内容:

  You may have to su to root to install the package
  (Or you may want to run something like
    o conf make_install_make_command 'sudo make'
  to raise your permissions.

Cygwin不是UNIX。它只是Cygwin的一组UNIX实用程序。没有 root 用户,没有 sudo ,也没办法伪造它。如果您以管理员身份运行Bash,则无法以某种方式成为 root 。 (实际上它可能很危险。)

实际问题是 / usr / man / man3 没有权限:

 > ls -ls /usr/share/man
total 1.2M
384K d--------- 1 spindlea Domain Users 0 Oct 29 18:55 man1/
768K d--------- 1 spindlea Domain Users 0 Oct 29 18:55 man3/
8.0K d--------- 1 spindlea Domain Users 0 Oct 29 12:35 man5/
 12K d--------- 1 spindlea Domain Users 0 Oct  6 16:26 man7/
 12K d--------- 1 spindlea Domain Users 0 Oct 29 12:35 man8/
   0 d--------- 1 spindlea Domain Users 0 Oct  6 16:26 mann/

因此无法安装man-pages。原因: C:/ Cygwin 已从存档中解压缩。在NTFS文件系统下,Cygwin默认在Windows ACL上实现UNIX权限(尽管您无法在&#34; Security&#34;选项卡中看到它们)。这些在ZIP档案中无法存活。

要恢复权限,请使用以下内容:

 > chmod -R 755 /usr/bin        # sets -rwxr-xr-x
 > chmod -R 755 /usr/local/bin  # sets -rwxr-xr-x
 > find /bin  -type d -print -exec chmod 777 {} \;
 > find /etc  -type d -print -exec chmod 777 {} \;
 > find /usr  -type d -print -exec chmod 777 {} \;
     .
     .

问题消失了。安装没有问题。 CPAN能够满足所有依赖关系。

否&#34;您可能需要su到root才能安装软件包&#34;错误了。

答案 5 :(得分:1)

答案 6 :(得分:-3)

这是因为某些软件包安装在您的用户无权写入的位置。

我的建议是让管理员为您安装软件包。我怀疑没有一种简单的方法可以解决这个问题。

相关问题