我的 mac 机器相当旧(Mac OS X 10.6.8),我有一个关于如何升级 perl 模块的问题File::Path
。
我主要使用以下方式编译我的 LaTeX 文档乳胶这基本上是一个 perl 脚本。它需要File::Path
2.08 版本,但我的机器上有一个过时的版本(版本 2.07_02)。这是我在运行命令时收到的错误消息latexmk
。
>> latexmk doc.tex
File::Path version 2.08 required--this is only version 2.07_02 at /usr/texbin/latexmk line 129.
当我cpan
以非 root 用户身份运行并尝试通过运行命令来升级此包时upgrade File::Path
,屏幕上出现了此消息。
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ERROR: Can't create '/Library/Perl/Updates/5.10.0/File'
mkdir /Library/Perl/Updates/5.10.0/File: Permission denied at
/System/Library/Perl/5.10.0/ExtUtils/Install.pm line 479
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
at -e line 1
make: *** [pure_perl_install] Error 13
DLAND/File-Path-2.09.tar.gz
/usr/bin/make install -- NOT OK
Warning (usually harmless): 'YAML' not installed, will not store persistent state
Failed during this command:
DLAND/File-Path-2.09.tar.gz : install NO
cpan
是否可以在 Mac OS X 中以非 root 用户身份升级 perl 模块?
答案1
您无法以非 root 身份修改现有安装。但是您可以在主目录(或您有写入权限的任何地方)安装 CPAN 模块,然后优先加载该模块(在大多数情况下。模块之间可能存在冲突,但您在这里可能没问题)。
有通过cpan
perlfaq 中的工具执行此操作的说明。但它可能有点繁琐。cpanm
经常推荐使用。
https://stackoverflow.com/questions/2980297/how-can-i-use-cpan-as-a-non-root-user有详细的安装说明cpanm
。
然后安装后,你只需要使用它来代替系统模块即可。有几种方法可以做到这一点。
您可以将 PERL5LIB 设置为本地目录。举个例子:
$ export PERL5LIB=~/perl5
$ perl myprog
如果您只需要对少量脚本执行此操作,您可以在脚本本身中添加路径:
#!/bin/perl
use lib '/home/me/perl5';
use File::Path;
其中任何一个都应该足以满足您的需要,但如果您只是测试一些东西,您也可以像这样临时向路径添加一个位置
$ perl -I ~/perl5 myprog