perl库的位置

时间:2012-09-27 06:04:16

标签: perl installation gentoo

首先,我不熟悉Perl及其实践。

我正在尝试开发一个安装Perl应用程序的ebuild。但是我不知道将应用程序的库文件放在何处。

应用程序的目录结构是

binary
share/app/*.pl
share/app/icons/*.png

binary是Perl可执行文件。

在二进制文件中,我看到像require 'someLibrary.pl';这样的行,它们引用share/app/目录中的Perl库。我还注意到一条use lib "$BIN/share/app";行,告诉二进制文件我想在哪里找到其他库。

现在我遇到了如何安装应用程序的问题。

解决方案#1:/usr/bin/中安装二进制文件,在/usr/lib/perl5/中安装库。

问题:在哪里放图标?使用$Bin/share/app/icons/*.png在二进制文件和库中引用图标。我猜这不起作用。

解决方案#2:/usr/share/app/安装所有内容。

问题:二进制文件放在哪里?在/usr/bin/中创建符号链接到二进制文件?

解决方案#3:修补Perl文件,以便他们在/usr/share/app/icons中查找图标,将二进制文件放在/usr/bin/中,将库放在/usr/lib/perl5/中。< / p>

问题:我必须为文件创建补丁。这似乎不是一种好的/正常的方式。

当然,其他解决方案非常受欢迎。

更新:我已经尝试过解决方案#2,正如我怀疑的那样,当我执行/usr/bin/binary时,库路径变为/usr/bin/share/app。这当然会导致找不到库。

1 个答案:

答案 0 :(得分:0)

给定代码使用FindBin来定位应用程序数据目录。这使得解决方案2可以使用/usr/share/app/script.pl中的脚本。

如果脚本使用的是$RealBin而不是$Bin(由FindBin导出),您只需在/usr/bin中添加符号链接到真实脚本即可。但是注意到这对当前脚本不起作用。

备选方案1是编写一个小包装器并将其放在/ usr / bin中。这样的事情似乎对我有用:

#!/bin/sh
exec /usr/share/app/script.pl "$@"

备选方案2是修补脚本以使用$ RealBin。要么只是简单的搜索替换,要么只是替换

的最小补丁
use Findbin qw($Bin)

our $Bin;
use FindBin qw($RealBin);
BEGIN { $Bin = $RealBin; }

这两个补丁对你自己提出的解决方案3的修补程序要少得多。

我可能会推荐第一种选择。这个shoudl在大多数情况下工作,并且对于脚本和系统都是最不具侵入性的。