我需要在linux盒子里安装一些CPAN模块,我没有root权限。
Spreadsheet::WriteExcel
的安装进展顺利。但是安装File::Find::Rule
的尝试失败并警告“您没有安装到.....的权限”,并提示“您可能需要su到root来安装软件包”
我很困惑为什么有些CPAN模块安装需要root权限,而有些则不需要root权限?如果我真的想在linux框中使用File::Find::Rule
,我可以选择任何解决方案吗?
感谢。
答案 0 :(得分:13)
您是否已为该用户设置CPAN
以安装到您控制的目录中?
如果是这样,那么您可能会遇到使用Extutils::MakeMaker
(最老和最常见的构建/安装系统),Module::Build
和Module::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 install
或su
)运行sudo
步骤。
或者,您可以将Perl模块安装到您具有权限的本地目录,而不是安装到默认系统位置。您在生成makefile时指定自定义目录。
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)
Stackoverflow上已有其他可能的答案:
答案 6 :(得分:-3)
这是因为某些软件包安装在您的用户无权写入的位置。
我的建议是让管理员为您安装软件包。我怀疑没有一种简单的方法可以解决这个问题。