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

How can I move PERLBREW_ROOT to another directory?

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

文档指出:

The directory ~/perl5/perlbrew will contain all install perl executables, libraries, documentations, lib, site_libs. In the documentation, that directory is referred as "perlbrew root". If you need to set it to somewhere else because, say, your HOME has limited quota, you can do that by setting PERLBREW_ROOT environment variable before running the installer:

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

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

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

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

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

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

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

    移动安装如下:

    mv ~/perl5/perlbrew /opt/
    # 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 中创建未来的构建,但保留现有构建。

    /opt/perlbrew 中安装 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