1

我已将我的应用程序打包为 Perl 模块,但无法使用cpanorcpanm命令安装。问题是这些命令 - 当不以 root 身份运行时 - 将必备模块安装到 ~/perl5 目录中。但是,我的 ~/perl5 目录不包含在 @INC

这导致来自 cpanm 的以下令人困惑的输出:

$ cpanm --installdeps .
--> Working on .
Configuring my-module-0.001 ... OK
==> Found dependencies: Image::Size
--> Working on Image::Size
Fetching http://www.cpan.org/authors/id/R/RJ/RJRAY/Image-Size-3.232.tar.gz ... OK
Configuring Image-Size-3.232 ... OK
Building and testing Image-Size-3.232 ... OK
Successfully installed Image-Size-3.232
! Installing the dependencies failed: Module 'Image::Size' is not installed
! Bailing out the installation for my-module-0.001.
1 distribution installed

如您所见,它成功下载、测试并安装了 Image::Size 模块,但随后尝试使用它并失败。

我知道我可以通过将环境变量 $PERL5LIB 设置为“~/perl5/lib/perl5”并将“~/perl5/bin”添加到我的 $PATH 来解决这个问题,但我真的很想知道这种情况是如何产生的首先。我想让我的应用程序用户的安装说明尽可能简单,并且我不打算指导他们手动修改环境变量。

4

2 回答 2

0

这是我自己解决问题的方法。我切换到Dist::Zilla并为我的用户提供了以下安装说明:

Installation instructions
=========================

To install this program you need Dist::Zilla, which can be installed
by running the following command as root:

    cpan Dist::Zilla

After that, make sure you're in directory where this INSTALL file is,
and run the following command as root:

    dzil install
于 2014-07-13T19:04:09.997 回答
0

如果您使用的是 bash,则可以安装 local::lib 将类似的内容添加到您的 .bashrc 文件中

# adds $HOME/perl5/bin to PATH
[ $SHLVL -eq 1 ] && eval "$(perl -I$HOME/perl5/lib/perl5 -Mlocal::lib)"

那应该可以解决您的问题。问题在于您的本地系统的配置方式,因此请对其进行调整,而不是将 Dist::Zilla 加入不需要的组合中。

于 2014-07-14T19:09:22.367 回答