如何以非 root 用户身份升级 Mac OS X 上的 File::Path

如何以非 root 用户身份升级 Mac OS X 上的 File::Path

我的 mac 机器相当旧(Mac OS X 10.6.8),我有一个关于如何升级 perl 模块的问题File::Path

我主要使用以下方式编译我的 LaTeX 文档乳胶这基本上是一个 perl 脚本。它需要File::Path2.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 模块,然后优先加载该模块(在大多数情况下。模块之间可能存在冲突,但您在这里可能没问题)。

有通过cpanperlfaq 中的工具执行此操作的说明。但它可能有点繁琐。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

相关内容