我该如何安装多个Perl版本?

18

我想从源代码安装Perl的版本5.005v5.6v5.8v5.10

目前我已经安装了'v5.10.0'。

/opt/perl/bin
/opt/perl/html
/opt/perl/lib
/opt/perl/man
/opt/perl/lib/5.10.0
/opt/perl/lib/site_perl
/opt/perl/lib/site_perl/5.10.0

如果我都安装在/opt/perl中,会出现问题吗?

还是应该将它们分别安装到其自己的特定版本目录中,例如/opt/perl-5.10.0/


2
你也应该看看这个链接:https://dev59.com/dnRC5IYBdhLWcg3wJNgN - innaM
2
现在处理多个Perl版本最简单的方法可能是使用perlbrew https://metacpan.org/module/perlbrew - mirod
6个回答

15

我将所有的Perl完全安装在它们自己的目录中,因此它们不与任何其他Perl共享任何内容。为了做到这一点,您只需要告诉Configure脚本安装所有内容的位置。我喜欢/usr/local/perls

 % ./Configure -des -Dprefix=/usr/local/perls/perl-5.x.y

当我为多个版本执行此操作时,我会得到一个包含单独安装的目录。

% ls -1 /usr/local/perls
perl-5.10.0
perl-5.10.1
perl-5.6.2
perl-5.8.8

它们都有自己的bin和lib目录:

% ls -1 /usr/local/perls/perl-5.10.0
bin
lib
man

大多数常见工具将根据不同的Perl版本来确定要执行的操作:

/usr/local/perls/perl-5.10.0/bin/perl /usr/local/bin/cpan

然而,你可以将你最想使用的perl放在路径的第一位。我只是创建了一个到/usr/local/bin/perl的符号链接,但你也可以添加目录到PATH里。

perlbrew 会为你做很多类似的事情,并将符号链接移动到其中一个默认的perl位置。不过,我没有使用它,因为它并没有使我的生活更容易。这取决于你自己来决定是否使用。


1
-1 :: 如果还提及如何在多个Perl安装中使用cpan,那将更有帮助。 - Ωmega
2
只需像调用不同的 perl 程序一样,在适当的 bin 目录中调用 cpan 脚本即可。 - brian d foy
这是我一直以来的管理方式。除了使用/opt/perl-5.16.0之外,还有一个别名/opt/perl/bin/perl-5.16.0指向/opt/perl-5.16.0/bin/perl,以及其他别名。 - Brad Gilbert
这个答案还正确吗?使用5.28版本时,我得到了“/usr/local/bin不可被您写入”的错误提示(使用的前缀是我有写入权限的,并且完全位于/usr/local/bin之外)。 - Oh My Goodness
@OhMyGoodness 或许你应该在 StackOverflow 上提出正式的问题。 - brian d foy
显示剩余3条评论

7
将它们分成版本特定的目录,然后将perl链接到您希望在该时间使用的版本。这就是安装多个JREs / JDKs的工作原理,因此似乎对Perl安装也有意义。

2
如果您正在使用CentOS/RHEL服务器,可以使用相对较新的软件集合系统来安装除“系统Perl”(在EL6上是古老的5.10,在EL5上是5.8)之外的其他版本的Perl。
有一组核心Perl 5.16软件包的公共存储库:

http://mirror.centos.org/centos/6/SCL/x86_64/

社区正在努力发布更大的 CPAN 子集作为可安装的软件包,并为其他版本的 Perl 发布集合。

2

您真的应该将不同版本安装到不同的目录中。

当我想尝试多个版本的软件包时,而我的Linux发行版没有这些软件包可用时,我使用stowxstow作为一个简陋的软件包管理器:

  • 创建一个目录/usr/local/stow
  • 将各个软件包安装到/usr/local/stow/$PACKAGE-$VERSION
  • 将“软件包”映射到/usr/localstow -d /usr/local/stow $PACKAGE-$VERSION
  • 停用“软件包”:stow -d /usr/local/stow -D $PACKAGE-$VERSION

stow通过创建和操作符号链接来完成其工作,并且能够检测冲突。


1
有关GNU Stow的更多信息,请访问Stow主页。我正在积极维护它。 - Adam Spiers

0

我们在工作中使用多个版本的Perl进行开发,而使用不同的目录是最好的方式。我们设置了一个小型的shell命令,可以修复符号链接和环境变量,以便您可以轻松地使用所需的perl。

如果您担心忘记正在使用哪个perl版本,您可以编写这样一个脚本,将版本号添加到您的shell提示符中。


0

虽然安装到不同的目录通常是更好的选择,但您可以使用配置开关-Dversiononly来使用单个目录并在所有路径名中包含版本三元组(除了man文件,您可能希望完全避免安装),例如给您一个perl5.10.0cpan5.10.0perldoc5.10.0等。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接