如何将PERLBREW_ROOT移动到另一个目录?

时间:2015-09-22 14:12:22

标签: perl perlbrew

我使用perlbrew来管理我的Perl环境。 当我第一次根据文档安装perlbrew时,它将所有内容安装到~/perl5/perlbrew,我现在认为这是不合需要的。

文档说明:

  

目录〜/ perl5 / perlbrew将包含所有安装perl可执行文件,库,文档,lib,site_libs。在文档中,该目录称为" perlbrew root"。如果您需要将其设置到其他位置,因为您的HOME配额有限,您可以通过在运行安装程序之前设置PERLBREW_ROOT环境变量来实现:

export PERLBREW_ROOT=/opt/perl5/perlbrew
curl -kL http://install.perlbrew.pl | bash

问题:如何将PERLBREW_ROOT目录移至/opt/perl5/perlbrew而不是~/perl5/perlbrew

1 个答案:

答案 0 :(得分:7)

不幸的是,你不能简单地移动已安装的Perl。对于初学者,添加到@INC的路径是硬编码的。我向您介绍了四种解决方案,其中我推荐第三种解决方案。

但首先,我建议使用/opt/perlbrew代替/opt/perl5/perlbrew,因为不需要额外的级别。下面的代码片段假设您遵循了此建议。

  1. 从头开始,重新安装您拥有的任何版本的perl

    Con:对于每个构建,您还必须重新安装构建已安装的所有模块。这意味着您需要重新测试所有应用程序。这非常耗时,而且没有风险。

  2. 移动perlbrew目录,但尝试修复安装。

    如果~/opt位于同一文件系统上,请按以下步骤移动安装:

    mv ~/perl5/perlbrew /opt/
    # Adjust file ownership and permissions as desired.
    

    如果~/opt位于不同的文件系统上,请按以下步骤移动安装:

    ( cd ~/perl5 ; tar c perlbrew ) | ( cd /opt ; tar x )
    # Adjust file ownership and permissions as desired.
    

    然后,编辑由以下内容打印的每个文件中的路径:

    for q in /opt/perlbrew/perls/* ; do
       "$q/bin/perl" -le'
          use Config;
          require "Config_heavy.pl";
          print $INC{"Config.pm"};
          print $INC{"Config_heavy.pl"};
       '
    done
    

    您还需要编辑许多脚本的shebang(#!)行。

    Con:很多工作(尽管不如第一个选项差不多),脆弱,并且不能保证工作。

  3. /opt/perlbrew中创建未来版本,但保留现有版本。

    perlbrew中安装/opt/perlbrew后,请运行以下命令:

    cd /opt/perlbrew/perls
    for q in ~/perl5/perlbrew/perls/* ; do
       ln -s "$q"
    done
    

    亲:超级简单快捷。随着时间的推移,您可以逐步淘汰~/perl5/perlbrew(通过删除不需要的构建,按照选项1替换它们,或按照选项2移动它们)。

    骗局:应该有权访问/opt/perlbrew的每个人都需要访问您的~/perl5/perlbrew

  4. 请勿更改PERLBREW_ROOT。只需将/opt/perlbrew设为符号链接。

    ln -s ~/perl5/perlbrew /opt/perlbrew
    

    亲:超级简单快捷。

    骗局:应该有权访问/opt/perlbrew的每个人都需要访问您的~/perl5/perlbrew