9

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

4

1 回答 1

8

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

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

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

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

  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 ( ) 行。

    缺点:工作量很大(虽然不如第一个选项那么多),脆弱,并且不能保证工作。

  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.

于 2015-09-22T15:22:43.887 回答